Страница с формами:
<form action="add.php" method="post">
<input type="text" name="title" size="20"> Заголовок
<textarea rows="5" cols="20" name="text"></textarea> Текст
<input type="text" name="pass" size="20"> Пароль
<input type="submit" value="Отправить">
</form>
В файле add.php в самом начале находится список логинов и паролей:
user1 pass1
user2 pass2
user3 pass3
user4 pass4
user5 pass5
и т.д.
Если в форму введён pass4, то на странице add.php, наравне с переданными переменными - заголовок и текст, будет, использоваться переменная user4. Если введён pass5, то соответственно, user5 и т.д. Если же введённый пароль не найден в списке, то echo "Неправильный пароль";.
Помогите пожалуйста это сделать.
1. Vladimir - 13 Сентября, 2009 - 03:29:01 - перейти к сообщению
2. Furax - 13 Сентября, 2009 - 04:03:17 - перейти к сообщению
Vladimir пишет:
В каком смысле - в самом начале? Вот так, что ли?В файле add.php в самом начале находится список логинов и паролей:
CODE:
(Начало файла)Логин1 Пароль1
Логин2 Пароль2
Логин3 Пароль3
<?php //Пошёл скрипт (или HTML-содержимое)
Логин2 Пароль2
Логин3 Пароль3
<?php //Пошёл скрипт (или HTML-содержимое)
3. Vladimir - 13 Сентября, 2009 - 04:16:25 - перейти к сообщению
"В самом начале" - перед основным скриптом. И для того, чтобы в первую очередь производилась проверка пароля.
CODE:
<?php (Начало файла)
Логин1 Пароль1
Логин2 Пароль2
Логин3 Пароль3
Пошёл скрипт
Логин1 Пароль1
Логин2 Пароль2
Логин3 Пароль3
Пошёл скрипт
4. Furax - 13 Сентября, 2009 - 10:25:31 - перейти к сообщению
А так нельзя. Парсер php не простит такого стороннего содержимого внутри тегов "<?php...?>". А если хранить вне таковых - это содержимое легко может быть прочитано извне. Так что такой способ не годится в любом случае.
5. Vladimir - 13 Сентября, 2009 - 10:46:22 - перейти к сообщению
А ввиде массива?
6. Furax - 13 Сентября, 2009 - 11:38:31 - перейти к сообщению
Учитывая постановку задачи, удобнее всего использовать пароли в качестве ключей массива:
CODE:
То есть, имя пользователя в первых фигурных скобках сохраняется в переменную $user, и чтобы обратиться к одноимённой переменной, нужно использовать синтаксис с двумя баксами, например:<?php
$users = array
(
'pass1' => 'user1',
'pass2' => 'user2'
);
$user1 = 'Нужная Тебе информация по юзеру 1';
$user = null;
if (isSet($_POST['pass']) && isSet($users[$_POST['pass']]))
{
$user = $users[$_POST['pass']];
echo $$user; //Вывод переменной, например, $user1 (если пароль - 'pass1').
}
else
{
echo "Неправильный пароль";
}
$users = array
(
'pass1' => 'user1',
'pass2' => 'user2'
);
$user1 = 'Нужная Тебе информация по юзеру 1';
$user = null;
if (isSet($_POST['pass']) && isSet($users[$_POST['pass']]))
{
$user = $users[$_POST['pass']];
echo $$user; //Вывод переменной, например, $user1 (если пароль - 'pass1').
}
else
{
echo "Неправильный пароль";
}
CODE:
Если $_POST['pass']=='pass2', результат выполнения будет эквивалентен результату прямого присваивания $user2='qq';.
$$user = 'qq';
7. Vladimir - 13 Сентября, 2009 - 14:34:46 - перейти к сообщению
Если просто echo $user;, то тогда можно
'pass1' => 'Нужная Тебе информация по юзеру 1',
Можно что-нибудь вместо else, чтобы при неправильном пароле выводилось echo "Неправильный пароль"; и прекращалась дальнейшая загрузка страницы?
'pass1' => 'Нужная Тебе информация по юзеру 1',
Можно что-нибудь вместо else, чтобы при неправильном пароле выводилось echo "Неправильный пароль"; и прекращалась дальнейшая загрузка страницы?
8. Furax - 13 Сентября, 2009 - 22:18:18 - перейти к сообщению
CODE:
exit("Неправильный пароль");
9. Vladimir - 14 Сентября, 2009 - 08:04:39 - перейти к сообщению
Понятно. Спасибо.
10. Vladimir - 14 Сентября, 2009 - 09:48:56 - перейти к сообщению
Как ещё сделать, чтобы очистить
текст
от
переносов?
$text = $_POST['text'];
Нашёл кое-что, но не действует:
текст
от
переносов?
$text = $_POST['text'];
Нашёл кое-что, но не действует:
CODE:
$text = str_replace('\r\n', '', $text);
$text = str_replace('\n', '', $text);
$text = str_replace('\n', '', $text);