在变量中预设密码的登录系统
Login system with password preset in variable
我是php的新手,我正在尝试制作一个登录系统,但不知何故它不起作用。我在变量中预定义了密码,并创建了一个函数来检查输入的密码是否与变量中的密码匹配。
这是我到目前为止的代码:
<?php $validkey = "Test" ?>
<script type="text/javascript">
function check_value()
{
var password = document.getElementById("password").value;
if (password == '<?php echo $validkey; ?>')
{
location.href = "tafels.html";
}
}
</script>
<input type ="text" name="password" id="password" />
<button onclick="check_value();">Login</button>
这不是登录过程应该的工作方式。首先,密码应该被散列并存储在数据库中。切勿将密码存储为明文。其次,密码验证应该在服务器端进行,在PHP文件中。
要解释为什么在前端验证密码很危险,只需检查代码的这一部分:
if(password=='<?php echo $validkey; ?>')
{
location.href = "tafels.html";
}
当服务器处理您的 PHP 脚本时,它会将有效密码回显到生成的 HTML 中。然后,该 HTML 将被发送到浏览器。假设有效密码是"p@$$w 0rd",如果您检查页面的源代码,您会发现以下内容:
if(password=='p@$$w0rd')
{
location.href = "tafels.html";
}
服务器将替换以下内容:
<?php echo $validkey; ?>
使用密码的值。每个人都可以看到这一点。一点也不安全。
为了给你一个开始,这里有一个例子,但请注意这个答案 https://stackoverflow.com/a/36883388/3799829
一个非常简单和无状态(无内存/无会话)的登录系统示例
登录.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>
相关文章:
- 在变量中预设密码的登录系统
- 如何使用已经存在的 REST API 后端在 Angular 应用程序中实现登录系统
- JS单页应用程序和基于PHP的登录系统
- PhoneGap应用程序的简单登录系统
- MEAN 堆栈上登录系统的体系结构
- 使用个人信息创建多用户登录系统
- 这个 Ajax 登录系统是否足够安全
- Node.js+Ember.js登录系统
- 有没有一种方法可以用html和javascript或jQuery创建登录系统
- 创建一个类似战网的登录系统
- 你可以在没有登录系统的情况下在Meteor中列出用户吗
- Ajax从JSON返回未定义-登录系统&最佳实践
- 正在尝试使登录系统正常工作
- 如何创建一个登录系统与流星
- 这是一个好的登录系统吗?我能改进它吗?
- 输入结束不正常"Javascript注册/登录系统
- 登录系统,使用javascript
- 我的user.php在我的登录系统不会响应
- 使用ajax和pdo的单页面登录系统
- 如何在不刷新页面的情况下使用ajax制作登录系统