0

ゼロからフォーラムを作成しようとしていますが、少し混乱しました。次のコードでは、ユーザーがログインしていない場合、カテゴリを追加できないという条件を設定しようとしています。ただし、ユーザーがログインしている場合、コードは完全に機能しますが、「未定義のインデックス: ログインしていない場合はユーザー ID が表示されます。追加しようとしましif(isset($_SESSION['userid']))たが、「サインインする必要があります」という通知が非表示になります。何か素晴らしいアイデアはありますか?

<?php

include("_/inc/dbcon.php");
    $link = mysql_connect($host, $login, $pw);
    mysql_select_db($database);
    if($link){
    }
include("_/inc/session_handler.php");
$create_cat ="";
if($_SESSION['userid'] == false /*| $_SESSION['rank'] !='Emperor' || $_SESSION['rank'] !='Destroyer' ||  $_SESSION['rank']!= 'Tekken Lord' )*/)
{
    //the user is not an admin
    echo 'Sorry, you do not have sufficient rights to access this page.';
}
else
{
    //the user has admin rights
    if($_SERVER['REQUEST_METHOD'] != 'POST')
    {   echo "YOU HAVE THE RIGHTS!";
        //the form hasn't been posted yet, display it

        $create_cat .= '<form method="post" action="">
            <input type="text" name="cat_name" placeholder="Category Name"/><br />
            <input type="text" name="cat_description" placeholder="Category Description" /><br />
            <input type="submit" value="Add category" />
         </form>';
    }
    else
    {
        //the form has been posted, so save it
        $sql = "INSERT INTO sp_categories(cat_name, cat_description)
           VALUES('" . mysql_real_escape_string($_POST['cat_name']) . "',
                 '" . mysql_real_escape_string($_POST['cat_description']) . "')";
        $result = mysql_query($sql);
        if(!$result)
        {
            //something went wrong, display the error
            echo 'Error' . mysql_error();
        }
        else
        {
            $create_cat .=  'New category succesfully added.';
        }
    }
}

?>
4

3 に答える 3

0

コードが機能することを本当に確信している場合 (これが悪い例であっても)、error_reporting(E_ERROR);通知を削除するために使用します。

またはisset()、間違った場所で使用した可能性があります。

于 2013-10-09T10:35:39.323 に答える
0

存在しないキーの配列内を検索すると、未定義のインデックス エラーが発生します。array_key_exists を使用してみてください: http://php.net/manual/en/function.array-key-exists.php

if ( !array_key_exists( 'userid', $_SESSION ) ) {}

お役に立てれば

于 2013-10-09T10:35:49.333 に答える
0

定義されていない配列のインデックスを呼び出そうとすると、未定義のインデックス エラーが発生します
例えば:

// Define an array with a few keys and values...
$data = array(
    'vehicle' => "car",
    'color'   => "red",
);
echo $data['size']; // This line will issue an undefined index error...

...インデックスのサイズが既存のキーではないためです。

呼び出す前に、配列内のキーの存在を常に確認してください。

if (isset($_SESSION['userid']) && $_SESSION['userid'] === false)

mysql_*PS:非推奨の関数を使用していることに気付きました。PDO代わりに使用してみてください。

于 2013-10-09T10:51:08.507 に答える