PHP SESSION 未定义变量

晚上好,我正在开发一个小型大学项目。我正在创建一个网站,人们可以使用 PHP 发布他们用过的物品来出售它们或与另一个对象交换它们(一种 eBay,但简单 100000 倍),这对我来说是新的。为了简单起见,填写连接表单(connexion.php)后,用户会被重定向到他自己的个人资料(profil.php),其中显示他的用户名和电子邮件(从数据库获取后)。如下所示:


///////////connexion.php : //////////


<?php

session_start(); 

try

{

    $bdd = new PDO('mysql:host=localhost;dbname=espace_membre;charset=utf8', 'root', '');

}

catch (Exception $e)

{

        die('Erreur : ' . $e->getMessage()); //message d'erreur au cas o&ugrave; la connexion &eacute;choue

}


if(isset($_POST['formconnect']))  //v&eacute;rifie que le bouton pour se connecter est enclench&eacute; 

{

  $mailconnect = htmlspecialchars($_POST['mailconnect']); 

  $mdpconnect = sha1($_POST['mdpconnect']);

  if(!empty($mailconnect) AND !empty($mdpconnect))

  {

     $requser=$bdd->prepare("SELECT * FROM membres WHERE email = ? AND mdp= ?");  

     $requser->execute(array($mailconnect,$mdpconnect));

     $userexist=$requser->rowcount(); 

     if($userexist==1)

     {

          $userinfo=$requser->fetch();

          $_SESSION['id']=$userinfo['id'];

          $_SESSION['pseudo']=$userinfo['pseudo'];

          $_SESSION['email']=$userinfo['email'];

          header("Location: profil.php?id=".$_SESSION['id']);

     }

     else

     {

      $erreur="password or mail not valid" ; 

     }

  }

  else

  {

    $erreur =" please complete all inputs " ; 

  }

}

 ?>



每当我想打印类似的东西


  <h2>welcome to your profile,<?php echo $userinfo['pseudo']?> </h2>

变量 $userinfo['pseudo'] 变成我的用户的昵称,这就是我想要的。


但是,由于我不知道,我无法让这些变量在任何其他页面上工作,并且我不断收到此错误:


** 注意:未定义的变量:C:\wamp\www\projet2\formulaireajout.php 第 64 行的 userinfo**


我创建了另一个页面,供用户填写表单来发布内容


噜噜哒
浏览 176回答 1
1回答

摇曳的蔷薇

在连接页面上,您将 URL 中的 id 传递到配置文件页面,如下所示:header("Location: profil.php?id=".$_SESSION['id']);配置文件页面上查找要设置的 $_GET['id'] 的函数得到满足,因为 id 是在 URL 中设置的。但是,如果我是用户并单击这些链接:版本配置文件.php修改器mdp.php断开连接.php添加表单.phpid 不会在 URL 或页面请求中传递,但您的代码仍在寻找要在这些页面上设置的值以及下面的代码片段:if(isset($_GET['id']) AND $_GET['id'] > 0){&nbsp; $getid=intval($_GET['id']);&nbsp; $requser= $bdd -> prepare('SELECT * FROM membres WHERE id= ?');&nbsp; $requser->execute(array($getid));&nbsp; $userinfo=$requser->fetch();}由于未设置 $_GET['id'] ,因此$userinfo未定义此变量以便稍后在代码中使用。仅当 $_GET['id'] 设置且大于 0 时才会设置。我的建议是,由于您已经在会话中设置了用户 ID,因此请在其他页面上调用 $_SESSION 变量。因此,只要您继续启动会话,就像现在位于文件顶部一样,并且不结束或销毁会话,您应该能够访问其他页面上 $_SESSION 数组的值:&nbsp; &nbsp; &nbsp; $_SESSION['id']=$userinfo['id'];&nbsp; &nbsp; &nbsp; $_SESSION['pseudo']=$userinfo['pseudo'];&nbsp; &nbsp; &nbsp; $_SESSION['email']=$userinfo['email'];对于您已在会话中设置的值,只需稍后在其他页面上的代码中回显这些值即可。所以调用它应该可以在其他页面上工作:<?php echo $_SESSION['pseudo']?></h3>当然,如果您想在用户“注销”时销毁会话和/或取消设置值。此外,由于值位于会话中,因此您不需要在每个页面上对相同值进行数据库查找,除非它们将要更改或者您正在查找尚未存储在会话中的新数据。希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP