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
Форумы портала PHP.SU :: Версия для печати :: file_get_contents
Форумы портала PHP.SU » PHP » Программирование на PHP » file_get_contents

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

1. demot - 08 Декабря, 2010 - 21:48:41 - перейти к сообщению
в начале скрипта код
PHP:
скопировать код в буфер обмена
  1. $cont = file_get_contents('http://сайт') or die('Нет связи');

после этого идут всякие функции, проверки и т.п.

Бывает случается, что скрипт не может соединиться с http://сайт и тогда на экране выдается ошибка Warning: file_get_contents....бла-бла-бла ....failed to open stream и выполнение скрипта на этом заканчивается, почему-то не выводится "Нет связи", как написано в or die.
Вопрос, как можно сделать так, чтоб не высвечивалась эта ошибка, а просто выдавалось сообщение, что с сервером соединиться не удалось?

P.S.
set_time_limit() не предлагать Улыбка
2. OrmaJever - 08 Декабря, 2010 - 22:31:16 - перейти к сообщению
ну вот и первая тема связаная с этой функцией...
fsockopen() или cURL
3. DeepVarvar - 08 Декабря, 2010 - 22:32:09 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $cont = @file_get_contents('http://сайт');
  2. if(!$cont) 'Нет связи...';

Пашет???
4. CenapaTop - 09 Декабря, 2010 - 06:37:55 - перейти к сообщению
error_reporting(0);

$cont = @file_get_contents('http://сайт') or die('Нет связи');
5. demot - 09 Декабря, 2010 - 07:31:20 - перейти к сообщению
CenapaTop, ваш вариант не подходит, т.к. при неудачном соединении работа скрипта останавливается и выдается ошибка.

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

OrmaJever, попробовал через fsockopen():
PHP:
скопировать код в буфер обмена
  1. $fp = fsockopen ("php.su", 80, $errno, $errstr, 30);
  2. if (!$fp) {
  3. echo "$errstr ($errno)<br>\n";
  4. } else {
  5. echo "Связь прошла успешно";
  6. }

Соединение проходит и на экран выводится "Связь прошла успешно", в принципе все в порядке. А вот если написать заведомо нерабочий адрес, например php1.su, то не выдается сообщение с кодом ошибки, а выдается:
Цитата:
Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. in Z:\home\test1.ru\www\test.php on line 10
Warning: fsockopen() [function.fsockopen]: unable to connect to php1.su:80 (php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. ) in Z:\home\test1.ru\www\test.php on line 10
php_network_getaddresses: getaddrinfo failed: Этот хост неизвестен. (0)
6. demot - 09 Декабря, 2010 - 10:03:14 - перейти к сообщению
OrmaJever, спасибо за подсказку, через cURL получилось отменно!
7. OrmaJever - 09 Декабря, 2010 - 12:39:20 - перейти к сообщению
fsockopen() это стандартная функция языка для неё нужно проверять юрл и тд. А курл отдельная библиотека в котороый много чего учтено поэтому лутше конешно использовать её.
8. JustUserR - 09 Декабря, 2010 - 13:31:21 - перейти к сообщению
demot пишет:
Вопрос, как можно сделать так, чтоб не высвечивалась эта ошибка, а просто выдавалось сообщение, что с сервером соединиться не удалось
Процесс осуществления подачи HTTP-запроса программным образом к удаленному web-серверу оптимально может быть реализован средствами CURL или fsockopen-фунций - которые позволяют проводить конфигурацию соединения и определенять как кодовую таблицы представления передаваемый информционных полей а акже анализировать конкретную причину возникающей ошибки
9. Andrew_li - 04 Июня, 2013 - 12:47:38 - перейти к сообщению
Добрый день, форумчане, подскажите почему не работает, файл сохраняется, но когда открываешь, выдает текст

Спойлер (Отобразить)


PHP:
скопировать код в буфер обмена
  1.  
  2. $file = '/files/doc.rtf';
  3. $file = $_SERVER["DOCUMENT_ROOT"] . $file;
  4. $fsize = filesize($file);
  5.  
  6. if(file_exists($file))
  7. {
  8.   $filedata = file_get_contents($file);
  9.   $filedata = str_replace('SUMMA', 152000 , $filedata);
  10.   $filedata = str_replace('PAYNAME', "Админ", $filedata);
  11.  
  12.   header("HTTP/1.0 200 OK");
  13.   header("Content-Description: File Transfer");
  14.   header("Content-type: application/octet-stream");
  15.   header("Content-disposition: attachment; filename=\"doc.rtf\"");
  16.   header("Content-Length: " . $fsize);
  17.   print $filedata;
  18.   exit();
  19. }
  20.  

 

Powered by ExBB FM 1.0 RC1