Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: авторизация

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть форма Логина и Пароля, но написана довольно нецелесообразно. Работает по спискам в *.тхт файлах.
 
if(($login!="")&&($passw!=""))
{
 
if($tr=="enter_wrk")
{
 
$ldf=load_file("files.txt");
$ldf=split("\n",$ldf);
for($j=0; $j<count($ldf); $j++)
{
///////////////////////////////////////
 if($ldf="adm_all.txt")
 {
 $load=load_file("adm_all.txt");
 $load=split("\n",$load);
 for($i=0; $i<count($load); $i++)
  {
    $loada=split(" ",$load[$i]);
    for($k=0; $k<count($loada); $k++)
    {
        $alogin=$loada[$k];
        if($login==$loada[$k])
        {
          $k=$k+1;
          $apassword=$loada[$k];
          $password=$apassword;
          if($passw==$loada[$k])
          {
Дальше скрытая информация...
 
 
Так вот, как бы так сделать или новую авторизацию, или эту модернизировать, чтобы немного, так сказать, пологичнее было, а то кроме обхода пароля через адресную строку и нет вовсе ничего :(..
 

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 10:29 12-02-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PHP FAQ: Не передаются переменные! Проблема register_globals
http://php.net/register_globals
Читать код особого желания не было - мудрёный какой-то - всё гораздо проще.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 10:36 12-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот я уже читал про глобальные переменные, но, так сказать, немного не понял. Надо, чтоб показали и разъяснили что к чему.

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 14:13 14-02-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Надо, чтоб показали и разъяснили что к чему.
Ты первую ссылку читал? Читай ещё раз, вдумчиво, пока не найдёшь там искомый пример и не поймёшь, что там написано - не вижу смысла здесь цитировать то же самое.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 17:24 14-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ладно, сенкс... Буим думать

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 15:41 15-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Делаю вот такую проверку форм:
 
if ((isset($_POST['login']))and($_POST['login']!="")and(isset($_POST['passw']))and($_POST['passw']!=""))
 
Авторизация срабатывает, но по линкам типа  
 
print "<a href='admin.php?what=add_page&go=0&tr=enter_wrk&login=$alogin&passw=$password'>Add page</a><br>
 
не переходит...
 
Что делать?

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 13:30 16-02-2005
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так у тебя же $_POST. Через ссылки - это $_GET.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 16:56 16-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть  вместо $_POST нужно нипсать $_GET. И все должно работать?

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 14:52 17-02-2005
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да.
 
А можешь пользоваться и $_REQUEST - тогда оба метода будут работать.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 16:35 17-02-2005
N Sensey N



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NDaimel

Цитата:
admin.php?what=add_page&go=0&tr=enter_wrk&login=$alogin&passw=$password

 
ты что, пароль и логин в урле тоскаешь постоянно?

----------
sPaiz-Nuke - Free PHP CMS Web Design and Development Портал для израильтян

Всего записей: 1409 | Зарегистр. 01-10-2002 | Отправлено: 18:28 17-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну, пока да... просто не знаю, как сделать так, чтобы его там не было... :( Может подскажете?

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 16:55 18-02-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PHP FAQ: Сессии. Подробное описание работы и объяснение механизма. + форму передавать методом POST.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 21:39 18-02-2005 | Исправлено: SiMM, 21:40 18-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так если я форму методом POST передаю, то линки, которые "спрятаны" под формой не работают вообще а c REQUEST все работает.
 
Добавлено:
И еще. При использованиии сессий выдаёт такую ошибку :
 
Warning: Cannot modify header information - headers already sent by (output started at z:\home\localhost\subdomain\my_php\masterful\project2\admin.php:62) in z:\home\localhost\subdomain\my_php\masterful\project2\admin.php on line 63
 
Что с ней делать? Метод оставил REQUEST.

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 10:01 19-02-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Так если я форму методом POST передаю, то линки, которые "спрятаны" под формой не работают вообще а c REQUEST все работает.
Теперь переведи это на русский язык. Передавать POST'ом - значит указывать в тэге form свойство POST, соответственно, лежать данные, принятые из формы будут в массиве $_POST. Данные, которые указываются в URI, всегда располагаются в массиве $_GET, независимо от способа запроса (GET или POST).
Цитата:
И еще. При использованиии сессий выдаёт такую ошибку :
Ты очень невнимательно читал FAQ.
Цитата:
Если вы впервые на этом сайте, настоятельно рекомендуется просмотреть все темы. Это не займет много времени, но вопросы, здесь освещенные, встретятся вам не раз при программировании на PHP
PHP FAQ: объяснение и исправление ошибки "Cannot add header information  - headers already sent"
Цитата:
Метод оставил REQUEST.
Такого метода не существует. Не существует вообще. В чём легко можно убедиться, прочитав RFC по HTTP.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 11:16 19-02-2005
NDaimel

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то я совсем запутался... Передаю из формы, получаю массив POST. Так это понятно. Допустим, форма "логин-пароль". То есть один элемент будет $_POST['login'], а второй $_POST['password']. Так? А тогда как, чтобы в пути не было логинас с паролем? Какие пути прописывать "запароленным" линкам?
 
:(

Всего записей: 75 | Зарегистр. 27-02-2004 | Отправлено: 21:18 19-02-2005
L0ST



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
NDaimel,
Если ты делаешь админку т.е. панель администратора, то тогда тебе целесообразнее и очень удобно будет сделать ее в отдельной директории на сервере, например /admin
и сделать для нее авторизацию
с использованием .htaccess
в который пишешь

Код:
 
AuthName "For Registered Users Only"
AuthType Basic
AuthUserFile /путь/на/сервере/.htpasswd
require valid-user
 

 
Потом тебе надо создать файл .htpasswd
формат которого такой:

Код:
 
user:pass
 

(для большей секретности можно шифровать пароль, но в общих случаях не обязательно)
 
Вся сложность этого метода состоит в том, чтобы правильно указать  /путь/на/сервере
который ты можешь узнать у своего хостера, например.
 
Теперь при заходе http://твой.сайт/admin/
будет выскакивать форма ввода логина/пароля
и если неправильно - то стандартная ошибка 403
 
надеюсь понятно объяснил....

Всего записей: 281 | Зарегистр. 08-11-2003 | Отправлено: 23:17 19-02-2005
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
То есть один элемент будет $_POST['login'], а второй $_POST['password']. Так? А тогда как, чтобы в пути не было логинас с паролем? Какие пути прописывать "запароленным" линкам?

Получаешь форму, где заполнены оба поля. Обращаешься к базе данных (к файлу или MySQL), выбираешь оттуда строку, где логин равен $_POST['login'], а пароль - $_POST['password'].
 
Если строка найдена, запускаешь сессию и ставишь флажок $_SESSION['logged']=1; (к примеру), если нет - перерисовывай форму или после нескольких попыток оттправляй человека в баню (например, выводи 403).
 
В общем, что-то в этом роде:
Код:
<?php
if($_POST['login'] and $_POST['password']) {
//если нажали сабмит, проверяем
$m=mysql_connect(); mysql_select_db();
$q=mysql_query("SELECT * FROM users WHERE login='{$_POST['login']}' AND password='{$_POST['password']}' LIMIT 1");
if($q) {
//если пользователь найден, стартуем сессию
session_start();
$_SESSION['logged']=1;
$_SESSION['login']=$_POST['login'];
header("Location: somewhere.php"); exit;
};
}
 
//если сабмита не было, выводим форму
?>
<form name='auth' action='script.php' method='post'>
Логин: <input type='text' name='login' value=''>
Пароль: <input type='password' name='password' value=''>
<input type='submit' name='s' value='Войти'>
</form>
После этого в местах, где требуется авторизация, проверяем наличие $_SESSION['logged'].

----------
Если вы спорите с идиотом,
Наверняка, он занимается тем же самым.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 05:12 20-02-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
header("Location: somewhere.php"); exit;
При выключенных куках работать не будет. Если не очевидно, почему - написано в FAQ'е, ссылка на который была выше.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 13:18 20-02-2005
Sergeant

Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM,
Посмотрел ту ссылку и не понял, почему перенаправление через header("Location: "); не будет работать при выключенных куках. Объясни, пожалуйста.

----------
Если вы спорите с идиотом,
Наверняка, он занимается тем же самым.

Всего записей: 1553 | Зарегистр. 06-08-2001 | Отправлено: 13:55 20-02-2005
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sergeant, дело не в том, что хидер не будет работать, а в том, что сессию ты потеряешь - клиент после header'а (т.е. следующего запроса) уже не будет авторизованным. Собственно, сам в этом можешь убедиться, выключив куки в браузере, после чего перечитав FAQ о сессиях ещё раз, более вдумчиво.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 16:42 20-02-2005
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: авторизация


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru