0

私の質問は、コードでわかるように、変数を定義せずに $_POST でポストされた変数の値をチェックするにはどうすればよいかということです。

if ($_SESSION["Admin"]=="" AND $_REQUEST[act]!="show_login" AND
$_REQUEST[act]!="chk_login" ) {  #not logged in    show_login();   
return;

これらのエラーが発生しています。

  • 未定義のインデックス: 6 行目の F:\xampp\htdocs\shangloo\admin\index.php で実行
  • 未定義のインデックス: 6 行目の F:\xampp\htdocs\shangloo\admin\index.php の管理者
4

3 に答える 3

2

次のように、配列内のインデックスにアクセスする前に使用isset()します。$_REQUEST

if( $_SESSION["Admin"] == "" && 
    (!isset( $_REQUEST['act']) || 
        ( $_REQUEST['act'] != "show_login" && $_REQUEST['act'] != "chk_login")))

あなたが探している正しいロジックを追加したと思います。

于 2012-07-02T22:43:12.293 に答える
0
if(isset($_SESSION))
{
   foreach($_SESSION as $sessKey => $sessVal)
   {
      echo $sessKey . ' - ' . $sessVal.'<br>';
   }
}
echo count($_SESSION);

これがまさにあなたの求めているものかどうかはわかりませんが、セッションが設定されているかどうか、設定されている場合はそのセッションのデータは何かを知りたいと思います。$_SESSION, $_COOKIE, $_POST, $_GET, $_REQUEST基本的にはすべて配列であるため、操作するときに配列のように扱うことができます。

あなたが抱えている可能性のある別の問題..これは、おそらくWindowsでxamppを使用しているという回答を投稿した後にエラーに気付いた原因です。Windows ファイル システムでパーミッション エラーが発生し、セッションがローカルの temp または tmp ディレクトリに書き込めない可能性があります。

また$_REQUEST、必要がない場合は、グローバル変数を使用することはお勧めしません。したがって、私が投稿したり、admin という名前でサイト/ソフトウェアにリクエストを取得したり、Cookie を設定してそれを admin と呼んだりすると、$_REQUEST はそれを特別に定義されたバージョンと同じように扱います。

于 2012-07-02T22:49:08.150 に答える
0

ループ内のすべての変数をチェックする方がメンテナンスが簡単です。

<?php
    // VARIABLES NEEDED BY THIS PAGE
    $needed_session = array(
         'Admin' => "",
    );
    $needed_request = array(
         'act' => "",
    );
    foreach($needed_session as $var => $default)
        if (!isset($_SESSION[$var]))
            $_SESSION[$var] = $default;
    foreach($needed_request as $var => $default)
        if (!isset($_REQUEST[$var]))
            $_REQUEST[$var] = $default;
?>

_REQUEST への書き込みが本当に悪いコーディング方法である場合でも、少なくとも 1 つは POST と GET を区別する必要があります。

バリエーションとして、既知の変数のみを宣言できます。

    foreach($needed_request as $var => $default)
        if (!isset($_REQUEST[$var]))
            ${$var} = $default;
        else
            ${$var} = $_REQUEST[$var];

さまざまな可能性があります: 1. インポート時に変数を構文的に検証することもできます。2. 「本当に本当に必要な変数」を宣言し、その変数が存在しないとエラー ページが表示される場合があります。

ただし、その道をさらに進んでいる場合は、より高いレベルのフレームワークを調査することをお勧めします。

于 2012-07-02T22:54:18.180 に答える