我正在尝试在php脚本中设置会话变量并获取变量 一个javaScript。
在php程序中我放了一个echo命令来查看变量 生成。什么都没发生。
在javascript中我尝试将变量写入屏幕,但我什么都没看到。如果我在get命令周围放置单引号,我只是显示该命令。
PHP:
$full_name = $_POST['Full_Name']; // required
$names = explode(" ", $full_name);
$_SESSION['myvar'] = $names[0];
echo ($names[0]);
的javascript:
<script type="text/javascript">
var name = @Session["myvar"];
document.write(name);
</script>
答案 0 :(得分:0)
用PHP编写JavaScript ...嗯...作为一个程序员,继承了其他程序员这样做的代码......请不要。当你开始混合语言时,很难看到发生了什么。
关于你的实际问题......一般来说,你把东西放入你想要保密的会话中,或者你已经正确保护的东西,比如谁登录的用户ID值,这样当他们转到下一页,您在会话中看到用户ID,并且您信任该数据,因为它来自您的服务器而不是用户。 POST,GET和COOKIE数据不安全,因此您不相信用户发送给您的内容。
在任何情况下,对于您希望PHP和Javascript都可访问的内容,如果您不使用Web服务,我建议使用Cookie可能是更好的做法。
setcookie('FirstName',$_SESSION['myvar']);
http://php.net/manual/en/function.setcookie.php
不可否认,使用JavaScript获取cookie值本身就很痛苦,但是人们已经为你编写了代码,所以它不应该那么痛苦:
function getCookie(name) {
var value = "; " + document.cookie;
var parts = value.split("; " + name + "=");
if (parts.length == 2) return parts.pop().split(";").shift();
}
var name = getCookie('FirstName');
[编辑] 我还会说另一张海报的answer,将其放入HTML中的数据属性中,也是一种很好的做法,比写入JS更清晰直接
<body data-first-name="<?php echo htmlspecialchars($firstName) ?>">
答案 1 :(得分:0)
如果要使PHP可扩展,在JS脚本中直接使用PHP实际上并没有用。
像这样使用
myprintoutscript.js
function writeOnDocument(name){
document.write(name);
}
在大多数情况下,最好使用变量从外部调用js函数(在您的情况下是会话)
的index.php
<script>
//referencing to function in myPrintOutScript.js
writeOnDocument("<?= $_SESSION['myvar'] ?>");
</script>
或读出html数据属性,例如正文
的index.php
<body data-session-name="<?= $_SESSION['myvar'] ?>">
并从脚本中调用它:
windowIsLoadedScript.js
var body = document.getElementsByTagName("BODY")[0],
name = body.getAttribute("data-session-name");
//referencing to function in myPrintOutScript.js
writeOnDocument(name);
将事物分开的越多,就越容易使构建块相互叠加。
答案 2 :(得分:-1)
在php文件的开头写session_start();
。
然后将变量捕获到这样的js中。
<script type="text/javascript">
var name ="<?php echo $_SESSION['myvar'];?>";
document.write(name);
</script>