我正在使用使用外部来源处理付款交易的网站,其中一个先决条件是成功时调用CGI脚本。
我想知道的是,可以使用CGI脚本重定向到PHP页面并让PHP检测到它是通过Perl重定向加载的,我目前已经在我的Perl中了。
#!/usr/bin/perl
#
# fixedredir.cgi
use strict;
use warnings;
my $URL = "http://www.example.com/";
Location: $URL;
答案 0 :(得分:4)
在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脚本的成功被称为”)表明了对动态网页基础知识的一些基本误解。 CGI。我的示例代码显示了如何在Perl CGI中进行重定向,但是原始问题(以及答案)可能不适合真实场景。
答案 1 :(得分:2)
如果这是一个调用CGI脚本的外部源,它会如何知道它是否是您网站上的PHP页面或CGI脚本?对我来说,您可以设置此付款服务来调用您的PHP页面,并避免任何重定向要求。或者有什么我不明白的东西?
如果它在您的网站上查找特定网址,请执行以下操作: G。 /cgi-bin/trigger.cgi
,您可以使用.htaccess
放入cgi-bin
来欺骗它,如下所示:
<Files trigger.cgi>
SetHandler application/x-httpd-php
</Files>
答案 2 :(得分:1)
最简单的方法是在网址中添加一个get变量:
my $URL = "http://www.example.com/?from=perl";
然后你的PHP不需要做任何花哨的事情。但是,您可以查看$_SERVER['HTTP_REFERER']
值并解析引用脚本的名称。但由于此值由用户代理设置,因此不一定可靠或不存在。
答案 3 :(得分:0)
要将页面重定向到另一个页面,请使用以下方法。
use CGI::Session;
use CGI::Session::Plugin::Redirect;
my $session = new CGI::Session();
print $session->redirect('http://exsample.com/redirect-path/');
搜索search.cpan.org
以获取有关会话模块的更多详细信息。