Forum. MyNuke.ru
Forum. MyNuke.ruСообщения за сегодняПерсональные сообщения

Навигация  
Вернуться   Forum. MyNuke.ru > PHP-NUKE > Настройка и Изменение
Ник
Пароль
Ответ
 
Опции темы Поиск в этой теме Опции просмотра
veland вне форума      Старый Доступ к Rss-каналу закрыт паролем #1  
veland
Новенький
Регистрация: 31.10.2005
Сообщения: 14


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для veland Найти все сообщения от veland Добавить veland в список друзей  
30.11.2005, 17:37

Нюкеры! Кто сталкивался с проблемой доступа к каналу новостей (RSS), если страница с xml-файлом требует ввода логина и пароля? Судя по всему, для решения проблемы нужно использовать библиотеку CURL. Поделитесь опытом или может быть скриптом, который передаст серверу логин/пароль.

Soniks вне форума      Старый #2  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
03.12.2005, 03:21

veland ну можно и curl и через fsockopen, это все зависит как он требует ввод пароля?
попытайтесь сначало самым простым способом, добавить логин и пароли в строку запроса rss, т.е.

скажем файл rss доступин по адресу http://site.ru/rss.php? то с паролем будет выглядить так:
http://login:pass@site.ru/rss.php
обычно это помогает.
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


veland вне форума      Старый #3  
veland
Новенький
Регистрация: 31.10.2005
Сообщения: 14


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для veland Найти все сообщения от veland Добавить veland в список друзей  
07.12.2005, 23:28

Всё получается, если попробовать зайти таким образом через броузер, но в функции headlines() используется доступ к rss-файлу через открытие сокета. Вопрос как передать пароль/логин не сильно изменяя саму функцию. Хотя подозреваю, что просто не получится - fsockopen() не допускает имя хоста, перед которым указаны логин/пароль. Есть ли выход? Мне это надо для доступа к новостям Консультант+, а тамошние программеры, не понятно по какой причине, закрыли эту страницу.

Soniks вне форума      Старый #4  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
08.12.2005, 03:47

veland ну можите в принципе узнать у тамошних админов, почему закри, может откроют, или же у них уже есть скрипт для импорта.
а так можите почитать http://ru.php.net/manual/ru/function.fsockopen.php
там в коментариях даны пару вариантов передачи пароля, но не факт что сработает, тогда придется воспользоваться CURL
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


veland вне форума      Старый #5  
veland
Новенький
Регистрация: 31.10.2005
Сообщения: 14


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для veland Найти все сообщения от veland Добавить veland в список друзей  
08.12.2005, 16:57

Поковырялся вчера вечером и переделал немного функцию headlines() - сделал новый блок, вместо сокета использовал передачу по HTTP, в принципе блок получился индивидуальным именно для этого RSS-канала, но при необходимости можно и доработать, чтобы при создании нового блока в админе указывать логин/пароль. Если есть интерес, могу выложить блок сюда. А пример его работы можно посмотреть здесь: http://www.kazakevich.ru/index.php - сайт в процессе строительства, блок называется "Rss-канал от Консультант Плюс"

veland вне форума      Старый #6  
veland
Новенький
Регистрация: 31.10.2005
Сообщения: 14


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для veland Найти все сообщения от veland Добавить veland в список друзей  
08.12.2005, 20:27

Вот, как обещал, блок для доступа к rss-каналу, закрытому паролем:
Код:
<?php /************************************************** **********************/ /* PHP-NUKE: Web Portal System */ /* =========================== */ /* */ /* Copyright (c) 2005 by Francisco Burzi */ /* http://phpnuke.org */ /* */ /* This program is free software. You can redistribute it and/or modify */ /* it under the terms of the GNU General Public License as published by */ /* the Free Software Foundation; either version 2 of the License. */ /************************************************** **********************/ /* Block to fit perfectly in the center of the site, remember that not all blocks looks good on Center, just try and see yourself what fits your needs */ if (eregi("block-Consultant_rss-News.php", $_SERVER['PHP_SELF'])) { Header("Location: index.php"); die(); } $dir = "http://login:password@www.site.ru/rss/"; $fp = fopen($dir, "r"); if (!$fp) { $content = ""; $cont = 0; fclose($fp); return; } if ($fp) { $string = ""; while(!feof($fp)) { $pagetext = fgets($fp,300); $string .= $pagetext; } fclose($fp); $content = explode("\n",$string); ksort($content); $lencontent = count($content); $pos = strpos($content[$lencontent-5],"xml"); $file_name = strip_tags(trim(substr($content[$lencontent-5],43,$pos-11))); $rssfile = $dir.$file_name; } $fp = fopen($rssfile, "r"); if (!$fp) { $content = ""; $cont = 0; fclose($fp); return; } if ($fp) { $string = ""; while(!feof($fp)) { $pagetext = fgets($fp,300); $string .= chop($pagetext); } fclose($fp); $items = explode("</item>",$string); $content = "<font class=\"content\">"; for ($i=0;$i<10;$i++) { $link = ereg_replace(".*<link>","",$items[$i]); $link = ereg_replace("</link>.*","",$link); $cat = ereg_replace(".*<category>","",$items[$i]); $cat = ereg_replace("</category>.*","",$cat); $title2 = ereg_replace(".*<title>","",$items[$i]); $title2 = ereg_replace("</title>.*","",$title2); $title2 = stripslashes($title2); if (strcmp($link,$title2) AND $items[$i] != "") { $content .= "<div align=\"justify\"><img src=\"../images/pg.gif\" alt=\"\" width=\"11\" height=\"14\" border=\"0\" align=\"middle\" hspace=\"10\"><strong>".$cat.": </strong><a href=\"$link\" target=\"new\">".$title2."</a></div><hr width=\"80%\" size=\"1\">\n"; } } } ?>


Учтите, что строка
$file_name = strip_tags(trim(substr($content[$lencontent-5],43,$pos-11)));
индивидуальна для конкретного сайта Консультант+, и для другого сайта её, возможно, придётся изменить.

Soniks вне форума      Старый #7  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
09.12.2005, 03:51

veland вот именно так и надо было поступить, это самый простой вариант :)
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +4, время: 10:52.


На Верх
Рейтинг@Mail.ru