php中的会话对我来说还不够清楚


Session in php are not enough clear to me

我发现php中的会话有点令人困惑,你们中的任何人都能向我解释一下吗。我有一个不适用于我的例子:我用这种方式注册会话,你能告诉我这是注册会话的正确方式吗

 //this is the page from where i register myusername in sessions
if($count==1){
    session_start();
    $_SESSION['myusername'] = $_POST['myusername']; 
    include("enterpincover.php");
}
else {
    echo "Wrong Pin";
}

在这里,我首先检查用户名是否在会话中注册,以便打开他的帐户,否则再次打开登录。

它是有效的,如果用户没有登录,它会显示正确的登录页面,如果用户登录,它显示欢迎消息,但不是我想要的欢迎用户的名字。例如:欢迎大卫

<?php
session_start();
if(isset($_SESSION['myusername']))
{
    echo 'Welcome '.$_SESSION['myusername']; 
}
else
{
    include("leftmodules.php");
    include("rightmodules.php");
    include("login.php");
}
?>

使用$_POST$_GET注册会话时,应检查这些变量是否存在。

示例

if(isset($_POST['myusername'])) $_SESSION['myusername'] = $_POST['myusername'];
else die("Undefined '"myusername'"");

如果您打算在MySQL查询中使用会话中的变量,则应在放入会话(或cookie,或任何其他变量)之前对其进行转义。使用mysql_real_escape_string()

示例

$_SESSION['myusername'] = mysql_real_escape_string($_POST['myusername']);

此外,始终在每隔一次输出之前将session_start()置于脚本的顶部,否则脚本将无法工作(您将收到headers already sent警告)。

session_start()应该位于使用会话的页面的最顶部,就在<?php之后设置会话是正确的,也正在检查。但我想你不会进入if部分,因为$count是0(你告诉过它是用来检查用户名是否在会话中注册的。你可以试着简单地提醒一些东西,如果它进入内部。

echo'警报("测试");';

我想您只需要在文档顶部使用session_start()。