Avatar billede daft Nybegynder
16. december 2004 - 08:10 Der er 11 kommentarer og
1 løsning

Login vil kun acceptere tal og ikke bogstaver

Mit loginscript virker kun, hvis både brugernavn og password kun består af tal. Jeg har prøvet at skifte datatypen i tabellen, som tjekker brugeren, men uden det ønskede resultat (datatypen er ligenu 'varchar').
Kan man sætte en kommando ind i scriptet, som sørger for at både bogstaver og tal bliver accepteret i begge felter?
Mit login består af 3 scripts: security.php, login.php og loginform.php.

:-)
Avatar billede qub- Novice
16. december 2004 - 08:17 #1
kan vi se noget kode, så vi har noget at arbejde med...
Avatar billede daft Nybegynder
16. december 2004 - 08:20 #2
Selvfølgelig:
security.php:
<?php


    function securityUserActive() {
        if (securityGetProperty("password") != 0)
            return true;
        else
            return false;
    }
   
   
    function securityGetProperty($key) {
        global $HTTP_SESSION_VARS;
        global $security_properties;
        if (ini_get("register_globals") != 1)
            return $HTTP_SESSION_VARS["security_properties"][$key];
        else
            return $security_properties[$key];
    }


    function securityLogin($dbName, $password, $username) {
        global $HTTP_SESSION_VARS;
        global $security_properties;
   
        $loginOk = false;

        $sql = "SELECT * FROM bruger WHERE password = $password AND username=$username";
        $res = mysql_db_query($dbName, $sql) or die("Fejl ved login: Du har indtastet et forkert password eller brugernavn");
        if ($row = mysql_fetch_array($res)) {
            $security_properties = Array();
            $security_properties["password"] = $row["password"];
            $security_properties["username"] = $row["username"];

            $loginOk = true;
        }
        mysql_free_result($res);

        if ($loginOk) {
         
            if (ini_get("register_globals") != 1)
                $HTTP_SESSION_VARS["security_properties"] = $security_properties;
            return true;
        }

        return false;
    }


    function securityLogoff() {
        session_unregister("security_properties");
    }
?>
login.php:
<?php
  require_once("security1.php");

 
  $password = $HTTP_POST_VARS["password"];
  $username = $HTTP_POST_VARS["username"];

  $con = mysql_connect("localhost", "xxxx", "xxxx");
  $dbName = "xxxx";

  if (securityLogin($dbName, $password, $username)) {
    // Brugeren er logget ind
    header("Location: vetgross1.htm");
    exit;
  }
  else {
    // Brugeren er ikke logget ind
    header("Location: index.htm");
    exit;
  }
?>
Loginform.php:
<html>
<head>
<title>loginform</title>
<style type="text/css">
BODY {
    BACKGROUND-COLOR: #eefffa
}
</style>
</head>
<body text="#000000" link="#0000EE" vlink="#000000" alink="#3366FF">
<form method=post action=login.php target="_top">
Brugernavn:<input type=username name=username><br>
Password:      <input type=password name=password><br>
<input type=submit value=Login>
</form>
</body>
</html>

Vidste ikke hvor meget du skal bruge, så her er alle tre.

Daft
Avatar billede erikjacobsen Ekspert
16. december 2004 - 09:28 #3
$sql = "SELECT * FROM bruger WHERE password = '$password' AND username='$username'";
Avatar billede daft Nybegynder
16. december 2004 - 09:35 #4
Nu accepteres både tal og bogstaver, men hvis jeg indtaster et forkert brugernavn eller password (eller begge), får jeg ingen fejlmelding.

:-)
Avatar billede coderdk Praktikant
16. december 2004 - 09:37 #5
$res = mysql_db_query($dbName, $sql) or die("Fejl ved login: Du har indtastet et forkert password eller brugernavn");

laves om til:

$res = mysql_db_query($dbName, $sql);
if ( mysql_num_rows() == 0 )
{
  die("Fejl ved login: Du har indtastet et forkert password eller brugernavn");
}
Avatar billede daft Nybegynder
16. december 2004 - 09:41 #6
Nu får jeg en fejlmelding:
Warning: Wrong parameter count for mysql_num_rows() in D:\FPInetpub\vetgross\security1.php on line 30
Avatar billede erikjacobsen Ekspert
16. december 2004 - 09:44 #7
if ( mysql_num_rows($res) == 0 )
Avatar billede coderdk Praktikant
16. december 2004 - 09:44 #8
Ok, prøv med: if ( mysql_num_rows( $res ) == 0 )
Avatar billede daft Nybegynder
16. december 2004 - 09:48 #9
Mange tak nu virker det perfekt.
Smider I ikke lige begge et svar, så I kan få point.

:-) Daft
Avatar billede erikjacobsen Ekspert
16. december 2004 - 09:50 #10
Tak, jeg samler slet ikke på point.
Avatar billede coderdk Praktikant
16. december 2004 - 09:51 #11
Hep :)
Avatar billede daft Nybegynder
16. december 2004 - 09:53 #12
Okay, så får coderdk alle pointene.

God jul.
daft
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester