PHP登录脚本404错误

时间:2012-01-26 19:56:38

标签: php login http-status-code-404

我在这里使用了一个登录脚本教程:http://www.astahost.com/info/tilltf-simple-login-script-simple-secure-login-script.html当我登录时,有一个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 :(得分:1)

看了你链接的代码,我注意到login2.php尝试在某些情况下重定向到Index.php,但在其他情况下尝试重定向到index.php(小写i)。它在两个地方都应该是小写的。这可能是你404的原因。

答案 1 :(得分:1)

该教程有两个标题重定向:

header("location:Index.php");

header("location:index.php");

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

答案 2 :(得分:0)

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

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

    $resultN = mysql_fetch_assoc($queryN);                   

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

    header("location:Index.php");    

}

特别是因为I中的Index.php大写,而对该文件的所有其他引用都使用小写i

此外,这段代码是TERRIBLY格式的......但是这完全是一个不同的问题。

答案 3 :(得分:0)

查看您提供的链接上的代码,我看到了可能的原因。在登录处理脚本结束时,会调用header(),并将其重定向回索引页面。其中一个具有不同的外壳,默认情况下,许多Web服务器区分大小写:

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

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

答案 4 :(得分: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语句的可能性。一定要改变它。