如何将会话值放入javascript中?

如何将会话值放入javascript中?,javascript,Javascript,我有一个会话['password']。我希望获得会话值,并使用它根据用户的输入进行验证 if(opw != $_session['password']){ errors[errors.length] = "Sorry, password does not match."; } 这是我一直在尝试的,但是如果我输入这个,他们不会阅读会话。忽略这些条件。如何将会话值实际插入Javascript?您的内联Javascript代码: var session = <?php print

我有一个会话['password']。我希望获得会话值,并使用它根据用户的输入进行验证

if(opw != $_session['password']){
      errors[errors.length] = "Sorry, password does not match.";
}
这是我一直在尝试的,但是如果我输入这个,他们不会阅读会话。忽略这些条件。如何将会话值实际插入Javascript?

您的内联Javascript代码:

var session = <?php print $_SESSION['password']; ?>;
这就是您要寻找的吗?

您需要在中围绕$\u会话。这将导致PHP变量被打印到页面上的Javascript中

if(opw != <?php echo $_SESSION['password']; ?> ){

然而,这是一种非常不安全的检查密码的方法,我建议不要使用它。如果未通过SSL传输,密码将在每个页面视图上以纯文本形式发送。此外,它可能会被web浏览器缓存,任何有权访问计算机的人都可以在其中读取它。

您必须手动实际回显错误:

// do all of your validation and add all of the errors to an array.
if($opw != $_session['password']){
     $errors[] = "Sorry, password does not match.";
}

echo "<script type=\"text/javascript\">var errors =  ".
          json_encode( $errors ).";</script>";
然后,稍后:

<script type="text/javascript">alert(errors)</script>

请注意,PHP与JS完全不同。PHP是一种服务器端编码语言,这意味着当您的服务器呈现请求的页面时,就会执行它。在包含一些HTML的页面中,也可以有JS。但是,JS无法以您认为的方式连接到PHP。为此,您可以使用Ajax或其他东西,但对于您试图实现的目标来说,这太复杂了

你可能想要这样的东西

// eg. index.php or something
...
<?php
session_start();
if ($_POST['password'] == 'somePassYouDefined') {
    echo 'Authenticated';
}else if (isset($_POST['password'])) {
    echo 'Couldn\'t authenticate ...';
}else {
    ?>
    <form method='post'>
        <input type='password' name='password' placeholder='Password' />
        <input type='submit' />
    </form>
    <?php
}
?>

正如其他答案所建议的,在生成页面时,必须将PHP会话值嵌入javascript。但是其他人已经忘记了一件重要的事情——您必须生成有效的javascript,否则您的整个脚本将被语法错误杀死

if (opw != <?php echo json_encode($_SESSION['password']) ?>) {
请注意对json_encode的调用——这还不足以输出密码字符串。您必须确保密码成为有效的javascript字符串,json_encode确保了这一点。

ASP版本:

if(opw != '<%=Session("password")%>' ){

所以,如果他们不知道或没有密码,他们可以查看/查找密码。

不要在会话中存储密码,只在登录时使用密码。在服务器上验证此操作。在会话中存储密码不是一个好主意!同意。我可以用一个js控制台进入那里,所有主要的浏览器都有它们,并获取密码。这需要是服务器端操作。@3跳过是什么意思?在页面上查看源代码。你看到$\u会话中的密码了吗?实际上我的函数跳过了那一行,但是我刚刚解决了它,看起来我搜索不够努力。对不起。这是我的答案。var oldpass=@3cross所以这个问题不是PHP标记的,而是Aspagh!我没有意识到它的ASP,只是做了一些测试,难怪它不能工作。波顿:我的无知。
if(opw != 'BOBSPASSWORD' ){