|
|
|
|
|
для: localGhost
(24.06.2005 в 06:12)
| | Если POST данные переданы корректно, то редирект должен срабатывать, если он там есть, конечно - имеется ли в конце обработчика формы редирект? Если его нет то вы можете добавить его непосредственно после работы с сокетами. | |
|
|
|
|
|
|
|
для: cheops
(23.06.2005 в 19:54)
| | нет, все же нужна помощь. Вобщем описываю задачу.
Есть система администрирования сайта (АС). Есть форум phpBB со своей собственной системой администрирования (АФ). Чтобы не загружать человека адресами добавил ссылку на АФ в АС. В базе данных АС для конкретного пользователя прописал определенным образом пароли к форуму. Теперь надо не переделывая авторизационную систему форума осуществить вход администратора в форум с помощью скриптов.
Сначала сделал просто: сделал хтмл форму со скрытими полями в которых указал имя пользователя и пароль и сделал так чтоб автоматически отправлялось как только откроют страницу. Получилось. Но так мне кажеться не пойдет, лишний раз данный загружаються, да и открыто все как-то.
Решил попробовать реализовать через сокеты. Соединение с файлом авторизации наладил. но вот тут проблема с редиректом на саму АФ возникла, я думаю из-за сессий.
короче, как сделать чтоб ПОСТ данные отправились и тут же редирект был на нужную страницу? как бы сэмитировать работу формы чтоли.....
надеюсь изложил понятно. | |
|
|
|
|
|
|
|
для: localGhost
(23.06.2005 в 18:58)
| | В $hostname не следует писать http:// - функция fsockopen() это определяет исходя из того, что вы обращаетесь по 80 порту, да ей в общем побарабану какой протокол испоьзуется так как вы его сами будете реализовывать. | |
|
|
|
|
|
|
|
для: localGhost
(23.06.2005 в 18:58)
| | можно не отвечать, вроде разобрался)))))) | |
|
|
|
|
|
|
| Встала тут задача ПОСТ передать загаловками, вроде разобрался. но чего-то интерпритатор ругаеться.. на локалке такое можно запустить? или чего-то еще устанавливать надо?
<?
$hostname = $link;
$path = $auth_file;
$line = "";
// Устанавливаем соединение, имя которого
// передано в параметре $hostname
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);
// Проверяем успешность установки соединения
if (!$fp) echo "$errstr ($errno)<br />\n";
else
{
// Данные HTTP-запроса
$data = "username=".urlencode($user)."&password=".urlencode($password)."&redirect=".urlencode("admin/?")."\r\n\r\n";
// Заголовок HTTP-запроса
$headers = "POST $path HTTP/1.1\r\n";
$headers .= "Host: $hostname\r\n";
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";
// Отправляем HTTP-запрос серверу
fwrite($fp, $headers.$data);
// Получаем ответ
while (!feof($fp))
{
$line .= fgets($fp, 1024);
}
fclose($fp);
?>
}
|
вот что в ответ пишет:
Warning: fsockopen() [function.fsockopen]: unable to connect to http://localhost/:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?) in d:\server\www\admin.localhost\admin.forum\index.php on line 27
Unable to find the socket transport "http" - did you forget to enable it when you configured PHP? (7)
|
| |
|
|
|
|