创建某种验证规则

时间:2013-12-18 23:53:42

标签: php html forms validation

我正在尝试创建一个登录表单,允​​许用户根据他们的注册详细信息(保存在平面文件中)登录,这是我到目前为止所提出的。

此代码允许任何用户即使在注册时也无法登录。

<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");
}
}


?>

请问代码有什么问题

3 个答案:

答案 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>