Strict Standards: Resource ID#33 used as offset, casting to integer (33) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#35 used as offset, casting to integer (35) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Простой многопользовательский скрипт
ТвойWeb » WebMaster класс » PHP/Perl » Простой многопользовательский скрипт

Страниц (2): [1] 2 »
 

1. Vladimir - 13 Сентября, 2009 - 03:29:01 - перейти к сообщению
Страница с формами:

<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 "Неправильный пароль";.

Помогите пожалуйста это сделать.
2. Furax - 13 Сентября, 2009 - 04:03:17 - перейти к сообщению
Vladimir пишет:
В файле add.php в самом начале находится список логинов и паролей:
В каком смысле - в самом начале? Вот так, что ли?
CODE:
(Начало файла)Логин1 Пароль1
Логин2 Пароль2
Логин3 Пароль3
<?php //Пошёл скрипт (или HTML-содержимое)
3. Vladimir - 13 Сентября, 2009 - 04:16:25 - перейти к сообщению
"В самом начале" - перед основным скриптом. И для того, чтобы в первую очередь производилась проверка пароля.
CODE:
<?php (Начало файла)
Логин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:
<?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 "Неправильный пароль";
}
То есть, имя пользователя в первых фигурных скобках сохраняется в переменную $user, и чтобы обратиться к одноимённой переменной, нужно использовать синтаксис с двумя баксами, например:
CODE:
$$user = 'qq';
Если $_POST['pass']=='pass2', результат выполнения будет эквивалентен результату прямого присваивания $user2='qq';.
7. Vladimir - 13 Сентября, 2009 - 14:34:46 - перейти к сообщению
Если просто echo $user;, то тогда можно
'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'];

Нашёл кое-что, но не действует:
CODE:
$text = str_replace('\r\n', '', $text);
$text = str_replace('\n', '', $text);

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0279]     [ Gzipped ]