sql >> Database >  >> RDS >> Mysql

PHP mySQL controleer of gebruikersnaam en wachtwoord in de database staan

U kunt mysql_num_rows() . gebruiken en combineer uw zoekopdracht - Zie voetnoten

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!';
        }
}

Om uw huidige code een beetje veiliger te maken, gebruikt u:

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

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

maar bekijk de onderstaande links over het gebruik van voorbereide verklaringen en het hashen van wachtwoorden.

Voetnoten:

Uw huidige code staat open voor SQL-injectie . Gebruik voorbereide verklaringen , of BOB met voorbereide verklaringen . Bezoek deze links voor meer informatie.

Ik heb gemerkt dat u wachtwoorden in platte tekst opslaat. Als dit het geval is, wordt dit ten zeerste afgeraden.

Als u dat bent en dit is een LIVE-site, wordt u uiteindelijk gehackt.

Ik raad je aan om CRYPT_BLOWFISH te gebruiken of PHP 5.5's password_hash() functie. Gebruik voor PHP <5.5 het password_hash() compatibility pack .

mysql_* kennisgeving van beëindiging van functies:

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

Deze extensie is verouderd vanaf PHP 5.5.0 en wordt niet aanbevolen voor het schrijven van nieuwe code, aangezien deze in de toekomst zal worden verwijderd. In plaats daarvan, ofwel de mysqli of PDO_MySQL extensie moet worden gebruikt. Zie ook de MySQL API-overzicht voor meer hulp bij het kiezen van een MySQL API.

Met deze functies hebt u toegang tot MySQL-databaseservers. Meer informatie over MySQL is te vinden op » http://www.mysql.com/ .

Documentatie voor MySQL is te vinden op » http://dev.mysql.com/doc/ .

Bewerken: om OP te helpen (kijk in de links die ik heb gegeven met betrekking tot het hashen van wachtwoorden).

Probeer te vervangen

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

met:

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. Krijg het aantal mislukte aanmeldingspogingen voor een aanmelding vanwege een verkeerd wachtwoord in SQL Server (T-SQL)

  2. Vraag over SQL unieke varchar hoofdlettergevoeligheid

  3. Sorteren op een kolom en ook op rand() in MySQL

  4. MySQL - Maak een bestaand veld uniek