Avatar billede MarkA Praktikant
05. februar 2009 - 21:54 Der er 4 kommentarer og
1 løsning

Hjælp til login problem

Jeg er ved at lave en login side og kan ikke få det til at virke. Jeg tror problemet ligger omkring:

if($checkUsername == $this->userName and $checkPassword == $this->userPassWord ) {
            $_SESSION['username'] = $chechUsername;
                echo $_SESSION['username'];
       
        } else {
                echo "Du kunne ikke logges ind";
        }


men jeg er ikke sikker... kan i hjælpe.

Jeg har selvfølgelig en form hvor jeg indtaster brugernavn og adgangskode og jeg får både output fra $_POST og fra databasen når jeg kører et print af dem


<?
session_start();

class User {
   
    var $dbHost,
        $dbUser,
        $dbName,
        $dbPass,
        $dbUserTable,
       
        $userID,
        $userName,
        $userPassword;
       
   
    function User() {
        $this->dbHost = 'localhost';
        $this->dbUser = 'root';
        $this->dbName = 'besusers';
        $this->dbPass = '';
        $this->dbUserTable = 'users';
        $this->userName = $_POST['userName'];
        $this->userPassword = $_POST['userPassword'];
    }

    function login() {
        $dbLink = mysql_connect($this->dbHost, $this->dbUser, $this->dbPass);
        if(!$dbLink) die("Kunne ikke forbinde til databasen" . mysql_error());
       
        mysql_select_db($this->dbName);
       
       
        $query = "select * from $this->dbUserTable where Username = '$this->userName'";
        $result = mysql_query($query);
        if(!$result) die("Der er noget galt med kaldet" . mysql_error());
       
        while ($row = mysql_fetch_array($result)) {
                $checkUsername = $row['Username'];
                $checkPassword = $row['Password'];
        }
        echo $this->userName . " Tjekker POST[username]<br>";
        echo $this->userPassword  . " Tjekker POST[password]<br><br>";
        echo $checkUsername . " Tjekker Username fra databasen<br>";
        echo $checkPassword . " Tjekker Username fra databasen" . "<br><br>";
       
         
        if($checkUsername == $this->userName and $checkPassword == $this->userPassWord ) {
            $_SESSION['username'] = $chechUsername;
                echo $_SESSION['username'];
       
        } else {
                echo "Du kunne ikke logges ind";
        }
       
    }
   
}

$checkUser = new User;

if($_POST['submit']) {
        $checkUser->login();
}
Avatar billede psychopixi Nybegynder
06. februar 2009 - 06:16 #1
Du har ret. Fejlen ligger i:
if($checkUsername == $this->userName and $checkPassword == $this->userPassWord ) {
            $_SESSION['username'] = $chechUsername;
                echo $_SESSION['username'];
     
        }

Du har stavet $this->userPassWord og $chechUsername forkert.
Genne hele resten af koden har du brugt $this->userPassword. Så din if-sætning bliver noget i retningen af dette:
if($checkUsername == $this->userName and $checkPassword == $this->userPassword ) {
            $_SESSION['username'] = $checkUsername;
                echo $_SESSION['username'];
     
        } else {
                echo "Du kunne ikke logges ind";
        }


Det virker hos mig.
Avatar billede MarkA Praktikant
06. februar 2009 - 20:47 #2
Jeg takker og bukker rigtig mange gange. Smider du ikke et svar så jeg kan tildele dig nogle point
Avatar billede psychopixi Nybegynder
06. februar 2009 - 20:54 #3
OK:)

Super at jeg kunne være til assistance:)

Og lige en note: For øget sikkerhed ville det være en rigtig god ide hvis du hashede dine passwords. Og i øvrigt en god ide at validere alle inputs der bruges i database queries eller som minimum bruge 'mysql_real_escape_string'.
Avatar billede MarkA Praktikant
07. februar 2009 - 00:44 #4
Jeg plejer at brue md5() til mine passwords, men er bare ved at  prøve en form for OOP i php... Men hvorfor bruge mysql_escape_string eller hvad gør det bedre???
Avatar billede psychopixi Nybegynder
07. februar 2009 - 00:48 #5
md5() er bevist at være meget sårbar overfor kollisioner. Jeg foreslår at bruge en SHA hash istedet.

mysql_real_escape_string sikrer dig mod mysql injection attacks.
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