Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话只使用一个密码字段(没有用户名)?_Php_Mysql_Html_Session_Login - Fatal编程技术网

PHP会话只使用一个密码字段(没有用户名)?

PHP会话只使用一个密码字段(没有用户名)?,php,mysql,html,session,login,Php,Mysql,Html,Session,Login,我一直在网上搜索关于创建脚本的好教程,该脚本允许用户使用“输入密码”字段,然后允许用户访问某些PHP页面 我只能找到同时使用用户名和密码的教程(例如-但是我只是在寻找安全的东西,但只使用一个字段进行身份验证) 作为一个初学者,我唯一的想法就是用实际用户名的值隐藏“username”字段。我不确定这样做有多安全,但是,正如我听说的那样,隐藏字段是危险的,因为它们可以被利用 我知道SQL注入,所以我希望找到至少足够强大的SQL注入。只需在HTML中输入一个输入(您根本不需要用户名): 并正常查询数

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

我只能找到同时使用用户名和密码的教程(例如-但是我只是在寻找安全的东西,但只使用一个字段进行身份验证)

作为一个初学者,我唯一的想法就是用实际用户名的值隐藏“username”字段。我不确定这样做有多安全,但是,正如我听说的那样,隐藏字段是危险的,因为它们可以被利用


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

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

并正常查询数据库,只需输入密码:

$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
}

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

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

并正常查询数据库,只需输入密码:

$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
}

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

如果您只想使用密码,而不是用户名+密码mbinion,您只需在教程中省略用户名部分,因此登录方式如下:\

<?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
}

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

<?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
}
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
}
?>
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
}
?>

好吧,它的缺点是,使用用户名和密码,你必须知道密码的组合,用户密码,只有密码,很容易找到,很多用户只会设置一些愚蠢的密码,比如:654321或出生日期之类的


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

好吧,它的缺点是,对于用户名和密码,您必须知道组合,用户密码,只有密码,更容易找到,许多用户只会设置一些愚蠢的密码,如:654321或出生日期等帽子


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

您可以省略用户名字段吗?您可以向我们显示代码吗?根本没有用户名字段!将哈希密码存储在数据库中,并将用户输入的哈希值与存储在数据库中的值进行比较。如果匹配,你可以访问。你的意思是你只有一个密码,你想让别人知道吗?Sinan,是的,这正是我想做的。你可以省略用户名字段吗?你能给我们看一下代码吗?只是根本没有用户名字段!将哈希密码存储在数据库中,然后再比较用户输入的哈希值输入存储在数据库中的值。如果匹配,则允许您访问。您的意思是您只有一个密码,您想让知道它的人知道吗?Sinan,是的,这正是我要做的。使用===运算符也是一个好主意。看起来运算符比strcmp()之类的函数快一点。但是这不应该是一个问题。使用===运算符也是一个好主意。运算符似乎比strcmp()之类的函数快一点。但是这不应该是一个问题。这并不能特别回答这个问题。这似乎很疯狂,但我也有客户要求我提供此功能。我通常告诉他们这是一个愚蠢的想法,然后无论如何都要为他们这样做。通常是以注册页的形式,他们希望客户打电话获取一些“注册代码”,但这和他问的是同一个概念。这并没有特别回答这个问题。这似乎很疯狂,但我也有客户问我这个功能。我通常告诉他们这是一个愚蠢的想法,然后无论如何都要为他们做。通常是以注册页面的形式,他们希望客户打电话获取一些“注册代码”,但他问的是同一个概念。