2014-07-01 31 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