如何将会话值放入javascript中?

时间:2011-07-25 17:00:45

标签: javascript

我有一个会话['密码']。我想获取会话值并使用它来验证用户的输入。

if(opw != $_session['password']){
      errors[errors.length] = "Sorry, password does not match.";
}

这是我一直在尝试的,但是如果我输入它,他们就不会阅读会话。并忽略这个条件。我如何实际将会话值插入Javascript?

6 个答案:

答案 0 :(得分:0)

您的内嵌 JavaScript代码:

var session = <?php print $_SESSION['password']; ?>;

这就是你要找的东西吗?

答案 1 :(得分:0)

您需要围绕$_SESSION中的<?php echo ?>。这会导致PHP变量打印到页面上的Javascript中。

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

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

答案 2 :(得分:0)

您必须手动回显错误:

// 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>

答案 3 :(得分:0)

请注意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
}
?>

答案 4 :(得分:0)

正如其他答案所暗示的那样,当页面是生成器时,您必须将PHP会话值嵌入到javascript中。但是其他人忘记了一件重要的事情 - 你必须生成有效的javascript,否则你的整个脚本会因语法错误而被杀死。

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

注意对json_encode的调用 - 它不仅仅足以输出密码字符串。您必须确保密码成为VALID javascript字符串,json_encode确保。

答案 5 :(得分:0)

ASP版:

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

我添加了引号,因为密码通常是一个字符串。

当用户运行此脚本时,下载到其计算机的html页面将显示密码IN PLAIN TEXT,即:

if(opw != 'BOBSPASSWORD' ){

因此,如果他们不知道或没有密码,他们可以查看/获取并找到密码。