Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为客户端显示存储的会话数据时,正确的事件链是什么_Php_Javascript_Html_Session_Session Cookies - Fatal编程技术网

Php 为客户端显示存储的会话数据时,正确的事件链是什么

Php 为客户端显示存储的会话数据时,正确的事件链是什么,php,javascript,html,session,session-cookies,Php,Javascript,Html,Session,Session Cookies,我下面的链条正确吗 首先,我显示client home.php,它将创建一个会话,并将存储在$_session['name']='random_name'中,并向最终用户客户端致意: <?php session_start(); $_SESSION['name'] = 'random_name'; ?> <!DOCTYPE html> <html> <head> <title></title&g

我下面的链条正确吗

首先,我显示client 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>  
现在damn.php看起来是这样的:

       <?php

          session_start();

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

你只需要

<?php

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

?>

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

变量名=;
如果您知道在网页中需要特定的会话数据,并且在生成网页时这些数据是可用的,那么只需嵌入这些数据即可。您想要进行AJAX调用以获取数据的唯一时间是,您认为会话中的数据可能在您实际需要它出现在javascript代码中之前就已经更改了


session\u start()
在您希望使用$\u session保存/检索数据的任何位置都是必需的。如果特定页面不需要修改或访问会话数据,那么您根本不需要
session\u start()

您只需要在使用$\u session的PHP文件中使用session\u start()。大多数PHP应用程序倾向于有一个文件(如header.PHP),它包含在所有PHP文件的顶部,header.PHP将有session_start。我的应用程序不太使用会话,所以我不这么做。事实上,我和你一样做,我不明白为什么不。除了我使用jQuery,所以AJAX代码就不那么冗长了。哦,您应该使用json_encode-它将PHP数据转换为json(json基于JavaScript对象,语法相同,仅限于数据)。将PHP代码嵌套在JavaScript中是不对的。。。您应该编写一个编译器来完成这类工作,或者使用AJAX根据需要获取JSON以获得更大的数据集。@spencer:嗯,为什么不这样做?php将在服务器上执行,当需要解析javascript时,浏览器将永远看不到它。@Marc B:这是不对的,因为随着时间的推移,这种代码变得难以管理。将PHP标记放在JavaScript中是令人困惑的,即使PHP编码者也是JavaScript编码者。这样做的越多,在离开几天或更长时间后,再回来阅读和理解JavaScript代码就越困难。由于每当模式重复时问题就会恶化,我们称之为反模式。编辑:出于同样的原因,您不应该在HTML或CSS代码中放置PHP标记,尽管这是PHP如此流行的一个原因。@spencer:在某些情况下,代码必须与输出支架混合在一起。这是绝对不可避免的。您可以随意推荐一个模板系统,但是您只是将原始PHP代码替换为其他一些编程语法,并最终导致相同的问题。我不会为了保持某人对代码纯度的看法而用额外的垃圾层“污染”一个简单的例子。@Marc B:不同的编程语言应该使用文本流进行通信。在PHP和JavaScript的情况下,流可以是HTTP或Web套接字协议(尽管Web套接字还没有得到很好的支持)。您得到的文本类型绝对正确-JSON。
       <?php

          session_start();

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

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

?>

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