会话变量在我的PC上设置但在webhost的服务器上没有

时间:2011-04-17 14:52:09

标签: javascript web-hosting php

我有以下代码来检查客户端是否在浏览器中启用了javascript:

page.php文件:

<?php
session_start(); 
if(isset($_SESSION['gocheck'])) {$gocheck = $_SESSION['gocheck'];} 
else {$gocheck =   'no';}
//echo $gocheck;
if($gocheck=='no'){header ("Location: ./gocheck.php"); exit;}
//Only reaches this line if gocheck.php has been run and Javascript is enabled.
unset($_SESSION['gocheck']);
//rest of page
?>

gocheck.php:

<?php
session_start(); 
$_SESSION['gocheck'] = 'yes';

echo"
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org /TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">
<head>
<script type=\"text/javascript\" language=\"JavaScript\">
window.location.replace('page.php');
</script>
</head>

<body>
This website requires Javascript to be enabled in your browser. <br />
Please enable Javascript and try again.
</body>

</html>

";

?>

所以应该发生的是用户总是从page.php重定向到gocheck.php,它将会话变量$ gocheck设置为'yes'并通过Javascript指向page.php。因为$ gocheck等于'yes',page.php不应再指向tio gocheck.php。

这在我的电脑上运行正常(使用WAMP),但是当我将文件上传到webhost时,它似乎陷入了page.php和gocheck.php之间的无限重定向循环。另外,如果我在page.php中回显$ gocheck,它会返回'no',所以好像由于某种原因,gocheck.php没有正确设置会话变量$ gocheck。

有人可以对此有所了解吗?我的代码中有错误吗?我需要在webhost的服务器上更改php.ini吗?

谢谢!

P.S。我的电脑上的WAMP使用PHP v.5.3.0,但是webhost使用的是PHP v.5.2.12 - 但是不要认为这可能是问题所在。

2 个答案:

答案 0 :(得分:2)

为什么使用php来检测是否启用了javascript?您只需将以下html标记添加到您的页面即可:

<noscript>
Pleas enable javascript!
</noscript>

如果用户然后启用javascript并刷新页面,则javascript代码将起作用。

答案 1 :(得分:0)

好吧没关系,现在所有的会话变量都设置得正确,也许这只是一个等待的问题,直到webhost正确配置一切(也有设置电子邮件的这个问题)