我的应用程序有三个通用功能。他们正在注册,登录,然后查看个人资料页面。注册工作正常。登录后,您将被定向到个人资料页面。因此,当定向到配置文件页面时,如果设置了会话变量,则标题中的链接必须更改。
如果未设置,则会显示注册和登录。这里的问题是,当我登录时,标题中的链接没有变化。他们仍然显示注册和登录。个人资料页面显示用户的所有详细信息,如国家/地区,州,城市等,但不显示用户名(我使用会话变量获取)。我认为我的会话变量有问题。
以下是我的个人资料页面的代码段。
<?php
session_start(); // Must start session first thing
// See if they are a logged in member by checking Session data
$toplinks = "";
$username = "";
if (isset($_SESSION['id']) && isset($_SESSION['username'])) {
// Put stored session variables into local php variable
//$userid = $_SESSION['id'];
//$username = $_SESSION['username'];
$userid = preg_replace('#[^0-9]#', '', $_SESSION['id']);
$username = preg_replace('#[^a-z0-9]#i', '', $_SESSION['username']);
$toplinks = '<a href="memberprofile.php?id=' . $userid . '">' . $username . '</a> •
<a href="memberaccount.php">Account</a> •
<a href="logout.php">Logout</a>';
} else {
$toplinks = '<a href="register.php">Register</a> • <a href="login.php">Login</a>';
}
?>
我必须在开头声明$username = "";
,因为如果我不这样做,会显示一条通知显示未定义的索引。
我在登录页面设置会话变量。我确定控件是通过传递if块并输入else块。我对php很新,感谢任何帮助。
P.S:我正在使用ajax在页面之间进行交互。
答案 0 :(得分:1)
从
更改您的行if (isset($_SESSION['id']) && isset($_SESSION['username']))
到
if (isset($_SESSION['userid']) && isset($_SESSION['username']))
答案 1 :(得分:0)
将print_r($_SESSION)
放在session_start()
函数之后
并检查您在session variables
让我知道......