【问题标题】:Setting PHP variable in <noscript>在 <noscript> 中设置 PHP 变量
【发布时间】:2016-03-09 09:18:59
【问题描述】:

类似下面的东西不起作用:

<?php $nojs = false; ?>
<noscript>
    <?php $nojs = true; ?>
</noscript>

无论是否启用 JS,都会执行 PHP。但是有没有办法获得类似的效果?如果 JS 被禁用,我正在尝试设置一个标志,然后相应地显示页面的某些部分。

【问题讨论】:

    标签: javascript php noscript


    【解决方案1】:

    PHP 在 javascript 之前执行,所以你不能这样做。成功查询 ajax 页面后,您可以执行一些操作,例如执行基本的 ajax 请求并将hasjs 存储在会话变量中。您不知道是否只是由于其他原因导致 ajax 请求不成功,或者他们是否禁用了 Javascript。

    让我们试一试吧:

    head 标签中的 jquery 脚本

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
    <script>
    $( document ).ready(function() {
        $.get( "hasjs.php", { hasjs: "1"} );
    });
    </script>
    

    PHP 文件 (hasjs.php)

    <?php
    if(isset($_GET['hasjs']))
    {
        session_start();
        $_SESSION['hasjs'] = 1;
    }
    ?>
    

    然后你可以访问 session 变量来确定他们是否有基于 ajax 查询的 JS。如果没有安装 JS,没有什么能阻止用户访问该页面。

    【讨论】:

    • 会话变量会被存储在会话中,如果用户禁用了 Javascript 但仍然保持会话处于活动状态怎么办?编辑;我想我可以根据 $_SESSION 值设置一个 PHP 标志,然后取消设置 $_SESSION 变量。
    • 您将在每页的 PHP 处理结束时将 hasjs 设置为 0。您遇到问题的唯一方法是该人在页面加载后禁用 JS。据我所知,尽管如此,实际上并没有什么可以做的。您可以这样做,以便您的内容基于 JS 加载,这样如果他们尝试禁用它,他们就会遇到非常糟糕的时间。例如。通过 JS/AJAX 等提交表单
    猜你喜欢
    • 2013-08-25
    • 2010-09-13
    • 1970-01-01
    • 2014-01-23
    • 2010-09-07
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多