我已经编写了一个登录脚本,我所说的"编写"是指我从论坛中复制和粘贴了一些代码,并通过反复尝试使其正常工作。
到目前为止,脚本运行良好,登录时根本没有问题,唯一的问题来自于当你试图在没有填写任何字段的情况下登录时,它会给我一些奇怪的错误,并将我重定向到一个带有的空白页面
对象移动
这份文件可以在这里找到
这不是一个大问题,因为我不明白为什么人们会尝试使用空白字段登录,但我想知道如何解决这一问题,以供将来参考。
以下是我代码的登录部分:
<?php
session_start();
$data=array("user1"=>array("url"=>"page1.php","password"=>"12345"),
"user2"=>array("url"=>"page2.php","password"=>"12345"),
"user3"=>array("url"=>"page3.php","password"=>"12345")
);
if(isset($_POST['username']) && isset($_POST['password'])) {
$user = strtolower($_POST['username']);
$pass = strtolower($_POST['password']);
if($data[$user]['password'] == $pass) {
$_SESSION['username'] = $user . " " . $pass;
header('Location: ' . $data[$user]['url']);
} else {
echo '<script type="text/javascript">window.onload = function() { document.getElementById("loginError").innerHTML = "' . "Invalid login details. Please try again." . '"; }</script>';
logIn();
}
} else {
logIn();
}
?>
确保或更改`header('Location:'.$data[$user]['url']);重定向时是绝对路径,而不是相对路径。请参阅相关帖子作为我在IIS7上回答PHP的证明-接收";对象已移动";html页面,而不是实际重定向。
要修复空白密码问题,请将检查更改为以下内容:
if(isset($_POST['username']) && !empty($_POST['username']) &&
isset($_POST['password']) && !empty($_POST['password']) ) {
//Do code here
}
else
{
logIn();
}
比较要使用===
或!==
:的字符串时
...
$user = strtolower(trim($_POST['username']));
$pass = strtolower(trim($_POST['password']));
if($user !== '' && $pass !== '') {
//continue with login logic
if($data[$user]['password'] === $pass) {
...
}
else{
//print error
}
我认为没有定义logIn()函数。。。。请查收。如果还没有,请发布你的html代码。
在尝试读取不存在的数组索引的密码和URL之前,您应该检查用户名是否存在于数组中。
session_start();
$data=array("user1"=>array("url"=>"page1.php","password"=>"12345"),
"user2"=>array("url"=>"page2.php","password"=>"12345"),
"user3"=>array("url"=>"page3.php","password"=>"12345")
);
if (!empty($_POST['username'] && !empty($_POST['password'])) {
$user = strtolower($_POST['username']);
$pass = strtolower($_POST['password']);
if (isset($data[$user]) && $data[user]['password'] == $pass) {
$_SESSION['username'] = $user . ' ' . $pass;
header("Location: " . $daa[$user]['url']);
} else {
echo '<script type="text/javascript">window.onload = function() { document.getElementById("loginError").innerHTML = "' . "Invalid login details. Please try again." . '"; }</script>';
logIn();
}
} else {
logIn();
}