会话变量是在我的PC上设置的,而不是在Webhost的服务器上设置的
||
我有以下代码来检查客户端是否在其浏览器中启用了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不应再次转到gocheck.php。
这在我的PC上(使用WAMP)工作正常,但是当我将文件上传到虚拟主机时,它似乎陷入了page.php和gocheck.php之间的无限重定向循环中。另外,如果我在page.php中回显$ gocheck,它将返回\'no \',因此似乎由于某种原因gocheck.php未正确设置会话变量$ gocheck。
有人可以说明一下吗?我的代码中有错误吗?我需要在主机服务器上的php.ini中进行更改吗?
谢谢!
附言我的PC上的WAMP使用PHP v.5.3.0,但虚拟主机使用PHP v.5.2.12-不要认为这可能是问题所在。
没有找到相关结果
已邀请:
2 个回复
磁辫覆氓
如果用户随后启用javascript并刷新页面,则javascript代码将起作用。
刷遍派戳