Неправильно ведет себя форма входа PHP

#php #post #get

#php #Публикация #получить

Вопрос:

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

вот мой скрипт:

 session_start();

include("connect.php");

$kullanici = $_POST["user"];

$kullanici_sor = mysql_query("SELECT * FROM admin where isim = '{$user}'") or die (mysql_error)();

$admin = mysql_fetch_array($user_ask);

if($_POST["user"] == "" and $_POST["pass"] == "")
{
    echo "Cannot empty fields.Please tyr again!";
}else{
    if(isset($_POST["user"]))
    {
        if($_POST["user"]== $admin['name'] and ($_POST["pass"] == $admin['pass'])){
        $_SESSION["enter"] = true;
        $_SESSION["name"] =$_POST["user"];
        $_SESSION["pass"] =$_POST["pass"];
        header("Location: panel.php");
        exit();
    }else{
        echo"Wrong pass or username";
        header("refresh:2; url=index.php");
    }
}
  

Комментарии:

1.вы не проверяете, соответствует ли набор элементов isset() php.net/manual/es/function.isset.php

2. 1. Не используйте устаревшую функцию mysql_* . 2. Не сохраняйте пароль в сеансе! 3. Зачем сначала проверять, $_POST["user"] пусто ли, а после проверять, установлено ли оно?

Ответ №1:

Вероятно, вам следует изменить свою строку:

 $admin = mysql_fetch_array($user_ask);
  

Информация

 $admin = mysql_fetch_array($kullanici_sor);
  

Но ваш код уязвим для внедрения SQL. Вы должны использовать подготовленные инструкции через PDO, а не mysql. Вы также должны в начале своего кода (после <?php добавления:

 error_reporting(E_ALL);
ini_set('display_errors','1');
  

когда вы тестируете свой скрипт. В рабочей среде она должна быть установлена на:

 error_reporting(0);
ini_set('display_errors','0');
  

РЕДАКТИРОВАТЬ И, конечно, как кто-то упомянул в комментарии, вы никогда не должны вводить свой пароль в сеанс!

Ответ №2:

 $kullanici_sor = mysql_query("SELECT * FROM admin where isim = '{$user}'") or die (mysql_error)();

$admin = mysql_fetch_array($kullanici_sor);
  

Комментарии:

1. Хотя предоставленное вами изменение кода должно исправить, если это единственная проблема, это не очень заметно по вашему ответу. Не могли бы вы обновить свой ответ, включив в него фактическое объяснение, чтобы помочь OP и другим понять, что вы сделали и как устранить проблему?