0

我的以下链条是否正确?

首先,我显示客户端 home.php,它将创建一个会话并将存储在 $_SESSION['name'] = 'random_name' 中,并将问候最终用户客户端:

<?php
  session_start();
  $_SESSION['name'] = 'random_name';
?>


 <!DOCTYPE html>
 <html>
  <head>
        <title></title>
  </head>
  <body>
        <h1>Greeting</h1>
        <a id="1" href="index.php">link</a>
  </body>
  </html>  

然后我将按下链接,该链接将带我到第二页 index.php,它将带我到另一个页面,在页面内的某些逻辑将被执行后,该页面将为用户显示 $_SESSION['name'] 内的值如下面所描述的:

 <?php
    session_start();
  ?>
  <!DOCTYPE html>
  <html>
  <head>
        <script src="test.js"> </script>
        <title></title>
   </head>
   <body>
       <p id="para"></p>
       <input type="button" onclick="checkAuth()" value="submit">
   </body>
   </html>

现在,当我按下按钮时,它将激活 test.js 中的 checkAuth() 函数,该函数将通过使用 AJAX 从服务器端(damn.php)检索 SESSION ['name'] 中的值:

 function checkAuth()
 {
       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)
       {
          var response = xmlhttp.responseText;
          document.getElementById("para").innerHTML = response;
       }
   }

    xmlhttp.open("POST","damn.php",true);
    xmlhttp.send();
 }

现在该死的.php 看起来像这样:

       <?php

          session_start();

          if (isset($_SESSION['name'])) {
                   echo $_SESSION['name'];
          }

我的问题是,为了向客户端显示 $SESSION 中的项目,最简单的方法是这样的吗?

有没有更简单的方法根本不使用 javascript?在每个页面中插入 session_start() 是否也正确?还是只从我想检索 SESSION['items'] 的页面?

4

1 回答 1

0

你可以很简单地拥有

<?php

session_start();
$_SESSION['name'] = 'foo';

?>

<script type="text/javascript">
var name = <?php echo json_encode($_SESSION['name']) ; ?>;
</script>

如果您知道在网页中需要特定位的会话数据,并且该数据在您生成页面时可用,那么只需嵌入该数据。唯一一次您想要进行 AJAX 调用来获取数据是您认为会话中的数据可能在您在 javascript 代码中真正需要它之前已经更改。

session_start()在您想使用 $_SESSION 保存/检索数据的任何地方都需要。如果特定页面不需要修改或访问会话数据,那么您根本不需要session_start()

于 2013-07-02T15:09:15.337 回答