2014-05-07 135 views
-1

我有两个文件,一个名为Get_url.php,另一个名为Next.php。然而,会话不适合我 - 会话值不会被记住。我究竟做错了什么?会话无法在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> 
+1

这是什么有它 - >'$ variable' –

+0

你设置?一个值到'$ variable'? –

+3

此示例代码将无法工作。你可能想发布你的真实代码,以便我们看到真正发生的事情。 –

回答

1

这里有两个问题。首先,您需要在将任何输出发送到客户端之前开始会话。例如,你的文件应该开始像这样:

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

如果你这样做的其他方式(您发送DOCTYPEHTML在会话开始之前),那么PHP发送任何未决的HTTP头后面的内容。凭借HTTP协议的工作方式,一旦发送了任何数量的内容,就不能重新发送标题。因此,后期会话开始(需要设置cookie标头)将不起作用。

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

因此,在总结:

  1. session_start()之前的时间数据输出到用户
  2. 只有一个session_start()。如果您必须包含另一个文件中可能有一个在session_start(),您可能希望使用这样的事:

    $sid = session_id(); 
    if(empty($sid)) session_start(); 
    
2

首先,您需要的值设置为$变量

in Hey.php

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

我需要更改Hello.php中的任何内容吗? 原因当我尝试这样做时,我得到'testest'作为输出... – user3599598

+0

不,该Hello.php文件应呈现$ _SESSION ['嘿'] – rmcfrazier

+0

它保持不起作用,虽然... – user3599598