当前位置: 首页 > 知识库问答 >
问题:

JavaScript/PHP/Ajax设置多个会话变量

郑博
2023-03-14

你好,朋友,一个新手问题。我是编程新手,所以请温柔一点。

我试图使用JavaScript发布多个会话变量,这样我就可以在以后的PHP中的多个地方使用它们。

我的index.php文件

<?php
   session_start();
?>
<!DOCTYPE html>
<html>
   <head>
      <title></title>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <?php 
         if ((empty($_SESSION['function1Val'])) & (empty($_SESSION['function2Val'])) && (empty($_SESSION['jsStatus']))) {
            echo '<script type="text/javascript" src="vals.js"></script>
            <script type="text/javascript">
            var session=false;
            var jsStatus;
            var function1Val;
            var function2Val;
            </script>';
         } else {
            echo '<script type="text/javascript"> 
            var session=true; var jsStatus=' . $_SESSION['jsStatus'] . ';
            var session=true; var function1Val=' . $_SESSION['function1Val'] . ';
            var session=true; var function2Val=' . $_SESSION['function2Val'] . ';
            </script>';
         }
      ?>
   </head>
   <body>
    <?php

echo $jsStatus;
echo $function1Val;
echo $function2Val;

session_destroy ();
         ?>
   </body>
</html>

我的vals.js文件

window.onload = function() {
    // if there is no session (session = false)
    if (!session) {

        // Set value to variable jsStatus
        jsStatus = 'enabled';

        // Call function to get function1
        function1();

        // Call function to get function2
        function2();

        // Make ajax call to php page to set the session variable
        setSession();
    }
}

function function1() {

    // code to get value goes here
    function1Val = 'result1';
}

function function2() {

    // code to get value goes here
    function2Val = 'result2';
}

function setSession() {
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        // Reload the page
        window.location.reload();
        }
      }
    xmlhttp.open("POST","session.php?function1Val=" + function1Val,true);
    xmlhttp.send();

    // like this I want to transfer other values of 'function2Val' and 'jsStatus'
}

我的session.php档案

<?php
    session_start();

    // check if it is already set if you like otherwise:
    $_SESSION['function1Val'] = $_REQUEST['function1Val'];
    $_SESSION['function2Val'] = $_REQUEST['function2Val'];
    $_SESSION['jsStatus'] = $_REQUEST['jsStatus'];
?>

我知道代码很乱,但我不知道如何编写正确的语法。我实际上试图修改一个变量代码,但失败了。因此需要帮助。

其思想是将从各种JavaScript函数派生的各种值发布到会话中,供PHP使用。

请帮忙。

更新:

必须采用这种方式,因为上述变量的值只能在JavaScript的帮助下计算。

共有1个答案

孔光赫
2023-03-14

您必须用一个与符号连接参数(

用这条线

xmlhttp.open("POST","session.php?function1Val=" + function1Val+"&function2Val=" + function2Val+"&jsStatus=" + jsStatus,true);

顺便说一句:我真的建议对AJAX请求使用jQuery或类似的库。此外,我将使用JSON交换数据或Javascript数组,其中键名是变量的名称。

 类似资料:
  • 问题内容: 是否可以使用Javascript设置PHP会话变量? 问题答案: 在JavaScript中: 在session_write.php文件中: 在HTML中:

  • 问题内容: 我要为已经在同一域/服务器上运行另一个PHP应用程序的网站构建一个PHP应用程序。我的应用程序当然将使用会话,并且我不希望我的会话干扰现有的应用程序。例如,如果我想使用$ _SESSION [‘username’],也许另一个应用程序也使用$ _SESSION [‘username’],这可能是个问题。我不是在寻找额外的安全层,我相信与之共享主机的应用程序。我只想避免错误。 一种方法是

  • 我是使用会话变量的新手,尽管我在网上搜索了解会话变量,但我一直在苦苦挣扎。 所以基本上我有一个页面(search.php)。我加载一个基于搜索表单的动态数据表。加载表后,我通过AJAX执行以下操作: 正如您在Success和单击table row记录时所看到的,我的想法是通过AJAX发布一个变量以供以后使用。并将用户重定向到update.php页面。 然后,我希望使用发布的AJAX变量在sessi

  • 我想设置会话点击链接,所以登录后,用户将重定向到上次访问的页面。 例如: 步骤1:用户打开主页。(seesion url设置为主页 第二步:下一步在新选项卡中,用户将打开联系人页面(再次会话变量重置) 第三步:用户进入首页,点击登录链接。(因为没有重新加载页面,所以没有设置会话) 第四步:登录后,用户将重定向到联系人页面。 但这里我想要用户被重定向到用户点击链接登录的地方。 我试着用下面的代码,但

  • 问题内容: 我有一个使用AJAX加载新php文件并更新显示的单页网站。 我从主页开始php会话,但是当我使用ajax更新内部html时,我需要这些会话变量来加载新的php文件。 这篇文章与此类似:PHP会话变量未保留。但是我检查了一下,我的php.ini有 主页PHP: 在用户输入之后,我使用ajax调用php文件并加载页面的一个小节: 有人可以告诉我我缺少哪些重要步骤吗?谢谢。 更新: 在主页和

  • 我有一个一页的网站,使用AJAX加载新的php文件和更新显示。 UPDATE:在将session_id()调用添加到主页面和子页面之后,我看到两个页面都有相同的session_id。然而,它仍然不能拉出会话变量,如果我给它赋值,两个同名会话变量将保持相互独立。 这个问题产生的问题的答案:我发现我必须在php.ini文件中设置一个静态session_save路径。对于大多数付费的webhosting