我已经在我的机器上本地测试了以下脚本,一切都按照我想要的方式完美运行。但是,当我将文件上传到我的服务器1and1时,当我点击“提交”按钮时,在登录脚本中,它只会停留在登录屏幕上。
我也不确定,但是这个问题不是会话,而是使用我的标题函数。
<?php
session_start();
require ("login.php");
include ("header.php");
include ("subnav.php");
if ((isset($_SESSION['user'])) && (isset($_SESSION['admin'])))
header('Location: admin/index.php' );
if ((isset($_SESSION['user'])) && (!isset($_SESSION['admin'])))
header('Location: customer/index.php' );
if ((isset($_GET['logout'])) == 1) {
session_destroy();
header('Location: index.php');
}
if (isset($_POST['submit']))
if($_POST['username'] == 'jay') {
$_SESSION['user'] = 'jay';
$_SESSION['admin'] = 1;
header('Location: admin/index.php' );
}
else if ($_POST['username'] == 'william'){
$_SESSION['user'] = 'william';
header('Location: customer/index.php' );
}
else {
header('Location: http://www.google.com' );
}
?>
<h2>System Log-In</h2>
<form action="" method="post">
<ul id="login">
<li>
Username: <br>
<input type="text" name="username"></li>
<li>
Password: <br>
<input type="password" name="password">
</li>
<li>
<input type="submit" value="Log-In" name ="submit" id="submit">
</li>
<li>
<br><a href=#>Register Here.</a>
</li>
<li>
If you are having problems with the log-in process, please send us an <a href="mailto:here@here.us">e-mail</a>.
</li>
</ul>
</form>
<?php
include ("footer.php");
?>
答案 0 :(得分:1)
在代码中放置花括号以正确完成代码块:
if( isset( $_POST['submit'] ) )
通常,最好始终对所有if语句使用花括号,即使它们是一行。这有助于防止这样的混淆问题。
答案 1 :(得分:0)
它可能会有所帮助,也可能没有帮助,但您应该按顺序完成一些事情:
使用Location:
标头时,您应始终使用die()
终止脚本。否则,脚本的其余部分将继续运行:header('Location: ...'); die;
还与Location:
标题相关,你真的应该在路径前面放一个正斜杠。例如。 Location: /index.php
。
我希望代码是用于练习的。仅根据POST变量的值给予用户管理员状态并不十分安全。