【问题标题】:JavaScript / PHP / Ajax set multiple session variablesJavaScript / PHP / Ajax 设置多个会话变量
【发布时间】:2013-08-06 16:04:44
【问题描述】:

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

我正在尝试使用 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 的帮助下计算。

【问题讨论】:

  • 伙计,我建议您将 php 变量保存到隐藏的 div 中。然后,您可以轻松地使用和更新这些值,而且更干净!
  • 我认为使用隐藏的 div 不会给您的应用程序带来问题。我看不出有什么原因。它们不占用空间,就像它们不存在一样,它们只是保持价值。

标签: php javascript ajax session-variables


【解决方案1】:

您必须使用与号 (&) 连接参数。

使用这条线

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

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

【讨论】:

  • 感谢您的帮助。 index.php ------ if ((empty($_SESSION['function1Val'])) &amp; (empty($_SESSION['function2Val'])) &amp;&amp; (empty($_SESSION['jsStatus']))) 中的这一行以及代码的其他部分呢?
  • 我不太明白这个问题。您是在问更清洁的解决方案是什么?一个简单的技巧是在 PHP 中创建一个数组,其中键是变量名,值是这些变量的 JS 代码。
  • 但是然后使用良好的防护措施来防止 XSS 注入(例如,避免使用预定义的函数名称而不是纯 Javascript 代码)。如果真的需要,我明天可以提供一个例子。
  • 您好,再次感谢。非常感谢带有代码的说明性示例。正如我所提到的,我是编程新手,仍在学习过程中。请帮助我使用我的问题中的代码作为示例。这对我真的很有帮助。我想知道我需要在我的代码中进行哪些更改以及我需要进行哪些更改。也没有涉及到用户输入,我还需要检查 XSS 注入吗?
猜你喜欢
  • 2018-04-04
  • 2017-07-08
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2016-11-12
  • 2015-04-07
  • 2016-03-12
  • 1970-01-01
相关资源
最近更新 更多