【问题标题】:How to access php session in javascript file?如何在 javascript 文件中访问 php 会话?
【发布时间】:2013-11-21 08:22:14
【问题描述】:

下面是我的代码:

index.php 文件

index.php 文件的javascript

function Result()
{
  var marks = 55;
  document.getElementById("hdnmarks").innerHTML= marks; 
  window.location = "results.php";
}

index.php 的 HTML

<input type="hidden" name="hdnmarks" id="hdnmarks">

说明:我有一个网址为localhost/index.php 的网页。在 index.php 中,我有一个点击提交按钮,我调用了 Result javascript 方法,该方法设置标记 = 55 并将其放入隐藏字段并带我到 results.php 页面。

results.php 中,我必须在数据库中插入标记值。但是我应该如何访问这些标记,因为它们存储在 index.php 文件的隐藏字段中?

我想在会话中添加标记,但是我应该如何在 javascript 函数中维护 PHP 会话?我的意思是在转到results.php 之前,我应该在会话中的什么位置和时间打分?

【问题讨论】:

    标签: javascript php jquery html session


    【解决方案1】:

    您可以像 &lt;?php session_start();?&gt; 这样在您的页面上开始会话,并像这样为会话创建隐藏字段

    <input type="hidden" name="mysession" id="mysession">
    

    并修改javascript函数像这样

    function Result(){
      var marks = 55;
      document.getElementById("mysession").innerHTML= <?php echo session_id();?>; 
      document.getElementById("hdnmarks").innerHTML= marks; 
      document.getElementById('Form').submit();
    }
    

    用您的表单名称更改表单名称

    【讨论】:

    • 如何在 index.php 中的这个 javascript 函数的会话中分配标记,以便我可以在 results.php 中使用该会话?
    • 使用 $_SESSION['marks'] = 55;分配任何值,但确保您的会话在页面顶部启动 session_start()。
    • 您是说我在 php 代码中的会话中设置标记,但是根据我的要求,当我使用 javascript Result 函数时,我必须做一些事情然后重定向到另一个页面。所以我必须在那个 javascript 函数中设置会话,而不是在 php 代码中。
    • 您可以在做某事后再次重新分配值但是您不需要再次启动会话。会话将在一个页面上开始一次。
    • 那么 Result 函数中的这段代码会起作用吗? 注意:我已经在 php 页面的顶部开始了会话。我只想知道我应该在哪里分配标记会话?
    【解决方案2】:

    你的问题有两个部分

    1)

    但是我应该如何访问这些标记,因为它们存储在隐藏的 index.php 文件的字段?

    标准方式是使用表单

    <form action="index.php" method=POST>
      <input type="hidden" name="hdnmarks" id="hdnmarks">
    </form>
    

    使用按钮或 javascript 提交该表单以将数据发布到 index.php

    在 index.php 中

    <?php
    
    $marks = $_POST['hdnmarks'];
    
    ?>
    

    2)

    我的意思是在搬家前我应该在课程中何时何地做标记 到results.php?你必须启动会话并创建一个会话变量

    index.php

    <?php
    session_start();
    $marks = $_POST['hdnmarks'];
    $_SESSION['marks'] = $marks;
    ?>
    

    result.php

    <?php session_start() ?>
    ...
    //javascript code
    var marks = <?php echo $_SESSION['marks'] ?>
    ...
    

    注意:这不是一种将数据从一个传递到另一个的好方法,也不是将数据从 php 传递到 javascript 的好方法,如果您使用的是数据库,那么 session 也没有用处

    【讨论】:

    • 我可以写 在我的 javascript 函数“结果”中?
    • 是的,这基本上就是我上面写的:S
    • 开始会话的标准位置是页面顶部,您不能这样开始
    • 只要它在页面顶部就没有问题 :S @nkp 哦,现在只有我得到了你的要求,不,你不能把 session_start 和函数的其余部分放在一起跨度>
    【解决方案3】:

    只需 Javascript 使用这个:

    function getCookie(name) {
      var value = "; " + document.cookie;
      var parts = value.split("; " + name + "=");
      if (parts.length == 2) return parts.pop().split(";").shift();
    }
    
    getCookie('PHPSESSID');
    

    【讨论】:

      【解决方案4】:

      我们可以从 javascript 访问 php $_SESSION,前提是访问会话的 javascript 代码包含在 .php 文件中。这种javascript代码称为内联javascript。

      //index.php

      <html>
      
        <script>
           const userId = '<?php echo $_SESSION["user_id"]; ?>'
           console.log('The user id is', userId)
        </script>
        <script src="other.js"></script>
      
      </html>
      
      

      //other.js

      console.log('Once again, the user id is', userId)
      

      将生成的 html 将包含一个已设置 userId 的脚本。 可以从内联脚本之后的其他脚本访问该变量。

      【讨论】:

        猜你喜欢
        • 2020-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-20
        • 1970-01-01
        • 2015-06-29
        • 1970-01-01
        相关资源
        最近更新 更多