【发布时间】:2020-10-22 13:31:03
【问题描述】:
enter image description here 晚上好,我正在做一个小型的大学项目。我正在创建一个网站,人们可以使用 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ù la connexion échoue
}
if(isset($_POST['formconnect'])) //vérifie que le bouton pour se connecter est enclenché
{
$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 " ;
}
}
?>
连接后,用户被重定向到他的个人资料,名为profil.php,如下所示:
<?php
session_start();
//tentative de connexion à la base de donnée
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ù la connexion échoue
}
if(isset($_GET['id']) AND $_GET['id'] > 0)
{
$getid=intval($_GET['id']);
$requser= $bdd -> prepare('SELECT * FROM membres WHERE id= ?');
$requser->execute(array($getid));
$userinfo=$requser->fetch();
[the table where my users infos are stored. membres means members in french][1]
<html>
<head>
<title>Profil de <?php echo $userinfo['pseudo']?></title>
<meta charset='utf-8'>
</head>
<div align="center">
<h3>profil TROKI</h3>
<br/>
<h3>les annonces de <?php echo $userinfo['pseudo']?> </h3>
pseudo = <?php echo $userinfo['pseudo']?> <br/> //this one works
mail = <?php echo $userinfo['email']?> <br/> //this one works too
<?php
if (isset($_SESSION['id']) AND $userinfo['id']==$_SESSION['id'])
{
?>
//everything here is visible only when the user is logged in
<h>Bienvenue dans ton profil <?php echo $userinfo['pseudo']?> </h2>
<a href="editionprofil.php"> éditer mon profil</a>
<a href="modifiermdp.php">modifier mon mot de passe</a>
<a href="deconnexion.php"> se déconnecter</a>
<a href="formulaireajout.php"> ajouter une annonce</a>
<?php
}
?>
</div>
<?php
}
else
?>
</html>
每当我想打印类似的东西时
<h2>welcome to your profile,<?php echo $userinfo['pseudo']?> </h2>
变量 $userinfo['pseudo'] 变成了我的用户昵称,这正是我想要的。
但是,由于我不知道,我无法让这些变量在任何其他页面上工作并且我不断收到此错误:
** 注意:未定义变量:第 64 行 C:\wamp\www\projet2\formulaireajout.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ù la connexion échoue
}
// ////////////////////////////////////////////////////////////////////////////////////////////////
if(isset($_SESSION['id']))
{ echo "ok"; // I'm getting "ok" so this condition is verified
}
else
{
//echo "lol";
header('location:connexion.php');
}
if(isset($_GET['id']) AND $_GET['id'] > 0)
{
$getid=intval($_GET['id']);
$requser= $bdd -> prepare('SELECT * FROM membres WHERE id= ?');
$requser->execute(array($getid));
$userinfo=$requser->fetch();
}
<!DOCTYPE html>
<html>
<head>
<title>Ajouter une annonce</title>
</head>
<body>
<h3>You can post your things here,<?php echo $userinfo['pseudo']?></h3> // here, $userinfo generates an undefined variable error !
<div align="center">
'some extra code deleted'
</body>
</html>
好吧,我的问题是,如果我的 $userinfo 是在 profile.php 页面中定义的,为什么它会在我正在创建的所有其他页面中生成错误?我究竟做错了什么 ? (这个项目大约是我学期分数的 60%,所以我遇到了麻烦,我无法解决它)
感谢您的阅读,祝您有美好的一天!
【问题讨论】:
标签: php mysql session phpmyadmin