sql >> Databasteknik >  >> RDS >> Mysql

PHP mySQL kontrollera om användarnamn och lösenord finns i databasen

Du kan använda mysql_num_rows() och kombinera din fråga - Se fotnoter

if(isset($_POST["name"], $_POST["password"])) 
    {     

        $name = $_POST["name"]; 
        $password = $_POST["password"]; 

        $result1 = mysql_query("SELECT username, password FROM Users WHERE username = '".$name."' AND  password = '".$password."'");

        if(mysql_num_rows($result1) > 0 )
        { 
            $_SESSION["logged_in"] = true; 
            $_SESSION["naam"] = $name; 
        }
        else
        {
            echo 'The username or password are incorrect!';
        }
}

För att göra din nuvarande kod lite säkrare, använd:

$name = stripslashes($_POST["name"]); 
$name = mysql_real_escape_string($_POST["name"]);

$password = stripslashes$_POST["password"]); 
$password = mysql_real_escape_string($_POST["password"]); 

men titta på länkarna nedan om hur du använder förberedda uttalanden och hashning av lösenord.

Fotnoter:

Din nuvarande kod är öppen för SQL-injektion . Använd förberedda uttalanden , eller PDO med förberedda uttalanden . Besök dessa länkar för mer information.

Jag märkte att du kanske lagrar lösenord i vanlig text. Om så är fallet är det starkt avskräckt.

Om du är och det här är en LIVE-webbplats kommer du så småningom att bli hackad.

Jag rekommenderar att du använder CRYPT_BLOWFISH eller PHP 5.5:s password_hash() fungera. För PHP <5.5 använd password_hash() compatibility pack .

mysql_* meddelande om utfasning av funktioner:

http://www.php.net/manual/en/intro.mysql .php

Detta tillägg är utfasat från och med PHP 5.5.0 och rekommenderas inte för att skriva ny kod eftersom det kommer att tas bort i framtiden. Istället, antingen mysqli eller PDO_MySQL förlängning ska användas. Se även MySQL API-översikt för ytterligare hjälp när du väljer ett MySQL API.

Dessa funktioner låter dig komma åt MySQL-databasservrar. Mer information om MySQL finns på » http://www.mysql.com/ .

Dokumentation för MySQL finns på » http://dev.mysql.com/doc/ .

Redigera: för att hjälpa OP (titta på länkarna jag har tillhandahållit angående lösenordshasning).

Prova att byta ut

        if(mysql_num_rows($result1) > 0 )
        { 
            $_SESSION["logged_in"] = true; 
            $_SESSION["naam"] = $name; 
        }
        else
        {
            echo 'The username or password are incorrect!';
        }

med:

while($row=mysql_fetch_assoc($result1))
{
$check_username=$row['username'];
$check_password=$row['password'];
}

if($username == $check_username && $password == $check_password){
echo "Matches.";
}

else{
echo "No match found.";
}


  1. Fil vs databas för lagringseffektivitet i chattappen

  2. Vilken är den minimala installationen som krävs för att distribuera en .NET-applikation med Oracle-klient 11?

  3. EXPLAIN och COUNT returnerar två olika värden

  4. MySQL Fråga om schemaläggning