我有两个文件,一个名为Get_url.php的文件,另一个名为Next.php的文件。但是,会话对我不起作用 - 会话值不会被记住。我做错了什么?
这是我的Get_url.php代码:
<!DOCTYPE html>
<html>
<body>
<?php
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
//connection
$con= mysql_connect("splasjcom.ipagemysql.com","splasj","Password") or die ("Could not connect");
mysql_select_db("splasj") or die ("Could not select db");
$query = "SELECT id FROM articles WHERE url = '". curPageURL() . "'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$idie = $row['id'];
$Next = $idie +1;
}
$queryy = "SELECT url FROM articles WHERE id = '$Next'";
$resultt = mysql_query($queryy);
while($roww = mysql_fetch_array($resultt)) {
$idiee = $roww['url'];
echo $idiee;
}
session_start();
$_SESSION['Get_url']=$idiee;
?>
</body>
</html>
这是我的Next.php代码:
<!DOCTYPE html>
<html>
<body>
<?php include ('Get_url.php');
echo $idiee;
session_start();
echo $_SESSION['Get_url'];
?>
</body>
</html>
答案 0 :(得分:2)
首先需要将值设置为$ variable
在Hey.php中
<?php
session_start();
$variable = 'test';
$_SESSION['hey']=$variable;
?>
答案 1 :(得分:1)
这里有两个问题。首先,您需要在将任何输出发送到客户端之前启动会话。例如,您的文件应该如下所示:
<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>
如果您反过来(在会话开始之前发送DOCTYPE
和HTML
),那么PHP会发送任何挂起的HTTP标头,然后是内容。根据HTTP协议的工作方式,一旦发送了任何数量的内容,您就无法重新发送标头。因此,延迟会话开始(需要设置cookie标头)将不起作用。
你的第二个问题是你在Get_url.php中调用了session_start()
,然后在Next.php中include()
编辑了session_start()
,其中还有一个session_start()
。当你拨打第二个session_start()
时,它会用新的session_id覆盖第一个会话。
总结如下:
session_start()
一次只能有一个$sid = session_id();
if(empty($sid)) session_start();
。如果您必须包含另一个可能具有session_start()的文件,您可能希望使用以下内容:
{{1}}