【问题标题】:How to restrict $_SESSION[] using Javascript?如何使用 Javascript 限制 $_SESSION[]?
【发布时间】:2015-05-16 10:06:02
【问题描述】:

当我调用 users 函数时,我只想获得 $_SESSION["yetki"] 值,实际上我正在获得价值,但即使用户等于 student,我也总是获得 "manager" 价值。

 <script>
    function users(tik) {
        var user = tik.id;
        if(user === "student")
        {   
            <?php $_SESSION["yetki"]="student";   echo $_SESSION["yetki"];  ?>
        } 
        else ()
        {
            <?php $_SESSION["yetki"]="manager";   echo $_SESSION["yetki"];  ?>
        }
    }
</script>

【问题讨论】:

    标签: javascript php session


    【解决方案1】:

    您所做的完全错误,您正在混合客户端和服务器端代码,javascript 是客户端代码,php 是服务器端语言。在您的 if else 条件下,您需要向服务器发送请求以设置该会话变量。要向服务器发送请求,您可以使用 ajax。

    【讨论】:

    • 感谢您的回答,但到目前为止,我在 javascript 中多次使用 php。我没有得到关于客户端和服务器端的任何问题。
    • @HAKANMAZI 那么幸运的是它成功了php 代码将在服务器上执行,然后发送到执行 js 代码的客户端。 php 代码不知道 js 的 if 子句,并且该会话始终为 manager
    • 可能你是对的兄弟,所以我想我必须学习ajax,再次感谢
    【解决方案2】:

    实际上,您对 PHP 和 JavaScript 的所有基本理解都是错误的。当该脚本已经在客户端的 Web 浏览器中运行时,Php 脚本已经被处理/执行并回显到文档正文中。

    这是它的工作原理。当您请求一个 Php“页面”时,服务器将执行该页面中的每个 Php 脚本并生成响应。该响应将是您的网络浏览器将执行的响应。

    例如,如果你这样做:

    <script>
    if (<?Php echo "true"; ?>) { alert ( 'The server said true' ); }
    else { alert ( 'The server didn't say anything' ); }
    </script>
    

    您将在网络浏览器中看到的是:

    <script>
    if (true) { alert ( 'The server said true' ); }
    else { alert ( 'The server didn't say anything' ); }
    </script>
    

    Php 所做的是为网页创建动态内容并将其发送回客户端。然后,客户端的 Web 浏览器将执行该生成内容的结果。一旦您请求网页,Php 代码就会全部执行 - 该过程全部发生在服务器中。另一方面,JavaScript 会在客户端收到网页后执行。

    事实上,“回声”是对 Php 所做工作的一个很好的描述性术语。当您在浏览器的地址栏中键入网址并按 Enter 键时,您正在向服务器发送请求。一旦它“命中”服务器,它将以 HTML 的形式“回显”响应。然后,您的 Web 浏览器将读取该 HTML,其中包括从 Javascript 到 CSS 的所有内容。是的,您甚至可以回显 HTML 元素和 Javascript 内容的完整组合。您甚至可以回显整个文档正文。

    例如:

    <?Php
    echo
    <<<YOURCONTENT
    <HTML>
    <HEAD></HEAD>
    <BODY>You're gonna love my body.</BODY>
    </HTML>
    YOURCONTENT;
    ?>
    

    您应该首先验证 $_SESSION["yetki"] 的内容是什么。

    <?Php
    if(your conditions here)
    $_SESSION["yetki"]="student";
    else
    $_SESSION["yetki"]="manager";
    ?>
    <script>
    function users(tik) {
       var user = tik.id;
       if(user === "student")
       {   
           alert('<?php echo $_SESSION["yetki"];  ?>');
       } 
       else
       {   // I DON'T KNOW WHAT YOU'RE TRYING HERE, BUT LET'S DO AN ALERT.
           alert('<?php echo $_SESSION["yetki"];  ?>');
       }
    }
    </script>
    

    php if 语句的可能条件:

    $_POST['yourFormInputName'] == 'yourRogueValue'
    

    $_GET['yourURLVariableName'] == 'yourRogueValue'
    

    $_SESSION['perhapsAnotherStoredSession'] == 'yourRogueValue'
    

    【讨论】:

      【解决方案3】:

      你可以做这样的事情..但不知道这是一个好的答案

      <script>
      function users(tik) {
          var user = tik.id;
          if(user === "student")
          {   
              var aa = "<?php $_SESSION["yetki"]="student";   echo $_SESSION["yetki"];  ?>"
          } 
          else
          {
              var aa = "<?php $_SESSION["yetki"]="manager";   echo $_SESSION["yetki"];  ?>"
          }
          alert(aa);
      }
      
      </script>
      

      【讨论】:

      • 谢谢,是的,当用户等于学生时这是正确的,警报在客户端给我学生,但是当我在服务器端(php)使用 $_SESSION["yetki"] 时,我一次又一次地得到经理.我也不知道ajax,所以我真的不知道如何解决这个问题:)
      • 最好在ajax php页面中调用ajax并设置session。
      猜你喜欢
      • 2013-03-08
      • 1970-01-01
      • 2017-12-12
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      相关资源
      最近更新 更多