Php 为客户端显示存储的会话数据时,正确的事件链是什么
我下面的链条正确吗 首先,我显示client home.php,它将创建一个会话,并将存储在$_session['name']='random_name'中,并向最终用户客户端致意: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
<?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>