2013-08-02 78 views
0

由于某些原因,我的登录页面中的输入似乎没有正确获取进程。正确的用户输入被返回为无效(错误的密码),我看不出任何特别明显的东西。但我只能假设用户名或密码由于某种原因未能通过。有人会有更多的经验能够看一看,并建议我怎么做才对。多谢你们。 P.S我的表格没问题,所以不包括在内。登录页面上的数据丢失?

function logcon($user, $password) 
{ 

    $user = mysqli_real_escape_string($this->conn, $user); 
    $esc_password = mysqli_real_escape_string($this->conn,$password); 
$sql = "SELECT * from USERS WHERE username ='{$user}' AND password='{$password}'"; 
$result = mysqli_query($this->conn, $sql); 


       $row = mysqli_fetch_array($result); 
      return $row; 
      } 

登录页面。

if(isset($_POST['submit'])){ 

$user=$_POST['user']; 
$password=$_POST['password']; 


//To ensure that none of the fields are blank when submitting the form if 
if(isset($_POST['user']) && isset($_POST['password'])) 
    {  


$user = stripslashes($user); 
$password = stripslashes($password); 
$db1=new dbmember(); 
$db1->openDB();   
$row=$db1->logcon($user, $password); 


if($row[0]==1) 
{ 
    session_start(); 
    $_SESSION['user'] = $user; 
    $_SESSION['password'] = $password; 
    $_SESSION['loggedin'] = "true"; 
    header("location:index.php"); 
} 
     else 
     { 
      print ('<div id="error">Acess denied, wrong username or password?</div>'); 
     } 
     } 
     else 
      { 
      print ('<div id="error">Enter something!</div>'); 
     } 

} 
+1

为什么你不使用你的[**其他账户**(http://stackoverflow.com/users/2633799/downvotemeeee)?我有点喜欢这个名字 –

+1

因为这里的仇敌在为LuLz低调。使用你的常识。 :) – user2646567

+0

手动转义?与mysqli?你真的应该使用占位符。 –

回答

0

看起来您在查询中使用了错误的变量名称。我还建议你考虑做一些散列和腌制你的密码,而不是将它们保存为纯文本。

$sql = "SELECT * from USERS WHERE username ='{$user}' AND password='{$password}'"; 

应该

$sql = "SELECT * from USERS WHERE username ='{$user}' AND password='{$esc_password}'"; 

而且你的条件检查似乎关闭,你正在检查,看看是否在结果第一场= 1,而不是看是否有回报。

if($row[0]==1) 

或许应该

if($row)