2012-01-26 117 views
1

我在这里使用了一个登录脚本教程:http://www.astahost.com/info/tilltf-simple-login-script-simple-secure-login-script.html,当我计时登录时,有一个404。当我回去时,我登录了。我完全按照它的说法跟着教程。任何想法为什么它会去这个奇怪的页面?PHP登录脚本404错误

<?php 

session_start(); 
require_once 'database.php'; 
if (isset($_SESSION['user'])){ 

echo "Welcome ".$_SESSION['user']; 

?> 

<form name="logout" method="post" action="logout.php"> 

<input type="submit" name="logout" id="logout" value="Logout"> 

</form> 

<br /><form name="news" method="post" action="news.php"> 

<input type="submit" name="news" id="news" value="News"> 

</form> 

<?php 

} 

elseif(isset($_SESSION['admin'])){ 

echo"Welcome ".$_SESSION['admin']; 

echo"<br><br>You are logged in as an Admin"; 

?> 

<form name="logout" method="post" action="logout.php"> 

<input type="submit" name="logout" id="logout" value="Logout"> 

</form> 



</form> 

<?php 

}else{ 

?> 

<form name="login_form" method="post" action="login2.php"> 

<label> 

<input name="user" type="text" id="user">ID<br /> 

<input name="pass" type="password" id="pass">Password<br /> 

</label> 

<input type="submit" name="login" id="login" action="index.php" value="Login"> 

</label> 

</p> 

</form> 

<form name="Register" method="post" action="reg.php"> 

<input type="submit" name="register" id="register" value="Register"> 

</form><br /> 

<form name="news" method="post" action="news.php"> 

<input type="submit" name="news" id="news" value="News"> 

</form> 

<?php 

} 

?> 
+5

后。你的。码。 –

+0

我的投注:它做了一个post-redirect-get,并且最后一次调用header(“Location:someplace.php”)指向一个不存在的页面。 –

回答

1

你链接到代码扫视了一眼,我发现login2.php试图重定向到的index.php在某些情况下,但在其他情况下的index.php(小写I)。这两个地方应该是小写字母。这可能是你的404

0

根据您的服务器类型的原因,这可能会导致问题:

if(mysql_num_rows($queryN) == 1) { 

    $resultN = mysql_fetch_assoc($queryN);     

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

    header("location:Index.php");  

} 

特别是因为在Index.phpI是大写,而该文件的所有其他引用利用小写i

此外,此代码是可怕的格式...但唉,这是完全不同的问题。

1

该教程有一对夫妇的头部重定向:

header("location:Index.php"); 

header("location:index.php"); 

确保他们不应该是指向同一个文件,并确保该文件存在。它将您登录,然后尝试将您重定向到无法找到的文件。

0

查看您提供的链接中的代码,我看到一个可能的原因。在登录处理脚本的末尾,有一个拨打header()的电话,该电话重定向回索引页面。其中一人有不同的外壳,和许多Web服务器是区分大小写的默认:

header("location:index.php"); 
header("location:Index.php"); 

我猜小写index.php是正确的,所以相应地更新你的代码。

0

只是一个额外的警告:链接的例子有沿着这些路线的正确生成

$escaped_username = mysql_real_escape_string($username); 
# make a md5 password. 
$md5_password = md5($_POST['pass']); 
$queryN = mysql_query("select * from user where username = '".$username."' and password = '".$md5_password."' AND level='1'"); 

$escaped_username一个严重的安全漏洞,但SQL查询仍然使用$username。这将打开注入sql语句的可能性。一定要改变它。