[英]Session doesn't work in PHP
我有两个文件,一个文件名为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>
您首先需要将值设置为$ variable
在Hey.php中
<?php
session_start();
$variable = 'test';
$_SESSION['hey']=$variable;
?>
这里有两个问题。 首先,您需要先开始会话,然后再将任何输出发送到客户端。 例如,您的文件应这样开始:
<?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_id覆盖第一个会话。
因此,总而言之:
session_start()
一次仅一个session_start()
。 如果必须包含另一个可能具有session_start()的文件,则可能需要使用以下内容:
$sid = session_id(); if(empty($sid)) session_start();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.