2017-09-09 3 views
0

Je cherchais une solution et ne peut pas trouver un alors le meilleur endroit à demander est StackOverFlow.Indéfini index: steamid

Je continue d'obtenir l'erreur Index indéfini: steamid (ligne 54) L'erreur provient de $ steamid = $ _SESSION ["steamid"]; sur la page d'accueil.

La session_start(); est défini dans l'en-tête. Ceci est la page d'accueil à laquelle les utilisateurs sont redirigés après la connexion.

------------------ Ceci est la page d'accueil ------ ------------

<?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(); 

------------------ Ceci est une partie de la page de connexion ------ ------------

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

double possible de [PHP: "Avis: Undefined variable", "Notice: Undefined index" et "Notice: Undefined offset"] (https://stackoverflow.com/questions/4261133/php-notice -undefined-variable-notice-undefined-index-et-notice-undef) –

+0

Pourquoi configurez-vous toutes les variables de session dans une boucle? Vous n'obtiendrez que les valeurs du dernier élément du tableau 'players'. – Barmar

+0

Et si le tableau est vide, vous ne définirez aucune des variables de session. C'est probablement pourquoi c'est indéfini. – Barmar

Répondre

-2

Utilisez la fonction isset() pour vérifier si elle est définie ou non.

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

Cela ne résout pas vraiment le problème, il empêche juste l'avertissement. Il doit comprendre pourquoi la variable de session n'est pas définie en premier lieu. – Barmar

+0

Si vous obtenez des erreurs d'index non définies, assurez-vous que vos index sont définis avant d'essayer d'effectuer une tâche. Voir la documentation ici: http://php.net/manual/en/function.isset.php – HIR

+0

Mais ce n'est pas tout le problème? Il a une page de connexion qui est censée définir toutes les variables de session. Pourtant, d'une manière ou d'une autre, ils ne sont pas prêts. C'est ce qui doit être corrigé, pas ignoré avec 'isset()'. – Barmar