2014-07-01 4 views
2

В моем скрипте входа в 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"); 
    } 
} 
+0

Вы не проверяете, есть ли набор элементов 'isset()' http://php.net/manual/es/func tion.isset.php – Fallenreaper

+0

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

ответ

2

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

$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'); 

EDIT И конечно же, как кто-то упомянул в комментарии, вы никогда не должны вводить свой пароль!!

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

$admin = mysql_fetch_array($kullanici_sor); 
+0

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

Смежные вопросы