1

私はajaxで小さなログを作成しようとしています。私はガイドに従いましたが、彼はphpのクラスと関数なしでビルドします。クラスと関数にアプリケーションを配置してアプリケーション全体を再構築しようとすると、次のエラーが発生します。Undefined index: is_ajax

と私のコード:

<?php
  class Login{
    public function LoggedIn(){
      $is_ajax = $_REQUEST['is_ajax'];
      if(isset($is_ajax) && $is_ajax)
      {
        $username = $_REQUEST['username'];
        $password = $_REQUEST['password'];

        if($username == 'demo' && $password == 'demo')
        {
          echo "success";   
        }
      }
    }
  }
?>

見る:

public function DoLoginBox() {
    $Login = new Login();
    //inloggning form-tagg...
    return '<p>&nbsp;</p>
        <div id="content">
          <h1>Login Form</h1>
          <form id="form1" name="form1" action="'. $Login ->LoggedIn(). '"  method="post">
            <p>
              <label for="username">Username: </label>
              <input type="text" name="username" id="username" />
            </p>
            <p>
              <label for="password">Password: </label>
              <input type="password" name="password" id="password" />
            </p>
            <p>
              <input type="submit" id="login" name="login" />
            </p>
          </form>
            <div id="message"></div>
        </div>';
} 
4

5 に答える 5

0

未定義のインデックス: XYZ は、配列があり、その項目をインデックスで要求したが、そのインデックスが存在しないことを意味します。

例:

$array = array("a"=>1,"c"=>3);
echo($array["b"]);

存在を確認できます:

if(!isset($array["b"]))die("Missing XYZ!");
于 2012-06-26T13:09:50.803 に答える
0

使用する必要があります

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {

それ以外の

if(isset($is_ajax) && $is_ajax)
于 2012-06-26T13:02:58.933 に答える
0

この行を変更します。

$is_ajax = $_REQUEST['is_ajax'];

の中へ:

$is_ajax = !empty($_REQUEST['is_ajax']);

そして、あなたは削除することができますisset($is_ajax)

NB : これが機能するためには、javascriptAJAX リクエストを実行する はリクエストにis_ajax=1(またはその他の空でない値) を追加する必要があります! これは、すぐには発生しません。

于 2012-06-26T13:03:08.570 に答える
0

この線

$is_ajax = $_REQUEST['is_ajax'];

これは、AJAX であるかどうかにかかわらず、LoggedIn() 関数が呼び出されるたびに実行されます (ブラウザーからパラメーター is_ajax を追加すると推測しています)。

代わりに次のようなものを使用します

if(isset($_REQUEST['is_ajax']))
于 2012-06-26T13:03:55.870 に答える
0

HTTP_X_REQUESTED_WITH ヘッダーは、すべてのブラウザーとサーバーでサポートされているわけではありません。次のような専用の get または post リクエストを使用する必要があります。?is_ajax=1

関連するスレッドを参照してください: $_SERVER['HTTP_X_REQUESTED_WITH'] は PHP に存在するかどうか。

于 2012-06-26T13:24:24.837 に答える