Сессия PHP, использующая только одно поле ПАРОЛЬ (без имени пользователя)? - PullRequest
1 голос
/ 19 июня 2011

Я искал в Интернете хороший учебник по созданию сценария, который позволяет кому-то использовать поле «ввод пароля», а затем он позволяет им получить доступ к определенным страницам PHP.

Я могу найти только учебники, в которых используются ИМЯ ПОЛЬЗОВАТЕЛЯ и ПАРОЛЬ (например, этот учебник - однако я просто ищу что-то безопасное, но для аутентификации используем только одно поле.

Будучи новичком, единственная идея, которую я имею, состоит в том, чтобы скрыть поле «имя пользователя» со значением фактического имени пользователя. Однако я не уверен, насколько это безопасно, поскольку я слышал, что иметь скрытые поля опасно, поскольку их можно использовать?

Я знаю о внедрении SQL, поэтому я надеюсь найти что-то достаточно сильное для этого.

Ответы [ 4 ]

5 голосов
/ 19 июня 2011

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
}
?>
3 голосов
/ 19 июня 2011

Если вы просто хотите использовать пароль вместо комбинации имя пользователя + пароль, вы просто пропустите часть имени пользователя в руководствах, поэтому вход в систему будет выглядеть следующим образом: \

<?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
}
1 голос
/ 19 июня 2011

Просто введите один 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
}

Обратите внимание, что это НЕ особенно безопасно ... пароль хранится в текстовом виде в тексте.Однако, поскольку вы, кажется, хотите, чтобы несколько человек знали пароль, это, вероятно, самый простой вариант.Я бы по-прежнему предлагал использовать базу данных для хранения одного пароля.

0 голосов
/ 19 июня 2011

Что ж, плохая вещь в том, что с именем пользователя и паролем вам нужно знать комбинацию, пароль пользователя, только пароль, это легче найти, и многие пользователи просто устанавливают некоторые глупые пароли, такие как : 654321 или дату рождения и тому подобное.

О скрытых полях, избегайте их, но если вам это действительно нужно, используйте вместо этого сессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...