Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: скрипт вывода инфы из файлов

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: не работает условие file_exists
androidfx
Отправлено: 12 Января, 2008 - 16:23:20
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2007  
Откуда: Москва


Помог: -1 раз(а)




не работает условие file_exists, не могу понять почему
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. for ($n=1; $n < 20; $n++){
  4.     if (file_exists('http://www.мойсайт.ru/items/item_'.$n.'.php')) {
  5.         $file = fopen ('http://www.мойсайт.ru/items/item_'.$n.'.php', 'r');
  6.         $text = fread ($file,600);
  7.         if (preg_match("!<name>(.*?)</name>!si",$text,$result))
  8.         {
  9.             echo "$n $result[1]<br>";
  10.         }
  11.         else {
  12.             echo "Тег не найден.";
  13.         }
  14.         if (preg_match("!<anonce>(.*?)</anonce>!si",$text,$result))
  15.         {
  16.             echo "$n $result[1]<br>";
  17.         }
  18.         else {
  19.             echo "Тег не найден.";
  20.         }
  21.         fclose ( $file );
  22.     }
  23.     else {
  24.         exit(0); //завершение работы
  25.     }
  26. }
  27. include "http://www.мойсайт.ru/design/template.html";
  28. ?>
  29.  
 
 Top
EuGen Администратор
Отправлено: 12 Января, 2008 - 16:28:26
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Насколько я помню, функция file_exists предназначена для работы с файловой системой; веб-ресурс же к таковой не относится.
http://php.su/functions/?file-exists
Ключ к решению проблемы - отслеживание того, что выдает fopen. В случае успеха открытия это будет указатель на ресурс, иначе же - FALSE:
http://php.su/functions/?fopen


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
androidfx
Отправлено: 12 Января, 2008 - 17:25:01
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2007  
Откуда: Москва


Помог: -1 раз(а)




значит надо сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. for ($n=1; $n < 20; $n++){
  4. $file = fopen ('http://www.europe-voyage.ru/items/item_'.$n.'.php', 'r');
  5. if (!fopen){
  6.         break;
  7.         }
  8. else {
  9.         $text = fread ($file,600);
  10.         if (preg_match("!<name>(.*?)</name>!si",$text,$result))
  11.         {
  12.         echo "$n $result[1]<br>";
  13.         }
  14.         else {
  15.         echo "Тег не найден.";
  16.         }
  17.         if (preg_match("!<anonce>(.*?)</anonce>!si",$text,$result))
  18.         {
  19.         echo "$n $result[1]<br>";
  20.         }
  21.         else {
  22.         echo "Тег не найден.";
  23.         }
  24.         fclose ( $file );
  25.         }
  26. }
  27. ?>
  28.  

если да, то все равно не работает, продолжает проверять на наличие всех 20 файлов...

(Отредактировано автором: 12 Января, 2008 - 17:25:46)

 
 Top
EuGen Администратор
Отправлено: 12 Января, 2008 - 17:39:42
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нет, Вы ошибаетесь. Нужно сделать так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. ...
  3. $file = fopen ('http://www.europe-voyage.ru/items/item_'.$n.'.php', 'r');
  4. if ($file===FALSE)
  5.    break;
  6. ...
  7.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
androidfx
Отправлено: 12 Января, 2008 - 20:25:47
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2007  
Откуда: Москва


Помог: -1 раз(а)




Не работает и так тоже...
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($n=1; $n < 20; $n++){
  3. $file = fopen ('http://www.сайт.ru/items/item_'.$n.'.php', 'r');
  4. if ($file===FALSE){
  5. break;
  6. }
  7. else {
  8.         $text = fread ($file,600);
  9.         if (preg_match("!<name>(.*?)</name>!si",$text,$result))
  10.         {
  11.         echo "$n $result[1]<br>";
  12.         }
  13.         else {
  14.         echo "тег не найден";
  15.         }
  16.         if (preg_match("!<anonce>(.*?)</anonce>!si",$text,$result))
  17.         {
  18.         echo "$n $result[1]<br>";
  19.         }
  20.         else {
  21.         echo "тег не найден";
  22.         }
  23.         fclose ( $file );
  24.         }
  25. }
  26.  
  27.  
 
 Top
EuGen Администратор
Отправлено: 12 Января, 2008 - 21:28:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Странно. Вообще рекомендую установить в начале скрипта:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. error_reporting(2047);
  3.  

Важно понять, какие ошибки/предупреждения у Вас получаются при исполнении кода. Может быть, файлы существуют. А может быть, проблема в чем-то еще:
http://phpfaq[dot]ru/debug


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
androidfx
Отправлено: 13 Января, 2008 - 00:40:12
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2007  
Откуда: Москва


Помог: -1 раз(а)




заработало в таком виде, не сразу понял про file_exists, благодарю за помощь
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($n=1; $n < 20; $n++){
  3. if (file_exists('item_'.$n.'.php')) {
  4. $file = fopen ('item_'.$n.'.php', 'r');
  5. $text = fread ($file,600);
  6. if (preg_match("!<name>(.*?)</name>!si",$text,$result))
  7. {
  8. echo "$n $result[1]<br>";
  9. }
  10. else {
  11. echo "Тег не найден.";
  12. }
  13. if (preg_match("!<anonce>(.*?)</anonce>!si",$text,$result))
  14. {
  15. echo "$n $result[1]<br>";
  16. }
  17. else {
  18. echo "Тег не найден.";
  19. }
  20. fclose ( $file );
  21. }
  22. else {
  23. break;
  24. }
  25. }
  26.  
 
 Top
valenok Модератор
Отправлено: 13 Января, 2008 - 07:40:44
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




А сразу сказать что файлы лежат на вашем же сервере?
А зачем вы их запрашивали по http ?

--

$file = fopen ('http://www.europe-voyage.ru/items/item_'.$n.'.php', 'r');
Получать то мы будем ошибку 404 если файла нет

(Отредактировано автором: 13 Января, 2008 - 07:41:05)



-----
Truly yours, Sasha.
 
My status
 Top
androidfx
Отправлено: 14 Января, 2008 - 00:10:24
Post Id


Новичок


Покинул форум
Сообщений всего: 27
Дата рег-ции: Нояб. 2007  
Откуда: Москва


Помог: -1 раз(а)




Цитата:
А сразу сказать что файлы лежат на вашем же сервере?
А зачем вы их запрашивали по http ?


А как мне сделать что-бы путь был от корневой папки прописан?
 
 Top
valenok Модератор
Отправлено: 14 Января, 2008 - 06:05:39
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




$_SERVER['DOCUMENT_ROOT']


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 14 Января, 2008 - 10:18:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




valenok пишет:
Получать то мы будем ошибку 404 если файла нет

Интересно, раньше не знал. Спасибки, учту, мне как раз пригодится скоро. Я то смотрел php.su, но там этот случая явно не выделен.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 14 Января, 2008 - 15:44:15
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Помоему я не точно объяснил =)

file_get_contents .. fopen ('http://')
Сервер на http запрос будет выдавать либо страницу либо 404
поэтому таким образом проверять на существование сложновато.


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 14 Января, 2008 - 19:39:03
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Да просто проверить проще, я думаю. Сразу и станет ясно что и когда выдается. Правда, меня терзают сомнения по поводу того, что разные серверы могут разные 404-е страницы отдавать.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
valenok Модератор
Отправлено: 14 Января, 2008 - 20:25:05
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Ну в заголовках они обычно пишут статут 404
но содержание страницы может быть разным.
А у меня вообще стоит мод рерайт, так что всегда есть ответ на запрос,
а заголовки не 404 .


-----
Truly yours, Sasha.
 
My status
 Top
EuGen Администратор
Отправлено: 15 Января, 2008 - 09:40:28
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




У тебя стоит, а в общем случае на это, я думаю, не стоит полагаться. Но все равно - спасибо за подсказку. Нужно бы это и на php.su в описание fopen() добавить.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB