【问题标题】:How to use fopen instead of fsockopen如何使用 fopen 而不是 fsockopen
【发布时间】:2015-03-31 11:33:07
【问题描述】:

我正在使用 PHP 脚本检查 PayPal 即时付款通知 (IPN),而我的托管服务提供商 (1&1) 不允许使用 fsockopen() 和 pfsockopen(),但它们允许您使用 fopen ()。这是 fsockopen 代码:

$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

我尝试了其他方法,例如放入替换的 php.ini 文件,但没有奏效。我的问题是如何将此语句转换为使用 fopen,并给出相同的结果,例如

$fp = fopen(...);

谢谢!

【问题讨论】:

    标签: php paypal paypal-ipn


    【解决方案1】:

    1&1 是大型主机,他们可能阻止了对其他网站的访问,因为太多用户试图使用他们的 1&1 PHP 脚本对其他服务器进行 DoS。

    第一: 检查您的虚拟主机是否可以访问 SSL 网站:

    <?php
    echo file_get_contents('https://mail.google.com');
    

    当您在网络浏览器中打开此脚本时,它应该会将您重定向到 gmail 页面。 错误/白页 = 访问 SSL(或所有站点)被阻止。

    第二:

    考虑一下其他贝宝解决方案,例如“通知”(关闭贝宝网站上的 IPN 以使其正常工作!)。此方法不需要到任何其他服务器的任何 HTTP/SSL 连接。 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,所以没有人可以伪造通知]

    【讨论】:

    • 这是一个很好的答案,但不幸的是不是我要找的答案。我仍然想使用 IPN。
    • 关于 fopen。我做了测试: $x = fopen('paypal.com', 'r+'); (链接开头有'https://')它显示:警告:fopen ('paypal.com'): 无法打开流: HTTP wrapper 不支持 C:\xampp\htdocs\ball\phone_status.php 中的可写连接第 11 行 bool(false) 您可以尝试替换 'a+ ' 与 'a',但我认为它不会工作,因为 你不能写入由 fopen 建立的 SSL 连接
    • 如果 fopen 和 'a' 不起作用,那么您必须找到其他一些提供从 PHP 访问 HTTPS 服务器的主机。我使用 ovh.com 网络托管,每年约 35 美元,有 fopensock、fopen、cURL 库,可以访问 http/https (ssl) 站点
    • 没关系,我找到了一种无需与 PayPal 服务器通信即可使用 IPN 的方法。还是谢谢你。
    • 如果您能分享您的解决方案,那将是一个好主意。这将有助于社区使用您的解决方案来解决此类问题。
    猜你喜欢
    • 2012-01-08
    • 2012-12-04
    • 1970-01-01
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 2012-08-12
    • 1970-01-01
    • 2010-10-07
    相关资源
    最近更新 更多