Forum Webscript.Ru

Программирование => PHP => Тема начата: я... от 23 Августа 2002, 10:36:17

Название: может кто сталкивался, или просто знает...
Отправлено: я... от 23 Августа 2002, 10:36:17
Доброго времени суток, уважаемые коллеги...

Ситуация:
есть некая папка/страница запароленная .htaccess\'ом, есть форма через которую пользователь должен попасть на эту страницу, не вводя в http auth\'е пароль, а введя в форме...

Как делаю:
после ввода данных перенаправляю пользователя таким образом:

header("Location: http://".$login.":".$passwd."@host/path");
 
где $login, $passwd, host - ясно что, а path - путь к запароленной папке/странице...

Проблемы:
IE 4.0 после заполнения формы выводит далоговое окно http auth... Если после отмены обновить страницу - все в порядке...
Opera 6.0 вообще идиотизм, говорит, что сервер "login" (ну тот, который ввели) не найден...
NN4.79 говорит тоже самое, что и Опера...

Вопрос:
Не посчитайте за дурака(извращенца, ламера, etc), но очень надо...
Может кто сталкивался?..
:insane:
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 11:10:09
хрен тебе.
за извращенца посчитаем.
сталкивался. много раз. Не лечится.

Весь просвещенный мир давным давно авторизует сессиями.
Даже я!

Если бы все было так просто, сессии были бы не нужны нафиг.
Название: может кто сталкивался, или просто знает...
Отправлено: я... от 23 Августа 2002, 11:12:47
Жаль...
переделывать все надо... а не хотел...
ну лана, спасибо...
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 13:53:57
собственно, я тебе поясню проблему.
Таких локейшенов - логин:пассворд - не бывает в природе.
в протоколе НТТР не описаны.
Это всего лишь удобная форма ввода, из которой броузер формирует стандартный НТТР заголовок авторизации.
соответственно при ручном вводе оно никуда дальше бровзера не уходит.
остальное становится понятным.
Название: может кто сталкивался, или просто знает...
Отправлено: Alexandr от 23 Августа 2002, 15:02:05
Цитировать
броузер формирует стандартный НТТР заголовок авторизации.

я... а может самому сформировать header\'ом поможет.
Название: может кто сталкивался, или просто знает...
Отправлено: я... от 23 Августа 2002, 15:04:41
Alexandr
да, я думал на эту тему...
стоит попытаться...
спасибо за совет!
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 15:15:06
ребята, а теперь берем букварь и идем в первый класс.
Читаем.
функция header служит для отсылки серверных НТТР запросов бровзеру

лог ин и пароль же, идут от в обратном направлении. бровзера к серверу.

И заставить бровзер посылать какие бы то ни было заголовки, вы, слава аллаху, не можете.
Название: может кто сталкивался, или просто знает...
Отправлено: Unregistered от 23 Августа 2002, 15:32:58
уфф!... забрал из закрытой папки страницу таким образом:

$host=\'www.www.www\';
$path=\'/closed/\';
$fp = fsockopen ($host,80, $errno, $errstr, 30);
if (!$fp)
{
 echo "$errstr ($errno)";
}
else
{
 fputs ($fp, "GET http://".$login.":".$passwd."@".$host.$path." HTTP/1.1\\r\\nHost: ".$host."\\r\\n\\r\\n");
    fpassthru($fp);
}

спецификация, спецификация...
все-равно спасибо! =)))
Название: может кто сталкивался, или просто знает...
Отправлено: я... от 23 Августа 2002, 15:34:17
я это был... подписаться забыл просто...

2 тов. Ромик:
правила существуют, чтобы их нарушать =)
зы: как я рад...
:beer:
Название: может кто сталкивался, или просто знает...
Отправлено: Alexandr от 23 Августа 2002, 16:12:23
Цитировать
правила существуют, чтобы их нарушать

Точно.
Цитировать
вы, слава аллаху, не можете.

Тов. RomikChef отдыхает.
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 16:46:26
я, напиши, как у тебя будет работать, когда в каталоге "клозет" больше одной страницы появится.
Вместе посмеемся.
Не забудь у всех ссылок исправить пути на абсолютные.

Сашок, а ты так и не понял, о чем речь.
а туда же - тявкать.
Название: может кто сталкивался, или просто знает...
Отправлено: Unregistered от 23 Августа 2002, 16:52:03
Ну, указанный тов. именно в этом высказывании как раз не отдыхает, т.к. дело совсем не в этом...

А вот насчет рабочести приведенного кода - интересный вопрос: а какой там сервер (на домене http://www.www.www). потому как мне повторить эксперимент на апаче не удалось. Причем что интересно, так не разругалость на http://.... после GET (хотя я всегда думал, что там только path должен и может быть), а всего-навсего не пустило, сказав authorization required.
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 23 Августа 2002, 16:55:45
не, даже не так.
уже будет смешно, если на запрашиваемой странице есть хотя бы одна картинка.

А эксперимент мне не удался тоже.
Название: может кто сталкивался, или просто знает...
Отправлено: Unregistered от 23 Августа 2002, 17:07:24
Что самое интересное, для незащищенного каталога у меня такой вариант сработал - в смысле со всей пургой перед path\'ом. Что, спецификация http такое формально разрешает?
Название: может кто сталкивался, или просто знает...
Отправлено: я... от 23 Августа 2002, 17:09:04
про пути согласен...
НО!
вы говорили:
Цитировать
И заставить бровзер посылать какие бы то ни было заголовк

я же говорил не только про ф-цию header =(((

это действительно не совсем то, что я хотел в своем первом мессадже, но все работает:
для теста:
http://www.mxm.ru/4u/
если хотите удостоверится, что дирректория действ. защищена:
http://www.mxm.ru/4u/test/

сервер Apache/1.3.26

ps а вообще жаль, что сразу наезжать =(((
Название: может кто сталкивался, или просто знает...
Отправлено: Alexandr от 23 Августа 2002, 17:44:25
я..., молодец. Добился своего.

Цитировать
а вообще жаль, что сразу наезжать

Вернят.

[OFF]И всё же тов. RomikChef отдыхает. гыгыгы[/OFF]
Название: может кто сталкивался, или просто знает...
Отправлено: Ardzhan от 23 Августа 2002, 18:39:21
Цитировать
Весь просвещенный мир давным давно авторизует сессиями.
Даже я!

Без комментариев :D
.htaccess понадежнее сессий будет... От дырок в пхп и от ошибок в скрипте никто не застрахован.
А если поместить скрипт в запороленную директорию, то его и запустить хакер не сможет - прийдется ломать сервер или подбирать пароль.
Название: может кто сталкивался, или просто знает...
Отправлено: Доктор от 23 Августа 2002, 19:32:01
Alexandr
Цитировать
И всё же тов. RomikChef отдыхает. гыгыгы


Вы даже не разобравшись, что он писал, и, судя по всему, не поняв, как работает приведенный пример, пытаетесь осмеять того, кто это все знает и понимает...
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 24 Августа 2002, 08:01:44
Ardzhan
Все верно.
Вопрос в выборе между уровнем надежности и удобством пользователя.
И стстистика, прямо скажем, не в пользу .htaccess
К тому же, у него есть один небольшой недостаток. Он, теоретически, более уязвим для сниффинга, поскольку логин и пароль передаются открыто при каждом обращении к серверу.
Так что, если хотите реальной защиты - работайте через SSL.
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 24 Августа 2002, 08:15:27
я...
Покажи место, где я на тебя наезжаю?
Или я виноват в том, что передо мной не стоит твоя проблема и знаю я о ней ровно столько, сколько ты здесь написал? Я пишу что можно, а что нельзя по технологии. На нее обижайся.

Unregistered
У меня не получается ни на своем сервере повторить, ни к mxm.ru обратиться.
Но, в общем-то, формат записи - не проблема. Можно и по всем правилам заголовок составить.
Но проблема в том, что на странице может быть только текст - никаких ссылок на защищенный каталог, никаких картинок из него же, никаких форм. Т.е. полезность данного метода является очень сомнительной.
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 24 Августа 2002, 08:56:27
Вот рабочий код

$host=\'www.mxm.ru\';
$path=\'/4u/test/\';
$login="test";
$password="test1";

$header="GET $path HTTP/1.1\\r\\n";
$header.="Host: $host\\r\\n";
$header.="Authorization: Basic ".base64_encode("$login:$password")."\\r\\n";
$header.="\\r\\n";

$fp = fsockopen ($host,80, $errno, $errstr, 30);
if (!$fp)
{
 echo "$errstr ($errno)";
}
else
{
 fputs ($fp, $header);
    fpassthru($fp);
}
Название: может кто сталкивался, или просто знает...
Отправлено: Alexandr от 24 Августа 2002, 11:55:33
Вообщем, хорош дискутировать.
Элементарно: (забываем на 1сек. про PHP)







Название: может кто сталкивался, или просто знает...
Отправлено: Alexandr от 24 Августа 2002, 11:57:45
Цитировать
javascript

Слитно. Эт форум шалит.
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 25 Августа 2002, 12:23:39
О! Вариант.
В данной ситуации, похоже - наиболее подходящий, решает все проблемы.
Поздравляю.

Могу только добавить, что если смущает яваскрипт можно перенаправить метой.
И что можно скрыть логин и пароль из урла, просто перезагрузив страницу.
Название: может кто сталкивался, или просто знает...
Отправлено: я... от 26 Августа 2002, 09:54:20
Цитировать
Вот рабочий код

наверное я все-тки ламер, но он не работает апач выдает:
Цитировать
HTTP/1.0 400 Bad Request Expires: Thu, 01 Jan 1970 00:00:01 GMT Content-Type: text/html Invalid request or URL: Bad request format

а с javascript\'ом в опере такая-же  бяка, как и в первом варианте... =((((
[OFF]я в шоке...[/OFF]
[OFF]
Цитировать
Покажи место, где я на тебя наезжаю?

сорри, нервы просто...
[/OFF]

таак...
вот мой вариант:
http://www.mxm.ru/4u/index.php
вот вариант Alexandr с javascript:
http://www.mxm.ru/4u/index2.php
вот вариант RomikChef:
http://www.mxm.ru/4u/index3.php

ладно, буду ещё сильнее извращаться....
Спасибо всем!
Название: может кто сталкивался, или просто знает...
Отправлено: Maniac от 26 Августа 2002, 13:11:45
Итак, IE 6.0.
Первый вариант:
Цитировать

HTTP/1.1 200 OK Date: Mon, 26 Aug 2002 09:10:28 GMT Server: Apache/1.3.26 (Unix) mod_perl/1.26 PHP/4.2.2 AuthMySQL/2.20 X-Powered-By: PHP/4.2.2 Connection: close Transfer-Encoding: chunked Content-Type: text/html; charset=windows-1251 d приветик =))) 0

Второй вариант - усе пучком
Третий вариант:
Цитировать

HTTP/1.0 400 Bad Request Expires: Thu, 01 Jan 1970 00:00:01 GMT Content-Type: text/html Invalid request or URL: Bad request format
Название: может кто сталкивался, или просто знает...
Отправлено: Меняздесьдавнонет от 27 Августа 2002, 00:18:58
там наверное надо написать 1.0 вместо 1.1
Хотя это никому не поможет.
Так, для информации просто.