2014-07-01 65 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'); 

編輯當然,作爲有人在評論中提到你永遠不應該把你的密碼進入會話!

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

$admin = mysql_fetch_array($kullanici_sor); 
+0

儘管您提供的代碼更改應該修復,但如果它是唯一的問題,那麼您的答案就不是很明顯。你能否更新你的答案,包括一個實際的解釋,以幫助OP和其他人瞭解你所做的事情以及如何解決這個問題? – newfurniturey