#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.php2. 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 и другим понять, что вы сделали и как устранить проблему?