Как сделать скрипт безопасного входа

Я пытаюсь сделать скрипт входа в систему безопасным, чтобы предотвратить взлом моего сайта. Я пытаюсь использовать mysql_real_escape_string в моем скрипте, может кто-нибудь направить меня, если я ошибаюсь в этом.

Вот мой код

    <?php
session_start();
include("lib/conn.php");

?>
<?php
$email=$_POST['user'];
$password=$_POST['password'];

if ($email && $password){

$query = "SELECT * FROM register WHERE email = '$email' AND password= '$password' and status = '1'";

mysql_real_escape_string($email);
mysql_real_escape_string($password);

$result = mysql_query( $query ) or die ("didn't query");
$num = mysql_num_rows( $result );
if ($num == 1){

$_SESSION['ocer']=$email;header("Location: admin.php");}
else {header("Location: index.php?l=1");}
}

?>

-2

Решение

Прежде всего. Используйте PDO с параметром bind. Тогда вам не нужно беспокоиться об уколах.

mysql_real_escape_string возвращает экранированную строку и должна использоваться перед построением вашего запроса. Используйте как так:

$password = mysql_real_escape_string($password);

Также. Дон не получить по паролю и электронной почте. восстановить пароль по электронной почте и подтвердить, что там же.

Надеюсь, поможет

Вот пример:

session_start();
include("lib/conn.php");

//using isset to avoid warnings.
$email = isset($_POST['user']) ? $_POST['user'] : null;
$password = isset($_POST['password']) ? $_POST['password'] : null;

//check if values are not null
if ($email !== null && $password !== null){

//escape email
$email = mysql_real_escape_string($email);

//retrieve password by email and limit 1 result
$query = "SELECT password FROM register WHERE email = '{$email}' and                         status = '1' LIMIT 1";

//run query
$result = mysql_query( $query ) or die ("didn't query");

//validate if query run correctly
if (!$result) {
echo 'Could not run query: ' . mysql_error();
exit;
}

//fetch row
$row = mysql_fetch_row($result);

//validate result
if ($row['password'] == $password){
$_SESSION['ocer']=$email;
header("Location: admin.php");
} else {
header("Location: index.php?l=1");
}
}
0

Другие решения

1.- Не используйте MySQL * функции потому что устарели, используйте mysqli_ * функции или PDO

2.- Вы должны использовать подготовленные заявления, это пример использования mysqli_ * функции:

<?php
$email=$_POST['user'];
$password=$_POST['password'];

if ($email && $password){

$query = "SELECT email, password
FROM register
WHERE email = ?
AND password= ?
AND status = '1'";

$stmt = mysqli_prepare($link, $sql);

mysqli_stmt_bind_param($stmt, 'ss', $email, $password);

mysqli_stmt_execute($stmt);

mysqli_stmt_bind_result($stmt, $column1, $column2);

while (mysqli_stmt_fetch($stmt)) {
echo "Column1: {$column1}, Column2: {$column2}";
}

?>
2

По вопросам рекламы [email protected]