Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Включение и обработка... не знаю уж как и назвать тему 
:(
    Опции темы
Kirill Baranov
  Дата 22.5.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Доброго времени суток  smile 

Есть у меня вот обработчик текст "Пагинация", который берет переменную, в которой текст содержится и начинает её обрабатывать.
Так вот...а если я хочу обратать не переменную, а файл?! Как быть так? Include не катит, ибо там инклюдится файл и его в переменную не затащишь. file_get_contents не катит аналогично, но в данном случае из-за того, что в файле может быть PHP код и тогда будет полная жопа)

Как быть? 
PM MAIL   Вверх
madFobos
Дата 22.5.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.12.2005

Репутация: 1
Всего: 3



А в чем проблема с PHP кодом и file_get_contents? Содержимое-то ты получишь, а дальше уже работа твоего "пагинатора" искать и пропускать код или еще что. 
PM MAIL   Вверх
Kirill Baranov
Дата 22.5.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



madFobos,
Да дело в том что при file_get_contents PHP код не обрабатывается. Его кусок показывается на экране, но не исполняется. 
PM MAIL   Вверх
Mal Hack
Дата 22.5.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Kirill Baranov, ты объясни что тебе надо сделать по человечески.
 
PM ICQ   Вверх
Kirill Baranov
Дата 22.5.2006, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



main.php
Код

Текст текст текст
<?
echo "text";
?>


Есть файл index.php, содержимое которого описано тут http://forum.vingrad.ru/index.php?showtopic=95490 (разбивка на страницы)
Так этот скрипт разбивки на страницы. Если бы был обычный файл, то мона было бы использовать ф-цию file_get_contents, чтобы занести все его содержимое в переменную, которую скрипт и обработал бы...а у меня есть файл со скриптом PHP внутри. Как тогда сделать обработку этого файла через этот скрипт пагинатора? 
PM MAIL   Вверх
Mal Hack
Дата 22.5.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Еще раз прошу объяснить что ты ХОЧЕШЬ СДЕЛАТЬ, а не то, КАК ТЫ ЭТО ВИДЕШЬ. ТО, ЧТО ТЫ ВИДЕШЬ НЕ ПРАВИЛЬНУЮ РЕАЛТЗАЦИЮ Я И ТАК УЖЕ ПОНЯЛ.
Что значит "обработать"? 
PM ICQ   Вверх
Kirill Baranov
Дата 22.5.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Mal Hack, обработать, значит сделать разбивку данных на страницы с выводом оглавления. Сам скрипт есть, ссылку я дал. 
PM MAIL   Вверх
Mal Hack
Дата 23.5.2006, 00:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Разбить его как текстовый на страницы? Это file_get_contents
Разбить используя его код, - include. 
PM ICQ   Вверх
vasac
Дата 23.5.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Kirill Baranov, если считывать файл через file_get_content() напрямую с локального диска, то PHP-код не обработается. 
Если же через запрос к серверу, т.е. вроде 
Код

file_get_content( "http://mysite.ru/file.php" );

то обработается и вернется его результат. 
PM WWW   Вверх
Mal Hack
Дата 23.5.2006, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



vasac, это вообще глупость. 
PM ICQ   Вверх
vasac
Дата 23.5.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Mal Hack, конкретно. Что глупость?
Вообще то, что я написал. Или применительно к исходной задаче? 
PM WWW   Вверх
Kirill Baranov
Дата 23.5.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Mal Hack, глупость глупостью, а вот это:
Код

Текст текст текст
<?
$a="1";
$b="2";
$c=$a+$b;
echo $c;
?>


легко обработалось с помощью file_get_contents 
PM MAIL   Вверх
vasac
Дата 23.5.2006, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 8
Всего: 36



Kirill Baranov, file_get_contents() при удаленном чтении на длинных файлах может обрываться.
Лучше открывать fopen()-ом и читать через fread() небольшими порциями кила по 2, пока не будет конца файла. 
PM WWW   Вверх
R.M.
Дата 23.5.2006, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



Kirill Baranov, кавычки там надо убрать для ускорения парса smile  


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Kirill Baranov
Дата 23.5.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Блин, срываются все настройки и передать переменные невозможно почему-то. Сразу перестало работать соединение с БД... У вас есть вариант как вообще такую штуку реализовать? Или надо всё-таки как-то разделять статические страницы и динамические? 
PM MAIL   Вверх
Mal Hack
Дата 23.5.2006, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(vasac @  23.5.2006,  09:55 Найти цитируемый пост)
Mal Hack, конкретно. Что глупость?

Глупость открывать соединение с удаленным сервером через fopen и file_get_contents. Для этого fsockopen существует.

Kirill Baranov, еще раз, прошу объяснить суть задачи. Тебе надо выполнить код или вывести его или что. Если ответа я не получу, тему закрою. Ну невозможно, блин на самом деле уже. 
PM ICQ   Вверх
Kirill Baranov
Дата 23.5.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Да ёлки палки... 
Есть у меня PHP файл, в котором есть и PHP-код и обычный текст, не РНР. Так вот! Скрипт Надо чтобы брался этот файл и производилось его разделение на страницы с выводом оглавления. Всё...


Mal Hack, мне кажется что тока ты не понял в чём фишка  smile  
PM MAIL   Вверх
Mal Hack
Дата 23.5.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Наконец-то. С 5 раза...
file_get_contents - твое решение. 
PM ICQ   Вверх
Kirill Baranov
Дата 23.5.2006, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



Вот даже код:

Код

<?
if (file_exists("$file")) {
 
// == НАЧАЛО ПАГИНАЦИИ
$text_do=file_get_contents("http://site.ru/".$file."");

//$regex = '/{(pagebreak)\s*(.*?)}/i';
$regex = '/{(pagebreak)(\s*title=([^}]+))*}/i';

// найти все образцы разрыва страницы и вставить в $matches
$matches = array();
preg_match_all( $regex, $text_do, $matches);
$titles = $matches[3];

// место разрыва текста
$text = preg_split( $regex, $text_do );

// подсчет числа страниц
$n = count( $text );
$n=$n-1;
if (!$page) $page="0";

if ($n!='0') {
echo '<table width="20%" border="0" align="right" cellspacing="3" cellpadding="5" style="border:1px solid #cccccc; margin:10px;" bgcolor="#FFE9BF">
<tr>
<td><strong>Содержание</strong></td>
</tr>';

$pagenextext=$text[$n];

$i=$n-$n;
while ($i<$n) {
    if ($titles[$i]!="") {
        $pagetitle=$titles[$i];
    } else {
        $pagetitle='Страница '.($i+1).'';
    }
    if ($page==$i) { $bgolor='bgcolor="#FFDB97" style="border:2px dotted #333333"'; } else { $bgolor='style="border:1px solid #FFE9BF"'; }
    echo '<tr><td '.$bgolor.' valign="middle"><a href="'.$arr[1].'/'.$arr[2].'/?page='.$i.'">'.$pagetitle.'</a></td></tr>';
    $i++;
    $pagetitle="";
}
echo '</table>';

}
// == КОНЕЦ ПАГИНАЦИИ
            
echo "<div style=\"padding-left:15px;padding-right:15px;\" align=\"justify\"><font size=2 color=#333333 face=Verdana>$text[$page]</font></span>";

 
 
} else {
?><br><br><br>
<table width="70%" border="0" align="center" cellpadding="2" cellspacing="2" style="border:1px dashed" bgcolor="#F9F9F9">
  <tr>
    <td align="center" valign="middle"><p><br />
          <strong>Уважаемые посетители!<br>
                <br>
            </strong>Информация для этой страницы сайта<br>
            в настоящее время готовится к публикации.<br>
            Приносим свои извинения за причиненные неудобства.</p>
      <p align="right">Администрация сайта. <br />
          <br />
        </p></td>
  </tr>
</table>
<?
}
?>


Это был пагинатор собсно.


А вот файл который надо обработать:

Код

<?
$sql=mysql_query("SELECT * FROM companies WHERE company LIKE '$alp%' ORDER BY company ASC");
?>
Тра ля ля ля ля
{pagebreak title=Начало}
Тря ля ля ля еще разок
{pagebreak title=Конец


Добавлено @ 19:17 
Mal Hack, так при file_get_contents (сам до него допёр) переводит файл в переменную. Таким макаром в PHP код файла не передаются данные (например, данные по подключению к MySQL). И получается фигня какая-то... 
PM MAIL   Вверх
Mal Hack
Дата 23.5.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Kirill Baranov @  23.5.2006,  19:15 Найти цитируемый пост)
$text_do=file_get_contents("http://site.ru/".$file."");

Господи... Ну сколько можно. Вашу, Машу, прошу прощения. Ну сколько раз учить можно. Для открытия удаленных файлов используем fsockopen хотя бы...
Да и еще и ман читаем.

Цитата(Kirill Baranov @  23.5.2006,  19:15 Найти цитируемый пост)
if (file_exists("$file")) {

Вообще бред и работать не будет.

Добавлено @ 19:19 
Цитата(Kirill Baranov @  23.5.2006,  19:15 Найти цитируемый пост)
Mal Hack, так при file_get_contents (сам до него допёр) переводит файл в переменную. Таким макаром в PHP код файла не передаются данные (например, данные по подключению к MySQL). И получается фигня какая-то...  

КОД УДАЛЕННОГО ФАЙЛА ТЫ ВООБЩЕ ПОЛУЧИТЬ НЕ МОЖЕШЬ НЕ ИМЕЯ ДОСТУПА К СЕРВЕРУ ПО FTP протоколу. Или, если админ идиот полный. 
PM ICQ   Вверх
madFobos
Дата 24.5.2006, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.12.2005

Репутация: 1
Всего: 3



Mal Hack, я одного не понял, почуму я не могу удаленный файл с помощью file_get_contents получить? Об этом даже в мануале написано... А че надо Киррилу я так и не смог понять. Блин, учите сначала PHP, а потом "пагинаторы" пишите  smile 

Собственно из того, что я понял, надо сначало пагинтаор в функцию (или класс запихать), затем написать функцию которая вытаскивает текст из PHP (например убирает все между <? и ?>) и все. Но удаленно файл реально никак не получить, только локально... 
PM MAIL   Вверх
Mal Hack
Дата 24.5.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(madFobos @  24.5.2006,  21:01 Найти цитируемый пост)
Mal Hack, я одного не понял, почуму я не могу удаленный файл с помощью file_get_contents получить? О

Потому, что это зависит от настроек ПХП, и потому что нет указания таймаута, т.е. скрипт легко подвесить. 
PM ICQ   Вверх
madFobos
Дата 24.5.2006, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.12.2005

Репутация: 1
Всего: 3



Цитата(Mal Hack @  24.5.2006,  21:05 Найти цитируемый пост)
Потому, что это зависит от настроек ПХП, и потому что нет указания таймаута, т.е. скрипт легко подвесить.  


Ну настройки зачастую через .htaccess можно подправить, а таймаут скрипта все равно обычно 30 сек... Да и не думаю, что соединение по HTTP займет много времени у нормального сервера (при условии, что адрес существует конечно)
 
PM MAIL   Вверх
Mal Hack
Дата 24.5.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(madFobos @  24.5.2006,  21:09 Найти цитируемый пост)
а таймаут скрипта все равно обычно 30 сек...

А ты уверен что скрипт "умрет" после этих 30 сек? А ты зхнаешь что лишнее сокетное соединение это нагрузка на сервер?
Цитата

If PHP has decided that filename specifies a registered protocol, and that protocol is registered as a network URL, PHP will check to make sure that allow_url_fopen is enabled. If it is switched off, PHP will emit a warning and the fopen call will fail.

Цитата(madFobos @  24.5.2006,  21:09 Найти цитируемый пост)
Ну настройки зачастую через .htaccess можно подправить

Цитата

allow_url_fopen  boolean

    This option enables the URL-aware fopen wrappers that enable accessing URL object like files. Default wrappers are provided for the access of remote files using the ftp or http protocol, some extensions like zlib may register additional wrappers.

        Note: This setting can only be set in php.ini due to security reasons. 

        Note: This option was introduced immediately after the release of version 4.0.3. For versions up to and including 4.0.3 you can only disable this feature at compile time by using the configuration switch --disable-url-fopen-wrapper. 


Читай-те мануал внимательнее.  

Это сообщение отредактировал(а) Mal Hack - 24.5.2006, 21:12
PM ICQ   Вверх
Kirill Baranov
Дата 24.5.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 30.6.2004

Репутация: -2
Всего: -2



да нужен мне пагинатор блин который пагинирует все файлы... 
PM MAIL   Вверх
madFobos
Дата 24.5.2006, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 102
Регистрация: 7.12.2005

Репутация: 1
Всего: 3



Цитата(Mal Hack @  24.5.2006,  21:12 Найти цитируемый пост)
А ты уверен что скрипт "умрет" после этих 30 сек? А ты зхнаешь что лишнее сокетное соединение это нагрузка на сервер?


Т.е. ты хочешь сказать, что скрипт завершится, а соединение останется? Или он вобще не завершится при наличии соединения?

Цитата(Mal Hack @  24.5.2006,  21:12 Найти цитируемый пост)
Читай-те мануал внимательнее.  


М-да. Погорячился я тут с .htaccess  smile 
 
PM MAIL   Вверх
Mal Hack
Дата 24.5.2006, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(madFobos @  24.5.2006,  21:43 Найти цитируемый пост)
Т.е. ты хочешь сказать, что скрипт завершится, а соединение останется? Или он вобще не завершится при наличии соединения?

Вот это, как раз и спорный вопрос. Как на никсах не знаю, но в винде, провернено, что скрипт вполне может продолжать работать долгое время.
Это просто не надежно и лишняя нагрузка на сервер. 
PM ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.