我有一个显示密码字段的表单,当表单发布时,我在页面的onload期间调用了一个javascript函数 - 当我检索密码字段时,它从未输入我输入的密码,它是空的。如果我正在尝试访问已发布表单的内容,那么从onload调用javascript函数是否有错误的方法?
<!DOCTYPE html>
<html>
<script type="text/javascript">
function checkPwd()
{
// okay the form was posted and we got called from onload, now get the post'd password
var thePwd = document.getElementById("theUsersPassword").value;
alert("the var thePwd is: " + thePwd);
}
</script>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Beta:</title>
</head>
<body onload="checkPwd()">
<form method="post" action="index.php">
Beta: <input id="theUsersPassword" name="usersPassword" type="password"><br/>
<input type="submit" value="Submit" />
</form>
</body>
</html>
答案 0 :(得分:3)
我猜你不想检查输入onload,你想在表单提交时检查它吗?因为在onload上,用户还没有机会输入任何内容。
如果您想在提交时执行此操作,只需将表单标记更改为:
<form method="post" action="index.php" onsubmit="checkPwd()">
答案 1 :(得分:2)
那是因为元素不再存在了。 Javascript只能在一个页面上运行,所以如果你这样做
document.getElementById('passwordform');
它找不到它,因为没有带有该ID的元素。 您可以通过将密码存储在cookie中或通过LocalStorage api检索它来在javascript中执行此操作,但我甚至不会告诉您如何执行此操作,因为它不安全。
Javascript是一种客户端语言,因此您在其中编写的任何代码都会被发送到浏览器。这意味着每个用户都可以查看和操作您的代码。
您应该使用服务器端语言,例如PHP。
在php中,您可以简单地将值与您期望的密码进行比较。
有两种方法可以将数据从表单发送到服务器:使用POST方法或使用GET方法。 Get方法用于发送支持者信息,并以
的形式附加到URLexample.com?variable=value
这对于需要安全的信息并不是一个好主意,并且因为url具有最大长度(对于不同的浏览器而言是不同的),所以当您发送密码信息时,您应该使用POST方法。
因此,您的登录表单可能如下所示
<form action='securedpage.php'>
<label>enter your password: <input type='password' name='pass'></label>
<input type='submit'>
</form>
现在,在securedpage.php中,您可以执行以下操作:
<?php
$expected_pass="!4mr00t";
if($_POST['pass']===$expected_pass){
//show your content
}els{
//show homepage
}
?>
答案 2 :(得分:1)
我可能错了,但这通常不是用PHP完成的吗?
<?php
if (isset($_POST['variable'])) {
$first = $_POST['variable'];
echo $first;
}
?>
<form action="" method="POST">
<input type="password" name="variable" />
<input type="submit" />
</form>
此代码会吐出输入表单的密码。
答案 3 :(得分:1)
您无法从JavaScript访问POST数据字段。
您所做的就是阻止真实表单提交并从表单中获取数据。
form.onsubmit = function () { checkPwd(); return false; };
或者,如果您尝试进行某种验证,则需要从checkPwd
返回一个布尔值并执行form.onsubmit = checkPwd
答案 4 :(得分:1)
试试这个:
<form method="post" action="index.php" onsubmit="return checkPwd()">
checkPwd()
必须返回false
以避免提交(如果有任何问题)o true
来执行操作(如果每件事都是正确的话)。