如何将会话值放入javascript中

How do I put a session value into a javascript?

本文关键字:javascript 会话      更新时间:2023-09-26

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

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

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

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

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

注意对json_encode的调用——它不仅仅是输出密码字符串。您必须确保密码成为一个VALID javascript字符串,json_encode可以确保这一点。

你的内联 JavaScript代码:

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

这是你想要的吗?

您需要将$_SESSION包围在<?php echo ?>中。这会导致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
}
?>

ASP版本:

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

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

当用户运行此脚本时,下载到他们计算机上的html页面将以明文显示密码,即:

if(opw != 'BOBSPASSWORD' ){

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