我是php的新手,我正在尝试创建一个登录系统但不知何故它不起作用。我在变量中预先定义了密码,并创建了一个函数,用于检查输入的密码是否与变量中的密码匹配。
到目前为止,这是我的代码:
let parameter:[String:String] = ["register_type":"normal", "email" :"mavin5623@gmail.com","password":"password","full_name":"mavin","device_type":"ios"]
答案 0 :(得分:3)
这不是登录过程应该起作用的方式。 首先,密码应该被散列并存储在数据库中。 从不将密码存储为明文。 其次,密码验证应该发生在服务器端,在PHP文件中。
要解释为什么在前端验证密码是危险的,只需检查代码的这一部分:
if(password=='<?php echo $validkey; ?>')
{
location.href = "tafels.html";
}
当服务器处理您的PHP脚本时,它会将有效密码回显到生成的HTML中。该HTML将被发送到浏览器。假设有效密码是“p @ $$ w0rd”,如果你检查页面的源代码,你会发现这个:
if(password=='p@$$w0rd')
{
location.href = "tafels.html";
}
服务器将替换为:
<?php echo $validkey; ?>
使用密码的值。每个人都可以看到这一点。根本不安全。
答案 1 :(得分:1)
为了给你一个开始,这是一个例子,但请注意这个答案https://stackoverflow.com/a/36883388/3799829
登录系统的一个非常简单且无状态(无内存/无会话)的示例
<强>的login.php 强>
<?php
$password = 'Test';
$url = 'tafels.html';
if(isset($_POST['password']) && $_POST['password'] === $password)
{
header('Location: ' . $url);
exit;
}
?>
<html>
<head>
<title>You need a password to continue</title>
</head>
<body>
<form action="" method="POST">
<input type="password" name="password" placeholder="Password"><button type="submit">Go on !</button>
</form>
</body>
</html>