Как использовать fopen вместо fsockopen
Я использую PHP-скрипт для проверки мгновенного уведомления о PayPal (IPN), а мой хостинг-провайдер (1 и 1) не разрешает использование fsockopen() и pfsockopen(), но они позволяют использовать функцию fopen(). Здесь код fsockopen:
Я пробовал другие методы, например, вставляя заменяющий файл php.ini, но они не работали. Мой вопрос заключается в том, как вы преобразовали бы это утверждение в использование fopen, давая тот же результат, например
1 & 1 — большой хост, и они, вероятно, заблокировали доступ к другим сайтам, потому что слишком много пользователей пытались подключиться к другим серверам с 1 и 1 скриптами PHP.
Во-первых: проверьте, получил ли ваш веб-хостинг доступ к сайтам SSL:
Когда вы открываете этот скрипт в своем веб-браузере, он должен перенаправить вас на страницу gmail. Ошибка/белая страница = доступ к SSL (или всем сайтам) заблокирован.
Во- вторых:
Подумайте о другом решении PayPal, таком как «уведомление» (отключите IPN на сайте PayPal, чтобы он работает!). Этот метод не требует никакого HTTP/SSL-соединения с любым другим сервером. Paypal просто открывает свой сайт после оплаты информацией о том, кто/когда/сколько заплатил. Этого достаточно для большинства веб-сайтов. Пример:
На одной странице я сделал форму, которую я отправляю на paypal с атрибутом «notify_url»: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal.php
На второй странице я сделал код, который обрабатывает уведомления PayPal о платежах: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal_report.php
[Сервер уведомлений Paypal получил определенные IP-адреса, поэтому никто не может подделывать уведомление]
fsockopen
(PHP 4, PHP 5, PHP 7)
fsockopen — Открывает соединение с интернет-сокетом или доменным сокетом Unix
Описание
Устанавливает соединение с сокетом ресурса hostname .
PHP поддерживает целевые ресурсы в интернете и Unix-доменах в том виде, как они описаны в Список поддерживаемых транспортных протоколов. Список поддерживаемых транспортов можно получить с помощью функции stream_get_transports() .
По умолчанию сокет будет открыт в блокирующем режиме. Переключить его в неблокирующих режим можно функцией stream_set_blocking() .
stream_socket_client() выполняет аналогичную функцию, но предоставляет более широкий выбор настроек соединения, включающий установку неблокирующего режима и возможность предоставления потокового контекста.
Список параметров
Если установлена поддержка OpenSSL, можно использовать SSL- или TLS-протоколы соединений поверх TCP/IP при подключении к удаленному хосту. Для этого перед hostname нужно добавить префикс ssl:// или tls://.
Номер порта. Его можно не указывать, передав -1 для тех протоколов, которые не используют порты, например unix://.
Если этот параметр предоставить, то в случае ошибки системного вызова функции connect() он будет принимать номер этой ошибки.
Если значение параметра errno равно , а функция вернула FALSE , значит ошибка произошла до вызова connect(). В большинстве случаев это свидетельствует о проблемах при инициализации сокета.
Сообщение об ошибке в виде строки.
Тайм-аут соединения в секундах.
Если требуется установить тайм-аут чтения/записи данных через сокет, используйте функцию stream_set_timeout() , т.к. параметр timeout функции fsockopen() ограничивает только время процесса установки соединения с сокетом.
Возвращаемые значения
fsockopen() возвращает файловый указатель, который можно использовать с функциями, работающие с файлами (такие как fgets() , fgetss() , fwrite() , fclose() и feof() ). Если вызов завершится неудачно, функция вернет FALSE .
Ошибки
Вызывает ошибку уровня E_WARNING , если hostname не является допустимым доменом.
Примеры
Пример #1 Пример использования fsockopen()
Пример #2 Использование UDP-соединения
Пример ниже демонстрирует, как получить день и время от UDP-службы «daytime» (порт 13) на вашей машине.
Примечания
В зависимости от окружения, Unix-домен или тайм-аут установки подключения могут оказаться недоступными.
Иногда UDP-сокеты получают статус открытых, даже если удаленный хост недоступен. Ошибка проявит себя только во время чтения или записи данных в/из этого сокета. Причина этого заключается в том, что протокол UDP передает данные без установки соединения, а это означает, что операционная система не устанавливает и не держит соединение с сокетом, пока не начнется передача данных.
Замечание: При указании числового адреса IPv6 (например, fe80::1) вы должны заключать его в квадратные скобки. Например, tcp://[fe80::1]:80.
Смотрите также
- pfsockopen() — Открывает постоянное соединение с интернет-сокетом или доменным сокетом Unix
- stream_socket_client() — Открыть соединение с интернет-сокетом или с доменным сокетом Unix
- stream_set_blocking() — Установить блокирующий/неблокирующий режим в потоке
- stream_set_timeout() — Установить значение тайм-аута для потока
- fgets() — Читает строку из файла
- fgetss() — Читает строку из файла и удаляет HTML-теги
- fwrite() — Бинарно-безопасная запись в файл
- fclose() — Закрывает открытый дескриптор файла
- feof() — Проверяет, достигнут ли конец файла
- socket_connect() — Начинает соединение с сокетом
- Расширение Curl
Fsockopen не подключается к удалённым хостам
Warning: fsockopen() [function.fsockopen]
Warning: fsockopen() : unable to connect to :0 (Failed to parse address «») in.
Вывести информацию по недоступным хостам
Добрый день. Я новичок в bash. Нужен скрипт для проверки пингом доступности хостов (хосты от.
Запретить доступ VPN подключений к хостам сети
Доброго времени суток, уважаемые форумчане! Вопрос стоит следующий: есть сеть: маршрутизатор +.
Доступ к хостам внутри подсети (статическая маршрутизация)
Приветствую! Хотелось бы получить оперативный совет по поводу статической маршрутизации. .
Закрытие доступа к mail агенту нескольким хостам.
Всем привет, каким образом можно закрыть доступ к Mail агенту на прокси сервере только определенным.
Как использовать fopen вместо fsockopen
Я использую сценарий PHP для проверки уведомления о мгновенных платежах PayPal (IPN), и мой хостинг-провайдер (1 & 1) не разрешает использовать fsockopen () и pfsockopen (), но они позволяют использовать fopen (). Вот код fsockopen:
Я пробовал другие методы, такие как вставка файла замены php.ini, но они не сработали. Мой вопрос заключается в том, как бы вы преобразовали это утверждение, чтобы использовать fopen, давая тот же результат, например
1 ответ
1 & 1 — крупный хостер, и они, вероятно, заблокировали доступ к другим сайтам, потому что слишком много пользователей пытались DoS на других серверах с помощью своих скриптов 1 & 1 PHP.
Первое: проверьте, получил ли ваш веб-хостинг доступ к сайтам SSL:
Когда вы открываете этот скрипт в своем веб-браузере, он должен перенаправить вас на страницу Gmail. Ошибка / белая страница = доступ к SSL (или ко всем сайтам) заблокирован.
Во- вторых:
Подумайте о другом решении PayPal, таком как «уведомление» (отключите IPN на сайте PayPal, чтобы оно заработало!). Этот метод не требует подключения HTTP / SSL к любому другому серверу. Paypal просто откроет ваш сайт после оплаты с информацией о том, кто / когда / сколько заплатил. Этого достаточно для большинства сайтов. Пример:
На одной странице я создал форму, которую я отправляю в PayPal с атрибутом notify_url: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal.php
На второй странице я создал код, который обрабатывает уведомления PayPal о платежах: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal_report.php
[Сервер уведомлений Paypal получил несколько указанных IP-адресов, поэтому никто не может подделать уведомление]
Как использовать fopen вместо fsockopen — php
Я использую PHP-скрипт для проверки мгновенного уведомления о PayPal (IPN), а мой хостинг-провайдер (1 и 1) не разрешает использование fsockopen() и pfsockopen(), но они позволяют использовать функцию fopen(). Здесь код fsockopen:
Я пробовал другие методы, например, вставляя заменяющий файл php.ini, но они не работали. Мой вопрос заключается в том, как вы преобразовали бы это утверждение в использование fopen, давая тот же результат, например
-
2 1
- 25 июл 2020 2020-07-25 07:52:59
- JThistle
1 ответ
1 & 1 — большой хост, и они, вероятно, заблокировали доступ к другим сайтам, потому что слишком много пользователей пытались подключиться к другим серверам с 1 и 1 скриптами PHP.
Во-первых: проверьте, получил ли ваш веб-хостинг доступ к сайтам SSL:
Когда вы открываете этот скрипт в своем веб-браузере, он должен перенаправить вас на страницу gmail. Ошибка/белая страница = доступ к SSL (или всем сайтам) заблокирован.
Во- вторых:
Подумайте о другом решении PayPal, таком как «уведомление» (отключите IPN на сайте PayPal, чтобы он работает!). Этот метод не требует никакого HTTP/SSL-соединения с любым другим сервером. Paypal просто открывает свой сайт после оплаты информацией о том, кто/когда/сколько заплатил. Этого достаточно для большинства веб-сайтов. Пример:
На одной странице я сделал форму, которую я отправляю на paypal с атрибутом «notify_url»: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal.php
На второй странице я сделал код, который обрабатывает уведомления PayPal о платежах: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal_report.php
[Сервер уведомлений Paypal получил определенные IP-адреса, поэтому никто не может подделывать уведомление]
PHP « Получение заголовков сервера через fsockopen
Привет, чего-то не могу разобраться в документации указано, что функция stream_get_meta_data() работает с fopen(), fsockopen() and pfsockopen(), с fopen работает, а вот с соединение полученным через fsockopen выдает такое Array ( [stream_type] => tcp_socket [mode] => r+ [unread_bytes] => 0 [seekable] => [timed_out] => [blocked] => 1 [eof] => )
Array
(
[wrapper_data] => Array
(
[0] => HTTP/1.1 200 OK
[1] => Server: nginx/0.8.53
[2] => Date: Fri, 31 May 2013 10:32:12 GMT
[3] => Content-Type: image/png
[4] => Content-Length: 13038
[5] => Connection: close
[6] => Expires: Thu, 31 Dec 2037 23:55:55 GMT
[7] => Cache-Control: max-age=315360000
[8] => Accept-Ranges: bytes
)
[wrapper_type] => http
[stream_type] => tcp_socket
[mode] => rb
[unread_bytes] => 2920
[seekable] =>
[uri] => http://i.askdev.ru/images/logo.png
[timed_out] =>
[blocked] => 1
[eof] =>
)
Отправка своих заголовков запроса картины не меняет
Вопрос, как получить заголовки ответа сервера используя соединение fsockopen?
Как использовать fopen вместо fsockopen
Я использую PHP-скрипт для проверки мгновенного уведомления о PayPal (IPN), а мой хостинг-провайдер (1 и 1) не разрешает использование fsockopen() и pfsockopen(), но они позволяют использовать функцию fopen(). Здесь код fsockopen:
Я пробовал другие методы, например, вставляя заменяющий файл php.ini, но они не работали. Мой вопрос заключается в том, как вы преобразовали бы это утверждение в использование fopen, давая тот же результат, например
1 & 1 — большой хост, и они, вероятно, заблокировали доступ к другим сайтам, потому что слишком много пользователей пытались подключиться к другим серверам с 1 и 1 скриптами PHP.
Во-первых: проверьте, получил ли ваш веб-хостинг доступ к сайтам SSL:
Когда вы открываете этот скрипт в своем веб-браузере, он должен перенаправить вас на страницу gmail. Ошибка/белая страница = доступ к SSL (или всем сайтам) заблокирован.
Подумайте о другом решении PayPal, таком как «уведомление» (отключите IPN на сайте PayPal, чтобы он работает!). Этот метод не требует никакого HTTP/SSL-соединения с любым другим сервером. Paypal просто открывает свой сайт после оплаты информацией о том, кто/когда/сколько заплатил. Этого достаточно для большинства веб-сайтов. Пример:
На одной странице я сделал форму, которую я отправляю на paypal с атрибутом «notify_url»: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal.php
На второй странице я сделал код, который обрабатывает уведомления PayPal о платежах: https://github.com/gesior/Gesior2012/blob/TFS-1.0/pages/paypal_report.php
[Сервер уведомлений Paypal получил определенные IP-адреса, поэтому никто не может подделывать уведомление]
Что такое код pfsockopen
Профиль
Группа: Awaiting Authorisation
Сообщений: 26
Регистрация: 16.6.2008
Где: Obninsk sci-city
Репутация: нет
Всего: нет
Кто работал с Pfsockopen(), подскажите пожалуйста, как передать скрипту, переход в который из данного скрипта происходит сабмитом формы, дескриптор соединения, открытого при помощи pfsockopen?
Код |
if(!$fp) $fp=pfsockopen(«myserver.com», 80, $errno, $errstr); |
Прочёл в документации, что соединение, открытое pfsockopen, не закрывается по завершению работы скрипта. Это хорошо, это то, что мне и надо. Но как теперь передать этот $fp скрипту, вызываемому, допустим, по сабмиту формы?
В сессию «влоб» запихивать пробовал:
Код |
session_start(); if( !isset($_SESSION[«fp»]) ) < $fp=pfsockopen(«myserver.com», 80, $errno, $errstr); $_SESSION[«fp»]=$fp; > else $fp=$_SESSION[«fp»]; var_dump($fp); ?> |
Нифига не выходит. При первом вызове всё пучком, получаю «resource(3) of type (persistent stream)»,
при втором — «int(0)»
Какие ещё варианты?
sTa1kEr |
|
|