Php Html表单似乎提交到了错误的位置?
最近,由于没有“明显”的原因,我的登录表单开始重定向到我网站的404页面,我在任何地方都看不到原因Php Html表单似乎提交到了错误的位置?,php,html,Php,Html,最近,由于没有“明显”的原因,我的登录表单开始重定向到我网站的404页面,我在任何地方都看不到原因 <?php echo '<form action="http://' . $_SERVER['SERVER_NAME'] . '/login" method="post">'; ?> <li><input type="text" name="username" placeholder="Username"></li> <li&
<?php echo '<form action="http://' . $_SERVER['SERVER_NAME'] . '/login" method="post">'; ?>
<li><input type="text" name="username" placeholder="Username"></li>
<li><input type="password" name="password" placeholder="Password"></li>
<li><input type="submit" value="Login"></li>
</form>
身份验证代码:
<?php
if(empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if(empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password.';
} else if (user_exists($username) === false) {
$errors[] = 'We can\'t find that username. Have you registered?';
} else if (user_active($username) === false) {
$errors[] = 'You haven\'t activated your account!';
} else if(strlen($password) > 32 ) {
$errors[] = 'Password to long.';
}
$login = login($username, $password);
if($login === false){
$errors[] = 'That username/password combination is incorrect.';
}else{
$_SESSION['user_id'] = $login;
header('Location: ' . $_SERVER['SERVER_NAME'] . '/?msg=1');
exit();
}
}
if(empty($errors)===false){
?>
<h1>We tried to log you in, but....</h1>
<?php
print_r($errors);
} ?>
我们试图让你登录,但是。。。。
您是否可以省去$\u服务器[]
数组,使用静态url进行调试?
比如:
如果它给您一个404错误,那么它必须来自此或您的.htaccess
以这种方式调试它并让我们知道。原因可能很多。以下是一些疑难解答提示:
<?php echo '<form action="http://' . $_SERVER['SERVER_NAME'] . '/login" method="post">'; ?>
显然,填写到表单操作中的url有问题:
login
。它是一个页面,还是一个目录,或者你有重写吗?url是否应该指向login.php或login.html,而不仅仅是login操作中看到了什么?它是合法的url吗?如果将url复制/粘贴到浏览器中,会得到什么
/login
?不应该像这样依赖服务器变量,既然您要访问同一个url,为什么不消除复杂性,只使用/login
作为操作您最近是否修改了.htaccess文件中的任何重写规则?请更具体一些!当页面显示时,您是否也可以写入源代码中显示的结果?您可能应该使用HTTP_主机而不是服务器_名称。看到这个@Oldskool No,虽然我已经编辑它来显示我的.htaccess也是我,或者可以提交一个值而不启动名称
name=“submit”
提交没有做任何事情,但是当我尝试使用您的服务器时,它只是提交所有内容来显示登录验证代码,这可能是问题所在。你说这一定是一个.htaccess错误,但当我更改404页面时,它会转到更新后的404页面,因此在某个地方必须有重定向?404页面的url是什么样的?我在web根目录上创建了login.php,带有身份验证代码,并将表单提交到那里,我仍然被重定向到404。1。实际页面位于名为pages的目录中,但该文件名为login.html,这也与4.m相关联,因为当您转到/login时,.htaccess将其重写为index.php?page=login,然后依次包括登录页面以及页眉和页脚。将操作更改为just/login仍然具有与转到404页面相同的效果。在浏览器中,它是一个合法的url,指向同一页面。
<form method="POST" action="url.php">
<li><input type="text" name="username" placeholder="Username"></li>
<li><input type="password" name="password" placeholder="Password"></li>
<li><input type="submit" value="Login" name="submit"></li>
</form>
header('Location: url.php?msg=1');
<?php echo '<form action="http://' . $_SERVER['SERVER_NAME'] . '/login" method="post">'; ?>