[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрытый текст по паролю
wowkas
Добрый день!
я новичёк на форуме, который начал изучать php, в этом мне пригодились
сайт http://irbis-team.com/15/1 и разные брошурки-практикумы по php.
Первый скрипт написаный мною, работоспособность присуцтвует...
Сделайте замечания по поводу скрипта
<?php
/*
* пробный php скрипт на провернку пароля, как в итоге показать скрытый контент
* который находиться за паролем.
*
*/

header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
$password = "5586214";
$passwordChek = !empty($_POST['password']) ? $_POST['password'] : null;
$errors=array();

if(isset ($_POST['ok']))
{
if(!$passwordChek)
$errors[] = 'Введите пароль';

if($passwordChek != null && $passwordChek != $password)
$errors[] = 'пароль не верен';


echo implode( $errors);
}


if (!((count($errors) == 0) && $passwordChek == $password))
{

?>
<form action="?" method="post">
<
input name="password" type="text" value="<?php echo htmlspecialchars($passwordChek); ?>"/>
<
input name="ok" type="submit" />
</
form>

<?php
}

else {
?>
Здесь будет то что вы вставите, если пароль будет верен
<?php
}





Спустя 15 минут (24.10.2010 - 15:07) Romms написал(а):
первое что бросилось в глаза, это то что кривая табуляция...

Спустя 5 минут, 8 секунд (24.10.2010 - 15:12) Michael написал(а):
Ну ты тут почти ничего не делаешь, так что и оценивать мало чего.
Вот тут:
if (!((count($errors) == 0) && $passwordChek == $password))

достаточно:
if ($errors) {
//
}

- если массив не пустой выполнится условие, а пароли ты сравнивал уже.

Еще. Пароль в открытом виде не хранят. Но хранят его хэш, т.е. то что вернет md5('пароль')
$hash = 'dfsdfdfsdf...'; // длинная строка хэша
if (md5($passwordChek) == $hash) // проверка

Спустя 14 минут, 1 секунда (24.10.2010 - 15:26) ИНСИ написал(а):
Цитата
echo implode( $errors);

смотри про implode тут
Цитата
<form action="?" method="post">

можно просто action оставить пустым

а вообще, я бы сделал вот так:

<? if($_POST['ok']) {.
$error = '';
$password = md5(md5('5586214'));

if($_POST['password'] == '') { $error = 'Введите пароль'; }
else if(md5(md5($_POST['password'])) != $password) { $error = 'Пароль не верен'; }
}


if($error != '') {
?>
<h1><?=$error?></h1>
<
form action="" method="post">
<
input name="password" type="text" value="<?=htmlspecialchars($_POST['password']?>"/>
<
input name="ok" type="submit" />
</
form>
<? else { ?>
тут если пароль верен
<? } ?>

Спустя 17 минут, 50 секунд (24.10.2010 - 15:44) wowkas написал(а):
Спасибо, про md5 даже не знал, уже разобрался но вот про
Цитата
достаточно:
<pre class="sh_sourceCode" rel="php"><span class="sh_control">if</span> <span class="sh_symbol">(</span><span class="sh_variable">$errors</span><span class="sh_symbol">)</span> <span class="sh_cbracket">{</span>
<span class="sh_comment">//</span>
<span class="sh_cbracket">}</span></pre>


Нечего не понял, нет логику я понял что если масив без ошибок то выводить скрытый тест, а под этим подразумевается два действия это после не пустое, и пароль соответствующий введёному, значит записей в масиве нет, значит можно выводить не форму а текст, но когдая делал так как вы говорили у меня при любом значении текстововго поля, появлялся скрытый текст.
Вот код:
<?php
/*
* пробный php скрипт на провернку пароля, как в итоге показать скрытый контент
* который находиться за паролем.
*
*/

header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);
$password = "8bba3c7c4cfbba4b546a5910a2093322";
$passwordChek = !empty($_POST['password']) ? $_POST['password'] : null;
$errors=array();
if(isset ($_POST['ok']))
{
if(!$passwordChek)
$errors[] = 'Введите пароль';

if(($passwordChek != null) && (md5($passwordChek) != $password))
$errors[] = 'пароль не верен';


echo implode($errors);
}


//if (!((count($errors) == 0) && (md5($passwordChek) == $password)))
if ($errors)
{

?>
<form action="?" method="post">
<
input name="password" type="text" value="<?php echo htmlspecialchars($passwordChek); ?>"/>
<
input name="ok" type="submit" />
</
form>

<?php
}

else {
?>
Здесь будет то что вы вставите, если пароль будет верен
<?php
}


welbox2
Ваш вариант у меня не работает, может сьелся код при вставке в форум?

Спустя 6 минут, 27 секунд (24.10.2010 - 15:50) Michael написал(а):
Я бы еще вот это поменял:
      if($passwordChek != null && $passwordChek != $password)
$errors[] = 'пароль не верен';

сделал бы просто:
      if($passwordChek != $password)
$errors[] = 'пароль не верен';

- т.е. все уже выяснили что пароль не верен. И дальше if($errors) ...

Спустя 16 минут, 50 секунд (24.10.2010 - 16:07) wowkas написал(а):
Цитата (Michael @ 24.10.2010 - 12:50)
Я бы еще вот это поменял:
      if($passwordChek != null && $passwordChek != $password)
$errors[] = 'пароль не верен';

сделал бы просто:
      if($passwordChek != $password)
$errors[] = 'пароль не верен';

- т.е. все уже выяснили что пароль не верен. И дальше if($errors) ...

Это я сделал для того что бы когда человек нажмет на пустое поле, ему не вылезло две ошибки, то-есть я проверил что поле не пустое, и что пароль не подходит, я вывел ошибку что пароль не верен

А так если на пустом поле нажать, то будет

Введите пароль
Пароль не верен
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.