0

我正在创建一个网站,要求用户输入用户名和密码才能访问该网站。一切都很完美。如果输入正确的密码和用户名,则授予访问权限。如果不是,它会将用户重定向到相同的登录表单页面。但是,我面临的问题是 php 中的以下代码:

 if (!$_POST['username'] | !$_POST['pw'] ) {

        die("At least one box was left empty");

    }

这段代码检查用户是否将 2 个输入框中的任何一个留空。它会杀死网站并输出想要的句子。但是,我想做的是将用户重定向到登录表单页面。有什么帮助吗?谢谢各位

4

6 回答 6

1

错误的:

   if (!$_POST['username'] | !$_POST['pw'] ) {

您的示例中的语法错误,您需要添加一个符号以使其正确:

正确的:

   if (!$_POST['username'] || !$_POST['pw'] ) {
                            ^
于 2012-06-05T16:03:51.450 回答
1

你甚至没有尝试重定向。

使用header("Location: login.php");(无论您的登录页面的位置是什么,如果不是login.php),那么exit.

于 2012-06-05T16:02:35.260 回答
0

有两种可能:

  • 使用 header() 函数:header('Location: login.php');
  • Echo/ 打印一个 java-script 标签:echo "<script language="javascript">window.location.href='login.php';</script>

header()只有在调用它之前不输出一些文本时,才能使用 -function 。

于 2012-06-05T16:04:32.693 回答
0

您可以使用标题功能!

<?php
if(empty($_POST['username']) OR empty($_POST['pw']))
{
    header('Location: pathtoyourloginpage.php');
}

else
{
    echo "OK";
}
?>

empty检查 $_POST['username'] 和 $_POST['pw'] 是否为空。如果是这样,他们返回 TRUE,否则返回 FALSE。

OR是一个逻辑运算符,您可以在这里找到更多信息:http ://www.php.net/manual/en/language.operators.logical.php

关于 empty() 的更多信息;和标头();

http://php.net/manual/fr/function.empty.php

http://fr2.php.net/manual/fr/function.header.php

于 2012-06-05T16:05:45.020 回答
0

首先,你必须使用double|来比较,正确的方法是:value || value

使用重定向到登录header('Location: login.php');

如果您希望在登录表单中显示带有错误的额外消息,您可以执行以下操作:header('Location: login.php?error=1');

然后,login.php您可以在 中检查$_GET['error'],执行以下操作:

if($_GET['error'] == 1){
     echo "You have to fill username and password in order to continue.";
}
于 2012-06-05T16:07:26.070 回答
0

这是解决您的问题的最佳方法:

例如,您需要首先在 core.php 文件中声明此变量,然后在所有 php 文件中使用它,或者只在您正在处理的文件中声明它:

$current_file = $_SERVER['SCRIPT_NAME'];

然后只需在 header() 函数中使用它:

header('Location: '.$current_file);

此方法的机会是您使用通用变量在标头函数或任何其他函数中指定 url。

于 2016-06-16T03:43:58.480 回答