代码工作一次,但随后不会再次加载customer_login.php页面。当我第二次尝试时,它会给出HTTp 404未找到错误。 在它工作和出现错误之间,我没有改变任何东西。
<?php
session_start();
if(isset($_SESSION["manager"]))
{
header("location: ./admin/website/".$websitelocation."/index.html");
exit();
}
?>
<?php
if(isset($_POST["username"])&&isset($_POST["password"]))
{
$manager = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["username"]);
$password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]);
include "./scripts/connect_to_mysql.php";
$sql = mysql_query("SELECT UsersID, Active, Website_Location FROM users WHERE User_Name='$manager' AND Password='$password' LIMIT 1") or die(mysql_error());
$existCount = mysql_num_rows($sql);
echo $existCount;
if ($existCount == 1)
{
while($row = mysql_fetch_array($sql))
{
$id = $row["UsersID"];
$active = $row["Active"];
$websitelocation = $row["Website_Location"];
}
if($active == 'Yes')
{
$_SESSION["id"] = $id;
$_SESSION["manager"] = $manager;
$_SESSION["password"] = $password;
header("location: ./admin/website/".$websitelocation."/index.html");
exit();
}
else
{
echo "<script type='text/javascript'>alert('You are not authorized to login!!!!');</script> ";
echo "click here to go back to <a href='admin_login.php'>login page</a>. <br><br>";
echo "click here to go to <a href='../customer_login.php'>customer login</a>. <br><br>";
echo "click here to go to <a href='../index.php'>JE Designs LLC main page</a>. <br><br>";
exit();
}
}
else
{
echo "<script type='text/javascript'>alert('The information you have entered is not correct, please try again.');</script> ";
echo "<a href='"javascript:history.go(-1)'">Go back to login page.</a>";
exit();
}
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>User Login</title>
</head>
<body>
<div align="center" id="mainWrapper">
<?php include_once("template_header.php");?>
<div id="pageContent"><br />
<div align="left" style="margin-left:24px;">
<h2>Log in to view website.</h2>
<form id="form1" name="form1" method="post" action="
<?php
if(isset($_POST["username"])&&isset($_POST["password"]))
{
echo "./admin/website/".$websitelocation."/index.html";
}
else
{
echo "customer_login.php";
}
?> " >
User Name:<br />
<input name="username" type="text" id="username" size="40" />
<br /><br />
Password:<br />
<input name="password" type="password" id="password" size="40" />
<br />
<br />
<br />
<input type="submit" name="button" id="button" value="Log In" />
</form>
<p> </p>
</div>
<br />
<br />
<br />
</div>
<?php include_once("template_footer.php");?>
</div>
</body>
</html>
当您已经登录时,您重定向到 ./admin/website/$websitelocation/index.html
。但是$websitelocation
变量从何而来?如果在登录脚本中设置此变量,则无济于事!因此,您将被重定向到./admin/website//index.html
,这将为您提供404。
顺便说一句:不要使用相对重定向,最佳做法是在Location
标头中包含主机名,因为这得到了更广泛的支持。
我的猜测是,第二次加载页面时,设置了$_SESSION["manager"]
,然后重定向到的URL是错误的,因此给出了404。
我的第二个猜测是,当您尝试进行重定向时,$websitelocation
没有定义。如果希望它与manager
会话变量一样长,请将其存储在 $_SESSION['websitelocation']
或类似变量中。
使用目录的常量创建一个包含文件,然后将其包含在脚本中。 这应该为您省去一直正确定义目录的麻烦 http://php.net/manual/en/language.constants.predefined.php