Mysql
 sql >> Baza danych >  >> RDS >> Mysql

PHP mySQL sprawdza, czy nazwa użytkownika i hasło są w bazie danych

Możesz użyć mysql_num_rows() i połącz swoje zapytanie — Zobacz przypisy

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

Aby uczynić swój obecny kod nieco bezpieczniejszym, użyj:

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

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

ale spójrz na poniższe linki dotyczące używania przygotowanych wyciągów i hashowania haseł.

Przypisy:

Twój obecny kod jest otwarty na wstrzyknięcie SQL . Użyj przygotowanych wyciągów lub PDO z przygotowanymi oświadczeniami . Odwiedź te linki, aby uzyskać więcej informacji.

Zauważyłem, że możesz przechowywać hasła w postaci zwykłego tekstu. Jeśli tak jest, jest to wysoce odradzane.

Jeśli tak, a to jest strona NA ŻYWO, w końcu zostaniesz zhakowany.

Polecam użycie CRYPT_BLOWFISH lub PHP 5.5 password_hash() funkcjonować. Dla PHP <5.5 użyj password_hash() compatibility pack .

mysql_* powiadomienie o wycofaniu funkcji:

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

To rozszerzenie jest przestarzałe od PHP 5.5.0 i nie jest zalecane do pisania nowego kodu, ponieważ zostanie usunięte w przyszłości. Zamiast tego albo mysqli lub PDO_MySQL należy użyć rozszerzenia. Zobacz także Omówienie interfejsu API MySQL aby uzyskać dalszą pomoc przy wyborze API MySQL.

Te funkcje umożliwiają dostęp do serwerów baz danych MySQL. Więcej informacji o MySQL można znaleźć na » http://www.mysql.com/ .

Dokumentację MySQL można znaleźć pod adresem » http://dev.mysql.com/doc/ .

Edytuj: aby pomóc OP (spójrz na podane przeze mnie linki dotyczące haszowania haseł).

Spróbuj wymienić

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

z:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL zaznacza wszystkie wiersze od ostatniego miesiąca do (now() - 1 miesiąc), w celach porównawczych

  2. 'IF' w instrukcji 'SELECT' - wybierz wartość wyjściową na podstawie wartości kolumn

  3. Klucz obcy MySQL, aby umożliwić NULL?

  4. Jak sprawdzić, z której tabeli pochodzi wynik, gdy używasz UNION w MySQL?

  5. DOPASUJ PRZECIW z wieloma kolumnami w MySQL