我有一系列PHP语句,如果启用了javaScript,我只想运行它。
if($js_enabled == 'yes') {
//Run a series of PHP statements
}
我的问题是我想用javaScript创建$ js_enabled变量。因此,如果启用了javaScript,则将创建该变量并运行PHP语句,但如果未启用javaScript,则永远不会创建该变量,并且不会运行PHP语句。
如何使用PHP可以识别的JavaScript创建变量?
答案 0 :(得分:6)
你可以做到
$browser = get_browser();
if ($browser['javascript'] == 1) {
// your code here
}
请阅读documentation for get_browser
以获取警告,尤其是
注意:为了使其正常工作,php.ini中的browscap配置设置必须指向系统上browscap.ini文件的正确位置。 browscap.ini不与PHP捆绑在一起,但您可以在此处找到最新的»php_browscap.ini文件。 虽然browscap.ini包含许多浏览器的信息,但它依赖于用户更新来保持数据库的最新状态。该文件的格式是相当不言自明的。
同时查看评论中给出的链接get_browser:
编辑正如您在评论中正确指出的那样,以上内容不会告诉您JavaScript是否已启用 ,而只是浏览器是否能够运行它。从服务器端发现客户端是不可能的,因为服务器端首先运行。如果有的话,请在服务页面后通知服务器端,例如像@ mck89建议或只是设置一个cookie,您可以在每个后续请求中阅读。
但一般来说,如果您的网站需要启用JavaScript,您只需添加一条消息即可告知用户此要求,例如:
<noscript>This page requires JavaScript to run properly</noscript>
换句话说,不要从PHP检查。只需设置浏览器可能使用的每个变量,如果启用了JavaScript,请考虑使用graceful degradation or progressive enhancement。
答案 1 :(得分:2)
为什么不简单地提出ajax请求?如果禁用了javascript,则无法执行ajax请求,因此不会执行PHP脚本,如果启用了javascript,则ajax请求将开始执行PHP脚本。
答案 2 :(得分:1)
您可以将该值存储在隐藏字段中。并在服务器端进行检查。
答案 3 :(得分:1)
如果我非常需要它,我会使用JavaScript在页面上设置一个表单变量(可以隐藏)然后在处理表单时检查它。否则我会让我的页面在没有JS的情况下工作......
答案 4 :(得分:0)
这不可能。 PHP是服务器端,而javascript仅在之后解释已完成php解释并且代码已经位于用户的浏览器中。尝试使用ajax解决方法。如果javascript_enabled - &gt;用ajax调用一些php页面。