这是我为了获取用户名和密码而编写的file.php,但由于某种原因它无效。
<?php
if(isset($_GET["submit"])) {
$username = $_GET["username"];
$username = $_GET["password"];
print "Your username: $username";
print "And password: $password";
}
?>
<!DOCTYPE>
<html>
<head><title>OHO</title></head>
<body>
<form action="form.php" type="get">
Username:<input type="text" name="username"><br />
Password:<input type="password" name="password"><br />
Submit <input type="submit" value="submit">
</form>
</body>
</html>
答案 0 :(得分:4)
在第4,5行,您已将变量名称定义为$username
$username = $_GET["username"];
$username = $_GET["password"];
必须是:
$username = $_GET["username"];
$password = $_GET["password"];
下一个错误是定义表单方法:
<form action="form.php" method="get">
最终建议使用strip_tags()
来防止XSS攻击
$username = strip_tags($_GET["username"]);
$password = strip_tags($_GET["password"]);
并使用密码加密方法存储在数据库中
答案 1 :(得分:1)
首先,条件语句if(isset($_GET["submit"]))
基于命名元素,因此不会从其中执行任何操作。
<input type="submit" value="submit">
将其命名为
<input type="submit" value="submit" name="submit">
另外,$username = $_GET["password"];
需要$password = $_GET["password"];
您已为两者声明了相同的变量。
type="get"
也应该是method
而不是type
- 类型是元素而不是表单本身。
我注意到您可能正在以纯文本形式存储密码,这是不推荐的,而且非常不安全,同时通过GET方法发送该信息;使用POST。
要获得更安全的方法,请使用CRYPT_BLOWFISH或PHP 5.5的password_hash()
函数。对于PHP&lt; 5.5使用password_hash() compatibility pack
。
答案 2 :(得分:0)
根据所有其他回答,
您还应该查看 FILTER_INPUT
$username = filter_input(INPUT_GET, 'username');
$password = filter_input(INPUT_GET, 'password');
filter_input - 按名称获取特定的外部变量,并可选择过滤它
在那里,您可以验证电子邮件,根据需要对事物进行编码等等