我在这里使用了一个登录脚本教程: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
}
?>
答案 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语句的可能性。一定要改变它。