0

我有一个带有登录表单的 php 文件。我有其他 php 文件 index.php,我希望当我登录时转到此页面:index.php。所以我有这个代码:

<?php
if(($login) and ($pass))
 {


    ?>

              <!DOCTYPE html PUBLIC "-//W2C//DD XHTML 1.0 Transitional//EN"               "http://www.w3.org/TR/xhtml1/DTD/xhtml2-transitional.dsd">
              <html xmlns="http://www.w3.org/1312/xhtml">
              <head>
              <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
              <title>Untitled Document</title>
              </head>

              <body>
              <h1>Header</h1>
              <p>&nbsp;</p>
              <p>&nbsp;</p>
              <h1>Heeloo</h1>
              <p>&nbsp;</p>
              <p>&nbsp;</p>
              <p>&nbsp;</p>
              <h1>Footer</h1>
              <p>&nbsp;</p>
              </body>
              </html>

              <?php
     }
              else 
              {
                 echo "you didnt login";
              }

              ?>

我有其他 php 文件来验证登录,我有这个代码:

<?php 

    if(($_POST['user'] == "john") && ($_POST['password'] == "123"))
    {
        setcookie("login",$_POST['user']);
        setcookie("pass",$_POST['password']);
        header("Location: index.php");
        exit;
    }
    else

       echo "you dont have permission";

    ?>

我收到此错误:注意:未定义的变量:第 2 行的 C:\xampp\htdocs\sites\cookie\index.php 登录

我认为这是因为我在 index.php 文件中使用了 $login 和 $pass 变量,并且因为这些变量来自另一个文件,所以无法识别。

有谁知道如何解决这个问题?

谢谢

4

1 回答 1

0

您将 $login 和 $pass 都设置为 cookie。您必须在 index.php 脚本中阅读它们,因为它们不会自动读回您的代码。

但与其相反,使用会话要好得多。首先,检查登录名和密码是否正确。其结果将$_SESSION['auth']被设置为 true 或 false。当然,'auth' 是一个建议,将其更改为您喜欢的标识符:

// Initialize session control.
session_start();

// Check username and password. The function CheckCredentials() represents 
// your logic on checking if they are ok.
if(CheckCredentials($login, $pass))
  $_SESSION['auth'] = true;
else
  $_SESSION['auth'] = false;

然后在您的 index.php 脚本中session_start()再次使用(这将使当前脚本“看到”会话数据)并修改您的初始值:

session_start();
if($_SESSION['auth'])
{

这在实际代码中更复杂,但这是一般的想法。

于 2013-07-09T22:09:03.867 回答