【问题标题】:'You are being Redirected' message when using CURL in PHP在 PHP 中使用 CURL 时出现“您正在被重定向”消息
【发布时间】:2018-12-19 06:13:46
【问题描述】:

在我的 php 页面中,我想根据其他值为用户调用另一个 URL。 我的代码现在将转到新页面,但我需要点击消息

您正在被重定向。 // //

然后它将转到正确的页面。 如何调用新页面而不收到此消息? 到目前为止,这是我的代码。

    <?php

    require_once 'libs/Mobile_Detect.php';
    $detect = new Mobile_Detect;

    if ($detect->isMobile() )
        { 
        $url = $_GET["link2"];
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        $result = curl_exec($ch);
        curl_close($ch);

    }
    else{
        // "desktop";
        ?> <h1><?php echo $_GET["title"]; ?></h1>
        <iframe src='<?php echo $_GET["link"]; ?>' frameborder="1" 
             width="1311px" height="800px"></iframe>
      <?php
    }
    ?>

【问题讨论】:

    标签: php curl


    【解决方案1】:

    首先要尝试的是curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);,对应命令行参数curl -L

    7.19.4 之前的 cURL 版本(包含在旧的、不再受支持的 PHP 版本中)不能正确检查从 HTTP 或 HTTPS URI 到本地文件的重定向。正如马里奥在another answer 中指出的那样,这可以用来规避open_basedir 的限制。因此,对于这些版本的 cURL,如果设置了 safe_modeopen_basedir,如果程序尝试打开 CURLOPT_FOLLOWLOCATION,PHP 会引发错误。这是fixed in PHP 5.5.3,所有受支持的 PHP 版本中仍然存在此修复。

    如果打开 CURLOPT_FOLLOWLOCATION 无法解决重定向,则该站点可能根本没有使用 301/302 重定向,而是使用 JavaScript 重定向或不重定向作为阻止自动化流程滥用的一种手段。这样做的网站希望用户通过手动导航(用鼠标单击、用触摸屏点击或按 Tab 键并按 Enter)来跟踪链接。为此,您必须解析 HTML 以读取链接的目标。首先是load the HTML into a DOMDocument,然后寻找具有href 属性的&lt;a&gt; 元素。

    【讨论】:

      猜你喜欢
      • 2016-05-19
      • 1970-01-01
      • 2011-05-26
      • 1970-01-01
      • 2017-03-18
      • 2015-03-10
      • 1970-01-01
      相关资源
      最近更新 更多