我有一个简单的页面,用户通过http身份验证登录聊天室。我需要做的是将他们的登录名作为用户名通过会话传递给他们在会议室中访问的其他页面。这是编码,假设它在他们登录的页面上,我必须初始化和设置会话。
<?
session_start();
if (isset($_SERVER['PHP_AUTH_USER']))
$_SESSION['username'] = $_SERVER['PHP_AUTH_USER'];
?>
<html>
<head>
<title>TESTING</title>
</head>
<body background="http://testsite.com/example/entry2a.png">
<body text="#FFFFFF" bgcolor="#000000" link="#808080" vlink="#808080" alink="#808080">
<font face="verdana,arial,sans-serif">
<center><br>
<table border="0"><tr><td>
<table border="0">
<tr>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<form action="http://testsite.com/rooms/enter/thisroom" method="POST" target="_top"
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" align="right"><font size="-1">Screen Name: </font></td>
<td height="20"><input name="USER" value="Tester"></td>
</tr>
</td>
</table>
<td width="4"> </td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" align="right"><font size="-1">Entrance: </font></td>
<td height="20"><input name="SAYS" value="Enters the room..."></td>
</tr>
</td>
</table>
<td width="4"> </td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" align="right"><font size="-1">History: </font></td>
<td height="20"><input name="HISTORY" value="20" size=2></td> </tr>
</td>
</table>
<td width="4"> </td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="20" align="right"><font size="-1">No Pics: </font></td>
<td height="20"><input name="NOPIC" value="1" type="checkbox" checked></td>
</tr>
<tr>
<td height="20" align="right"><font size="-1">Save name: </font></td>
<td height="20"><input type="checkbox" name="SAVE" value="1"></td>
</tr>
</table>
</td>
<td width="4"> </td>
<td>
<table border="0" cellspacing="0" cellpadding="0">
<td height="20" colspan=3>
<input type=hidden name="ACTION" value="says to">
<input type=hidden name="WHOTO" value="ALL">
<input type=submit value="Click to Enter if 18+"></td>
</tr>
</table>
</form>
</table>
</table>
</td>
</tr>
</table>
</td></tr></table>
</body>
</html>
然后在后续页面上,我有:
<?php
if (session_id() == "")
{
session_start();
}
?>
在每个页面的顶部(尽管只有一个确实需要会话名称从用户文件夹中提取目录信息以通过php填充下拉列表)。在随后的页面上,我可以找到目录,但是我找不到用户文件夹,大概是因为会话名称没有被传递,我不太清楚我的目标是什么丢失。
答案 0 :(得分:1)
session_start - 开始新的或恢复现有会话
http://php.net/manual/en/function.session-start.php
编辑:
<?php
if (session_id() == "")
{
session_start();
}
?>
这将永远不会恢复已经创建的会话。
CBroe是对的,session_id()在session_start()之前总是空的,它不会自己解析请求session_id,所以无论如何代码都会被执行。
鉴于涉及子域名和iframe,答案可能与以下内容有关: Allow php sessions to carry over to subdomains