2010-04-29 87 views
1

我正在與一個使用外部來源來處理付款交易的網站合作,其中一個先決條件是在成功時調用一個CGI腳本。我可以重定向到Perl CGI腳本中的PHP頁面嗎?

我想知道的是可以用CGI腳本重定向到一個PHP頁面,並讓PHP檢測到它已經通過Perl重定向加載,我目前已經在我的Perl中。

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

use strict; 
use warnings; 


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

Location: $URL; 

回答

4

標準的方式做在Perl CGI編程:/cgi-bin/trigger.cgi,你可以用.htaccess放於cgi-bin絕招吧,像這樣。 重定向可以像這樣編碼(不知道語法)。

#!/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中進行重定向,但很可能原始問題(以及答案)不適合真實場景。

+0

我想知道,激發癡迷他們的XY問題的人容易接受錯誤的答案是多麼容易;) – codeholic 2010-04-29 16:40:11

1

的最簡單的方法是將一個GET變量添加到您的網址:

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

那麼你的PHP沒有做任何幻想。但是,您可以查看$_SERVER['HTTP_REFERER']值並解析引用腳本的名稱。但由於該值由用戶代理設置,因此不一定可靠或不存在。

2

如果這是一個調用CGI腳本的外部源,它將如何知道它是否是您網站上的PHP頁面或CGI腳本,它會調用?對於我而言,您可以設置此付款服務來調用您的PHP頁面,並避免重定向的任何要求。還是有什麼我不明白?

如果它在您的網站上查找特定的網址, G。使用CGI.pm模塊

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

你還沒有理解的是,在Web編程中,當人們看到「調用CGI腳本」這個詞時,他們會想到「Perl」,並且當他們看到「Perl」這個詞時,就會想到「CGI腳本」。我想你是正確的;甚至「調用CGI腳本成功」的要求也沒有任何意義,CGI似乎沒有任何理由參與其中,更不用說Perl了。 – reinierpost 2010-04-29 12:56:44

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

相關問題