我有一个会话['密码']。我想获取会话值并使用它来验证用户的输入。
if(opw != $_session['password']){
errors[errors.length] = "Sorry, password does not match.";
}
这是我一直在尝试的,但是如果我输入它,他们就不会阅读会话。并忽略这个条件。我如何实际将会话值插入Javascript?
答案 0 :(得分:0)
您的内嵌 JavaScript代码:
var session = <?php print $_SESSION['password']; ?>;
这就是你要找的东西吗?
答案 1 :(得分:0)
您需要围绕$_SESSION
中的<?php echo ?>
。这会导致PHP变量打印到页面上的Javascript中。
if(opw != <?php echo $_SESSION['password']; ?> ){
然而,这是一种非常不安全的检查密码的方法,我建议不要使用它。如果不通过SSL传输,密码将在每个页面视图上以纯文本形式发送。此外,它可能会被Web浏览器缓存,任何有权访问该计算机的人都可以阅读它。
答案 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' ){
因此,如果他们不知道或没有密码,他们可以查看/获取并找到密码。