PHP会话SID URL - URL没有SID


PHP Session SID URL - url does not have SID

我正在学习如何使用Sessions来维护页面之间的状态。

我想我的问题是我不知道如何恰当地逃避。当我加载页面时,我没有在url的末尾得到SID,而是得到这个:

mytestsite.com/login.php?<?php echo SID;?>

我有session_start()在每个页面的顶部。当我看到登录名出现在页面上以及Register和login链接时,会话最初工作,但是当我单击到另一个页面时,会话不维护。

主站点导航是动态创建的,使用数组($nav)和foreach循环。这里也是我不确定如何回声url和php SID常量。我觉得我的语法不对。

//LOGIN BAR
echo "<nav id='statusBar'>";
echo "<ul>";
if(isset($_SESSION['userIn']) && $_SESSION['userIn'] != ''){
    echo "<li id='userLo'>Log Out</li>";
    echo "<li id='userLi'>User Logged In: " . $_SESSION['userIn'] . "</li>";
}   else{
    echo '<li><a href="registration.php?<?php echo SID;?>">Register</a></li>';
    echo '<li><a href="login.php?<?php echo SID;?>">Login</a></li>';
}

echo "</ul>";

echo "</nav>";
//START MAIN MENU
echo "<nav id='nav'> ";
$nav = array();
$nav['index.php?<?php echo SID;?>'] = 'Home';
$nav['public1.php?<?php echo SID;?>'] = 'Public 1';
$nav['public2.php?<?php echo SID;?>'] = 'Public 2';
$nav['members.php?<?php echo SID;?>'] = 'Members';

//CREATE UNORDERED LIST
echo '<ul>';
foreach ($nav as $key => $navValues) {
    echo "<li>";
    echo "<a href='$key'>$navValues</a>";
    echo "</li>";
}
echo '</ul>';
echo "</nav>";

在echo '..';被解释为html。

echo '<li><a href="login.php?<?php echo SID;?>">Login</a></li>';

如果你想在字符串中使用变量,你必须像这样将它们连接起来:

echo '<a href="login.php?' . session_name() . ' ='  . session_id() . ' ">Login</a>' ;

对于连接 php代码看一下:http://php.net/manual/en/language.operators.string.php更多关于会议的内容:http://php.net/manual/en/session.constants.php