【问题标题】:Can I redirect to a PHP page from a Perl CGI script?我可以从 Perl CGI 脚本重定向到 PHP 页面吗?
【发布时间】:2011-02-13 19:18:39
【问题描述】:

我正在使用一个使用外部资源处理支付交易的网站,先决条件之一是成功后调用 CGI 脚本。

我想知道的是,是否可以使用 CGI 脚本重定向到 PHP 页面,并让 PHP 检测到它已通过 Perl 重定向加载,我目前在我的 Perl 中。

#!/usr/bin/perl
#
# fixedredir.cgi

use strict;
use warnings;


my $URL = "http://www.example.com/";

Location: $URL;

【问题讨论】:

    标签: php perl redirect cgi


    【解决方案1】:

    在 Perl 中进行 CGI 编程的标准方法是使用 CGI.pm 模块。 重定向可以这样编码(不确定语法)。

     #!/usr/bin/perl
    
     use strict;
     use warnings;
     use CGI;
    
     my $URL = "http://www.example.com/";
    
     print CGI::redirect($URL); 
    

    无论目标页面是 PHP 还是其他什么都无所谓。

    另一个页面无法确定它是否来自“perl 重定向”(实际上这个概念相当荒谬)。如果您可以控制其他 PHP 页面,则可以设置一些约定并在查询字符串中传递一个参数。

     my $URL = "http://www.example.com/x.php?redirectFromPerl=1";
    

    更新:正如其他人所评论的那样,这个问题真的没有什么意义 - 并且一些陈述(“成功时调用 CGI 脚本”)暗示了对动态网页基础知识的一些基本误解,并且电脑动画。我的示例代码展示了如何在 Perl CGI 中进行重定向,但很可能原始问题(以及答案)对于实际场景来说是不够的。

    【讨论】:

    • 我想知道,让痴迷于 XY 问题的人接受错误答案是多么容易;)
    【解决方案2】:

    如果这是调用 CGI 脚本的外部源,它如何知道它调用的是您网站上的 PHP 页面还是 CGI 脚本?对我来说,您可以设置此支付服务来调用您的 PHP 页面,并避免任何重定向要求。还是有什么我不明白的地方?

    如果它在您的网站上查找特定 URL,例如。 G。 /cgi-bin/trigger.cgi,你可以用.htaccess 输入cgi-bin 来欺骗它,像这样:

    <Files trigger.cgi>
        SetHandler application/x-httpd-php
    </Files>
    

    【讨论】:

    • 你不明白的是,在 Web 编程中,人们看到“调用 CGI 脚本”这个词时会想到“Perl”,看到“Perl”这个词时会想到“CGI 脚本” ”。我想你是正确的;甚至“调用 CGI 脚本成功”的要求也没有任何意义,似乎没有任何理由涉及 CGI,更不用说 Perl。
    【解决方案3】:

    最简单的方法是在您的 URL 中添加一个 get 变量:

    my $URL = "http://www.example.com/?from=perl"; 
    

    那么您的 PHP 就不必做任何花哨的事情了。但是,您可以查看 $_SERVER['HTTP_REFERER'] 值并解析引用脚本的名称。但由于这个值是由用户代理设置的,它不一定可靠或存在。

    【讨论】:

      【解决方案4】:

      要将页面重定向到另一个页面,请使用以下方法。

      use CGI::Session;
      use CGI::Session::Plugin::Redirect;
      my $session = new CGI::Session();
      print $session->redirect('http://exsample.com/redirect-path/');
      

      搜索 search.cpan.org 了解有关会话模块的更多详细信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-25
        • 2012-02-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多