我有以下代码来检查客户端是否在浏览器中启用了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 - 但是不要认为这可能是问题所在。
答案 0 :(得分:2)
为什么使用php来检测是否启用了javascript?您只需将以下html标记添加到您的页面即可:
<noscript>
Pleas enable javascript!
</noscript>
如果用户然后启用javascript并刷新页面,则javascript代码将起作用。
答案 1 :(得分:0)
好吧没关系,现在所有的会话变量都设置得正确,也许这只是一个等待的问题,直到webhost正确配置一切(也有设置电子邮件的这个问题)