2017-09-09 22 views
0

私は解決策を探していて、見つけられないので、質問するのに最適な場所はStackOverFlowです。未定義のインデックス:steamid

エラーが発生します。未定義インデックス:steamid(Line 54) エラーが発生しています。$ steamid = $ _SESSION ["steamid"];ようこそページで。

session_start();ヘッダーに定義されています。 これは、ログイン後にリダイレクトされるようになったウェルカムページです。

------------------これは[ようこそ]ページです------------

<?php include('../header.php'); ?> 
    <?php include('../footer.php'); ?> 

    <?php 
    $steamid = $_SESSION["steamid"]; 

    require('../int/dbinit.php'); 

    $sql = "SELECT steamid FROM users WHERE steamid='". $steamid ."'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     die("<!-- ACCOUNT ALREADY EXISTS! -->"); 
    } 

    $sql = "INSERT INTO users (steamid) VALUES ('".$steamid."')"; 




    if ($conn->query($sql) === TRUE) { 
     echo "<!-- ACCOUNT HAS BEEN CREATED! -->"; 
    } else { 
     uhoh("Error while creating account: " . $sql . "<br>" . $conn->error); 
    } 

    ob_end_flush(); 

------------------これはログインページの一部です------------

foreach ($json_decoded->response->players as $player) 
       { 
        /*echo " 
        <br/>Player ID: $player->steamid 
        <br/>Player Name: $player->personaname 
        <br/>Profile URL: $player->profileurl 
        <br/>SmallAvatar: <img src='$player->avatar'/> 
        <br/>MediumAvatar: <img src='$player->avatarmedium'/> 
        <br/>LargeAvatar: <img src='$player->avatarfull'/> 
        ";*/ 
        $_SESSION["steamid"] = $player->steamid; 
        $_SESSION["personaname"] = $player->personaname; 
        $_SESSION["profileurl"] = $player->profileurl; 
        $_SESSION["avatar"] = $player->avatar; 
        $_SESSION["avatar_medium"] = $player->avatarmedium; 
        $_SESSION["avatar_full"] = $player->avatarfull; 
        /*var_dump($player);exit;*/ 
+0

[PHP: "注意:未定義の変数"、 "注意:未定義のインデックス"、および "注意:オフセット未定義"]の可能な重複(https://stackoverflow.com/questions/4261133/php-notice -undefined-variable-notice-undefined-index-and-notice-undef) –

+0

ループ内のすべてのセッション変数を設定するのはなぜですか? 'players'配列の最後の要素からのみ値を取得します。 – Barmar

+0

配列が空の場合は、セッション変数を設定しません。それはおそらく未定義です。 – Barmar

答えて

-2

定義されているかどうかを確認するには、isset()関数を使用します。

$steamid = isset($_SESSION["steamid"]) ? $_SESSION["steamid"] : ''; 
+1

これは実際に問題を解決するものではなく、警告を防止するだけです。セッション変数が最初に設定されていない理由を理解する必要があります。 – Barmar

+0

未定義のインデックスエラーが発生している場合は、タスクを実行する前にインデックスが設定されていることを確認してください。ここのドキュメンテーションを参照してください:http://php.net/manual/en/function.isset.php – HIR

+0

それだけではないのですか?彼は、すべてのセッション変数を設定するはずのログインページを持っています。しかし、どういうわけか彼らは設定されていない。これは修正する必要があり、 'isset()'では無視されません。 – Barmar