会话在PHP中不起作用

时间:2014-05-07 18:01:37

标签: php session variables

我有两个文件,一个名为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>

2 个答案:

答案 0 :(得分:2)

首先需要将值设置为$ variable

在Hey.php中

<?php
session_start();
$variable = 'test';
$_SESSION['hey']=$variable;
?>

答案 1 :(得分:1)

这里有两个问题。首先,您需要在将任何输出发送到客户端之前启动会话。例如,您的文件应该如下所示:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

如果您反过来(在会话开始之前发送DOCTYPEHTML),那么PHP会发送任何挂起的HTTP标头,然后是内容。根据HTTP协议的工作方式,一旦发送了任何数量的内容,您就无法重新发送标头。因此,延迟会话开始(需要设置cookie标头)将不起作用。

你的第二个问题是你在Get_url.php中调用了session_start(),然后在Next.php中include()编辑了session_start(),其中还有一个session_start()。当你拨打第二个session_start()时,它会用新的session_id覆盖第一个会话。

总结如下:

    在向用户输出数据之前
  1. session_start()
  2. 一次只能有一个$sid = session_id(); if(empty($sid)) session_start(); 。如果您必须包含另一个可能具有session_start()的文件,您可能希望使用以下内容:

    {{1}}