0

说起来有点尴尬,但我在创建基于 PHP 的登录系统时遇到了问题。我正在使用站点模板来处理登录过程的外观,所以我将省去你的代码。这是我关于如何处理登录的思考过程:

创建一个简单的 login.php 文件。将有一个表单,其操作设置为自身。它将检查是否已单击提交,如果是,则进行验证以确保用户输入了有效的密码/用户名。如果他们这样做,设置一个会话变量保存一些登录信息(用户名,而不是密码),并将它们重定向到受限区域。如果登录信息无效,则将错误消息保存在会话变量中,显示错误消息以提供进一步说明,然后等待用户重新提交。这是我所拥有的大部分内容 - 希望你们中的一位专家可以看到我哪里出错了,并给我一些见解:

<?php
session_start();

if(isset($_POST['submit'])) {
    if(!empty($_POST['username']) AND !empty(!$_POST['password']))
    {
        header("Location: http://www.google.com");
    } else {
        $err = 'All the fields must be filled in!';
    }
}

if($err) {
    $_SESSION['msg']['login-err'] = $err;
}
?>

现在上面只是一个例子——上面的代码的目的是处理用户输入,脚本简单地验证用户是否输入了用户名和密码。如果他们有,我希望他们在这种情况下被重定向到 google.com(为了这个例子)。如果没有,请保存错误消息。鉴于我当前的代码,错误消息将完美显示,但是如果用户提交并输入了用户名和密码的内容,则页面根本不会重定向。我敢肯定这是一个愚蠢的问题,但我是一个初学者,而且,老实说,现在有点嗡嗡声。非常感谢!

4

2 回答 2

2

好吧,如果不查看其余代码,就很难说。但是对于标头,必须在将任何内容写入响应流之前发送标头(即在任何echo语句或任何未包含在标签内的<?php ... ?>代码之前),这可能就是它不重定向的原因。您提供的代码对我来说看起来不错。

于 2010-04-15T03:15:53.330 回答
0
if(!empty($_POST['username']) AND !empty(!$_POST['password']))
                                         ^--- negating a string = pointless

这个逻辑很难读,你应该重做:

if(empty($_POST['username']) OR empty($_POST['password'])) {
   die("Fill in both fields");
}
于 2012-12-13T17:26:09.993 回答