我是PHP新手,在会话方面更像是初学者。我有 index.php 页面,用户可以在这里注册和登录。表格分别发布到submit.php进行注册和登录。
这是 dashboard.php 文件,其中我显示了用户的用户名和他登录帐号的电子邮件地址。
<?php
session_start();
include "includes/config.php";
include "layouts/header.php";
$s_title = "Superior Results";
if(isset($_SESSION['id'])) {
$username = $_SESSION['username'];
$email = $_SESSION['email'];
$id = $_SESSION['id'];
} else {
header('Location: index.php');
die();
}
$sql = "SELECT email, username FROM members";
$result = mysqli_query($dbCon, $sql);
$row = mysqli_fetch_assoc($result);
?>
这就是我在dashboard.php文件中调用这些会话变量的方法
<?php echo $_SESSION['username'];?>
<?php echo $_SESSION['email'];?>
用户名有效,但电子邮件无法正常显示注意:未定义索引:电子邮件
答案 0 :(得分:1)
此错误的原因是您尝试读取不存在的数组键。 isset()
函数在那里,您可以测试它。您不需要空检查,因为您从不为元素指定null:
// check that the 'email' key exists
if (isset($_SESSION['email'])) {
// it does; output the message
echo $_SESSION['email'];
// remove the key so we don't keep outputting the message
unset($_SESSION['email']);
}
嗯,只是为了您的评论,我不确定我是否了解您的需求,但您想做这样的事情:?
$username = $_POST['username'];
$sql = "SELECT email FROM users WHERE username = '$username'";
if(($result = mysqli_query($conn, $sql) != false){
if(($row = $result->fetch_assoc() !== null)){
$_SESSION['email'] = $row;
} else {
echo 'no rows in database';
}
} else {
echo 'You have an error in you mysql syntax';
}
//.. work with concrete user
答案 1 :(得分:0)
用户登录后需要设置会话变量
$sql = "SELECT email, username FROM members WHERE id = '".$confirmed login id from the login process."' ";
$result = mysqli_query($dbCon, $sql);
$row = mysqli_fetch_assoc($result);
$SESSION['id'] = $row['id'];
$SESSION['email'] = $row['email'];
$SESSION['username'] = $row['username'];
在登录后设置这些会话变量后,您可以在该会话的任何其他页面上使用它们(在第一行上有session_start())