[英]Can I redirect to a PHP page from a Perl CGI script?
我正在一個使用外部資源處理付款交易的網站,前提條件之一是成功調用CGI腳本。
我想知道的是,可以使用CGI腳本重定向到PHP頁面,並使PHP檢測到它已通過Perl重定向加載,我目前在Perl中。
#!/usr/bin/perl
#
# fixedredir.cgi
use strict;
use warnings;
my $URL = "http://www.example.com/";
Location: $URL;
在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中進行重定向,但是原始問題(以及答案)可能不適合實際情況。
如果這是調用CGI腳本的外部源,那么如何知道它是您的站點上的PHP頁面還是CGI腳本? 對我來說,您只需設置此付款服務即可調用您的PHP頁面,而無需任何重定向。 還是我不了解的東西?
如果它在您的站點上查找特定的URL,例如/cgi-bin/trigger.cgi
,則可以使用放在cgi-bin
.htaccess
來欺騙它,如下所示:
<Files trigger.cgi>
SetHandler application/x-httpd-php
</Files>
最簡單的方法是將get變量添加到您的URL:
my $URL = "http://www.example.com/?from=perl";
那么您的PHP不必做任何花哨的事情。 但是,您可以查看$_SERVER['HTTP_REFERER']
值並解析引用腳本的名稱。 但是由於此值是由用戶代理設置的,因此不一定可靠或不存在。
要將頁面重定向到另一個,請使用以下方法。
use CGI::Session;
use CGI::Session::Plugin::Redirect;
my $session = new CGI::Session();
print $session->redirect('http://exsample.com/redirect-path/');
搜索search.cpan.org
以獲取有關會話模塊的更多詳細信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.