2017-09-09 118 views
0

我一直在寻找一个解决方案,找不到一个,所以要求最好的地方是StackOverFlow。我不断收到错误未定义的索引:steamid(Line 54) 错误来自$ steamid = $ _SESSION [“steamid”];在欢迎页面上。未定义的索引: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