2011-11-05 458 views
-1

我正在为我的项目编写登录系统的脚本。我认为我在编码方面是正确的,但它给我带来了问题。问题是它不允许我登录并重定向到login.php页面。以下是代码;PHP登录脚本错误?

<?php 
include('./include/connection.php'); 
$tabName = "adminuser"; 
$userName = $_POST['userName']; 
$password = $_POST['password']; 
if(empty($userName)){ 
    header('location: login.php'); 
    exit; 
} 
$userName = stripslashes($userName); 
$password = stripslashes($password); 
$userName = mysql_real_escape_string($userName); 
$password = md5(mysql_real_escape_string($password)); 

$sqlQuery = "SELECT * FROM $tabName WHERE userName = '".$userName."' 
      AND password = '".$password."' LIMIT 1"; 
$sqlExe = mysql_query($sqlQuery); 

$count = mysql_num_rows($sqlExe); 

if($count > 0){ 
    header('location: index.php'); 
    $_SESSION['auth'] = 1; 
}else{ 
    echo "Wrong Username or Password <br />". 
    '<a href="login.php">Go back...</a>'; 
} 
?> 

这里是"index.php"页SEESION代码

<?php 
session_start(); 

if(!isset($_SESSION['auth']) or $_SESSION['auth'] != 1){ 
    header('location: login.php'); 
    exit; 
    } 
?> 

请纠正我,让我知道我错了。并且请告诉我,我的代码是否是sql注入安全的?

+2

这需要基本的逐步调试,而不是堆栈溢出问题。 –

+0

嗯,是的,这肯定会工作:'$ password = md5(mysql_real_escape_string($ password))''。复制/粘贴编程? – Jon

回答

0
if(empty($userName) ||){ 
    header('location: login.php'); 
    exit; 
} 

删除if语句中的或||

这应该是一个解析错误。我不确定它为什么重定向。

对于SQL注入,它已经讨论过多次看到:this

+0

正如我们都看到摩尔卡迪尔林蛙是一个闲人... – Peter

+0

正如pakka说,这需要基本的分步调试,而不是堆栈溢出问题。 – Peter

0

,在跳出我的第一件事情是,你必须退出header()。 例如:

header('Location: login.php'); 
exit; 

,并把该$_SESSION['auth'] = 1语句之后。

0
    • ' “是$ var。”' 尝试改变它 '是$ var。'在查询
    • 尝试设置会话的头之前..

我不是大师或什么,但我知道PHP有时小微不足道的事情

失败