我发现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()。