我正在尝试创建一个登录表单,允许用户根据他们的注册详细信息(保存在平面文件中)登录,这是我到目前为止所提出的。
此代码允许任何用户即使在注册时也无法登录。
<html>
<body>
<table align="center">
<tr>
<th><h3>MY ACCOUNT</h3></th>
</tr>
<form action = "index.php" method = "POST">
<tr>
<td>Username:</br><input type="text" name="username"></br></td>
</tr>
<tr>
<td>Password:</br><input type="password" name="password"></br></td>
</tr>
<tr>
<td align = "center"><input type="submit" name = "submit"></td>
</tr>
</form>
</table>
<?php
if (isset($_POST['submit'])){
$username = $_POST['username'];
$password = $_POST['password'];
$file = file_get_contents("data.txt");
if(empty($_POST['username']) || empty($_POST['password'])){
die (print '<script> alert ("You must enter both your username and password to continue."); window.location="index.php"; </script>');
}
if(!strstr($file, "$username#$password")) {
die(print '<script> alert ("Wrong"); window.location="index.php"; </script>');
}
else {
header("Location: wacc.php");
}
}
?>
请问代码有什么问题
答案 0 :(得分:1)
在您的其他帖子here中,您被建议使用名为PHP Login的脚本。如果你遵循这个建议,这将有助于解决你的许多问题。
答案 1 :(得分:1)
我建议您将strstr
更改为strpos
函数,这是检查字符串是否出现所需的函数,并且正常工作。
所以:
if(!strstr($file, "$username#$password")) {
要:
if(strpos($file, "$username#$password") === false) {
注意===,它必须是假的,而不是0或''。有关详细信息,请参阅http://www.php.net/function.strpos
修改强>
登录总是大部分时间都是正确的,因为发生的事情是您在文本文档中搜索指定的字符串是否正在发生。现在,如果你将两个字段$ username和$ password留空,那么它将是真的(文本文档中是否有#?是的。)这也适用于你写一个有效的部分用户名或密码。
我建议您重新考虑此登录系统,并使用PHP数组或数据库来匹配有效的用户名和密码。如果您只想为访问者添加一个简单的凹凸,请尝试添加分隔符。
在您的用户名和密码列表中,例如:
#username#password#
并作为strpos功能
if(strpos($file, "#$username#$password#") === false) {
通过添加#之前和之后,您的脚本始终指出用户名必须从哪里开始并且必须结束,并且密码相同。如果用户名太短,太长或空了,那么无论如何都会添加#并且strpos会出错(在列表中是否有###?不。)。
答案 2 :(得分:0)
你可以改用facebook登录。
我不认为平面文件登录可能是完全安全的。 /耸肩。
Facebook虽然非常简单,但却是一家价值数十亿美元的公司,它让程序员尽可能地保证安全。根本不需要担心安全问题。
<?php
require 'fbconfig.php'; // Include fbconfig.php file
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<title>Login with Facebook</title>
<link href="http://www.bootstrapcdn.com/twitter-bootstrap/2.2.2/css/bootstrap-combined.min.css" rel="stylesheet">
</head>
<body>
<?php if ($user): ?> <!-- After user login -->
<div class="container">
<div class="hero-unit">
<h1>Hello <?php echo $fbuname; ?></h1>
<p>Welcome to "facebook login" tutorial</p>
</div>
<div class="span4">
<ul class="nav nav-list">
<li class="nav-header">Image</li>
<li><img src="https://graph.facebook.com/<?php echo $user; ?>/picture"></li>
<li class="nav-header">Facebook ID</li>
<li><?php echo $fbid; ?></li>
<li class="nav-header">Facebook Username</li>
<li><?php echo $fbuname; ?></li>
<li class="nav-header">Facebook fullname</li>
<li><?php echo $fbfullname; ?></li>
<div><a href="<?php echo $logoutUrl; ?>">Logout</a></div>
</ul></div></div>
<?php else: ?> <!-- Before login -->
<div class="container">
<h1>Login with Facebook</h1>
Not Connected
<div>
<a href="<?php echo $loginUrl; ?>">Login with Facebook</a></div>
</div>
<?php endif ?>
</body>
</html>