下面的链是否正确?
首先,我显示客户端home.php,它将创建一个会话并存储在$_session['name']='random_name'中,并将问候最终用户客户端:
<?php
session_start();
$_SESSION['name'] = 'random_name';
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h1>Greeting</h1>
<a id="1" href="index.php">link</a>
</body>
</html>
然后,我将按下链接,它将带我进入第二个页面index.php,它将引导我进入另一个页面,在页面内的某些逻辑执行后,该页面将为用户显示$_SESSION[‘name’]内的值,如下所述:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<head>
<script src="test.js"> </script>
<title></title>
</head>
<body>
<p id="para"></p>
<input type="button" onclick="checkAuth()" value="submit">
</body>
</html>
现在,当我按下按钮时,它将激活test.js中的checkAuth()函数,该函数将通过使用AJAX从服务器端(该死的php)检索SESSION中的值['name']:
function checkAuth()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
var response = xmlhttp.responseText;
document.getElementById("para").innerHTML = response;
}
}
xmlhttp.open("POST","damn.php",true);
xmlhttp.send();
}
现在damn.php看起来是这样的:
<?php
session_start();
if (isset($_SESSION['name'])) {
echo $_SESSION['name'];
}
我的问题是,最简单的方法是向客户端显示里面的项目$SESSION就是这样?
有没有一种不使用javascript的更简单的方法?在每一页中插入session_start()是否正确?还是仅从我想要检索SESSION['items']的页面?
您可以简单地使用
<?php
session_start();
$_SESSION['name'] = 'foo';
?>
<script type="text/javascript">
var name = <?php echo json_encode($_SESSION['name']) ; ?>;
</script>
如果你知道你需要在网页中使用特定的会话数据,并且这些数据在你生成页面时是可用的,那么就嵌入这些数据。您唯一想调用AJAX来获取数据的时候是,您认为会话中的数据可能在javascript代码中真正需要之前已经更改。
如果要使用$_SESSION保存/检索数据,则任何位置都需要session_start()
。如果某个特定页面不需要修改或访问会话数据,那么您根本不需要session_start()
。