Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP mySQL проверява дали потребителското име и паролата са в базата данни

Можете да използвате mysql_num_rows() и комбинирайте заявката си - Вижте бележките под линия

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

За да направите сегашния си код малко по-сигурен, използвайте:

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

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

но вижте връзките по-долу относно използването на подготвени оператори и хеширане на пароли.

Бележки под линия:

Настоящият ви код е отворен за SQL инжекция . Използвайте подготвени отчети , или PDO с подготвени изявления . Посетете тези връзки за повече информация.

Забелязах, че може да съхранявате пароли в обикновен текст. Ако случаят е такъв, това е силно обезкуражено.

Ако сте и това е сайт НА ЖИВО, в крайна сметка ще бъдете хакнат.

Препоръчах ви да използвате CRYPT_BLOWFISH или password_hash() на PHP 5.5 функция. За PHP <5.5 използвайте password_hash() compatibility pack .

mysql_* Известие за оттегляне на функции:

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

Това разширение е остаряло от PHP 5.5.0 и не се препоръчва за писане на нов код, тъй като ще бъде премахнато в бъдеще. Вместо това или mysqli или PDO_MySQL трябва да се използва разширение. Вижте също Преглед на MySQL API за допълнителна помощ при избора на MySQL API.

Тези функции ви позволяват да получите достъп до сървърите на базата данни MySQL. Повече информация за MySQL можете да намерите на » http://www.mysql.com/ .

Документация за MySQL може да бъде намерена на » http://dev.mysql.com/doc/ .

Редактиране: за да помогнете на OP (разгледайте връзките, които предоставих относно хеширането на пароли).

Опитайте да замените

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

с:

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 AND OR заявки в Codeigniter

  2. Не е намерен доставчик на Entity Framework за доставчик на ADO.NET „MySql.Data.MySqlClient“

  3. Symfony3 как да съхранява потребителски роли в базата данни

  4. Как да разделя изхода от mysqldump на по-малки файлове?

  5. Как да генерирам автоматично миграции със Sequelize CLI от модели на Sequelize?