<?php
if(isset($_GET['action'])){
switch ($_GET['action']) {
case 'login':
include 'header.php';
if($_SERVER['REQUEST_METHOD'] == "post"){
if(!empty($_POST['password']) && $_SERVER['REMOTE_ADDR'] == "My IP Adress" && $_POST['password'] == "Password"){
$_SESSION['AlphenWeerNladmin'] = 1;
echo 'Logged in!';
}
else
{
echo 'Wrong password or IP adress';
}
}
else
{
?>
<form action="admin.php?action=login" method="post">
<input type="password" name="password">
<input type="submit" value="submit">
</form>
<?php
}
include 'footer.php';
break;
case 'logout':
include 'header.php';
$_SESSION['AlphenWeerNladmin'] = 0;
echo 'Logged out!';
include 'footer.php';
break;
default:
header('Location: 404.php');
break;
}
}
else
{
header('Location: 404.php');
}
?>
当我去admin.php?action = login并且我尝试登录时,我会再次发送到表单?
请帮忙!
问候
答案 0 :(得分:1)
由于您确定登录的唯一条件是否给定了操作:
if($_SERVER['REQUEST_METHOD'] == "post")
然后你必须得出结论,这个条件没有得到满足。您可能会忽略一个区分大小写的情况? $_SERVER['REQUEST_METHOD']
的实际价值是多少?
答案 1 :(得分:1)
if($_SERVER['REQUEST_METHOD'] == "post"){
PHP的字符串比较区分大小写,REQUEST_METHOD是全大写:'POST'或'GET',从不'post'或'get'。
答案 2 :(得分:0)
问题出在这一行:
if($_SERVER['REQUEST_METHOD'] == "post"){
你也发布了GET变量,所以请求方法就我所知是GET而且这句话永远不会等同于真。
答案 3 :(得分:0)
使用php内置函数strcmp()
来比较字符串
答案 4 :(得分:0)
也许您的IP地址不符合您的期望?您是否连接到远程服务器但使用本地IP或其他?如果删除该条件会发生什么?
答案 5 :(得分:0)
我找到了自己的答案:我需要使用大写字母,如下:
if($_SERVER['REQUEST_METHOD'] == "POST")
问候