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";

    ?>

このエラーが発生しました: Notice: Undefined variable: login in C:\xampp\htdocs\sites\cookie\index.php on line 2

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 に答える