я новичёк на форуме, который начал изучать 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 написал(а):
Ну ты тут почти ничего не делаешь, так что и оценивать мало чего.
Вот тут:
достаточно:
- если массив не пустой выполнится условие, а пароли ты сравнивал уже.
Еще. Пароль в открытом виде не хранят. Но хранят его хэш, т.е. то что вернет md5('пароль')
Вот тут:
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); |
Цитата |
<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($errors) ...
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) сделал бы просто: if($passwordChek != $password) - т.е. все уже выяснили что пароль не верен. И дальше if($errors) ... |
Это я сделал для того что бы когда человек нажмет на пустое поле, ему не вылезло две ошибки, то-есть я проверил что поле не пустое, и что пароль не подходит, я вывел ошибку что пароль не верен
А так если на пустом поле нажать, то будет
Введите пароль
Пароль не верен