PHP Session只使用一个PASSWORD字段(没有用户名)?

时间:2011-06-19 19:23:56

标签: php mysql html session login

我一直在网上搜索有关创建脚本的好教程,该脚本允许某人使用“输入密码”字段,然后继续允许他们访问某些PHP页面。

我只能找到同时使用USERNAME和PASSWORD的教程(例如this tutorial - 但我只是在寻找安全的东西,但只使用一个字段进行身份验证。

作为初学者,我唯一的想法是隐藏“用户名”字段,并使用实际用户名的值。我不确定这是多么安全,因为我听说隐藏字段是危险的,因为它们可以被利用?

我知道SQL注入,所以我希望找到一些至少足够强大的东西。

4 个答案:

答案 0 :(得分:5)

HTML:

<form action='login.php' method="post">
  Password: <input type="password" name="password">
</form>

的login.php

<?php
// this password may come from any source.
// it's a variable for the sake of simplicity

$password = 'verySecretStuff';

if($_POST['password'] == $password){
  //handle login
}else{
  // handle no login
}
?>

答案 1 :(得分:3)

如果您只想使用密码而不是用户名+密码组合,则只需在教程中省略用户名部分,因此登录将如下所示:\

<?php
$password = 'unsafepassword1'; // received from a form post or whatever
$password = md5($password);

// Looking if this password is a valid password in the DB
$query = 'SELECT * FROM valid_passwords WHERE password = \''.$password.'\'';
IF(mysql_num_rows(mysql_query($query) == 1){
// user logged in
}
ELSE
{
// password was invalid
}

答案 2 :(得分:1)

只需在HTML中输入一个(您根本不需要用户名):

<input type="password" name="password" />

正常查询数据库,只为密码:

$password = $_POST["password"];
$result = mysql_query("SELECT password FROM passwords WHERE password='" . some_hash_function($password) . "'");
if(mysql_num_rows($result) > 0) {
    //There was a match
}

更新(根据对问题的评论)

如果您只想使用一个众所周知的密码来访问多个用户,只需将密码存储在PHP脚本中:

$password = "thePassword";
if(strcmp($password, $_POST["password"])) {
    //Matched
}

请注意,这不是特别安全......密码在脚本中以纯文本形式存储。但是,由于您似乎希望多人知道密码,这可能是最简单的选择。我仍然建议使用数据库来存储单个密码。

答案 3 :(得分:0)

嗯,关于它的坏处是,使用用户名和密码,你必须知道组合,用户密码,只有密码,它更容易找到,很多用户只会设置一些愚蠢的密码,如:654321或出生日期等等。

关于隐藏字段,请避免使用它们,但如果确实需要它,请改用会话。