2011-05-09 22 views
1

有人在我們的網站上完成了一個表單並點擊提交之後,他被引導到一個登錄頁面。我想改變該流程,以便在提交時(1)URL1作爲新窗口打開; (2)用戶從當前表單頁面重定向到URL2。PHP破解 - 在提交表單時打開兩個網站

你能幫忙嗎?

當前的代碼片段 -

if(! isset($RedirectOnSuccess)) 
    $RedirectOnSuccess = 'oldURL'; 

我是一個高科技的新手,所以需要你在拼湊一起幫助。我正在使用MODx和網頁本身調用以下的PHP腳本 - [!FORM_SNIPPET? & RedirectOnSuccess = oldURL !]

+0

PHP無法控制打開新的瀏覽器窗口。 – 2011-05-09 22:09:54

+0

我是一名技術新手,所以需要你的幫助將它拼在一起。我正在使用MODx,網頁本身使用以下命令調用php腳本 - [!FORM_SNIPPET? &RedirectOnSuccess ='oldURL' !] – qANDa 2011-05-09 22:18:46

回答

1

鑑於彈出窗口阻止程序的問題,最好的辦法是在窗體上載中使用HTML定位一個新窗口。

<form target="_blank"> 

然後(在彈出的可能是通過opener.location.href)使用JavaScript,你可以在主窗口重定向到另一個網址。

2

這可能取決於彈出窗口的上下文,而不是使用傳統的彈出窗口,您可能會考慮一些侵入性較小且易於出現廣告攔截的東西,例如頁面中的lightbox或其他基於Ajax的顯示工具。您可以通過點擊提交按鈕上的點擊事件觸發燈箱,使用它顯示您的消息,然後關閉或提交表單。

避免在查看錶單結果頁面時依賴於JavaScript的解決方案,因爲某些(不常見)用戶可能會禁用它。如果按照上述方式實施,這些用戶將錯過彈出窗口,但表單仍然會通過。

你可以使用jQuery來實現這個功能,而無需修改MODx用來生成表單的php代碼,而是通過將javascript放入xhtml頭文件中,將單擊事件附加到表單的提交按鈕上。例如:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 
    <script src="/colorbox/jquery.colorbox.js"></script> 
    <script type="javascript"> 
    $("#FormID.input[type=submit]").click(function(e) { 
     /* prevent form from submitting */ 
     e.preventDefault(); 
     e.stopPropagation(); 

     /* on colorbox close, submit form */ 
     $(document).bind('cbox_close', function(){ 
     e.submit(); // submit the form on close 
     }); 

     /* open the colorbox */ 
     .colorbox({href:"http://example.com/url1"}); 
    }); 
    </script> 

我在這裏使用了ColorBox,但同樣的想法應該適用於其他燈箱的替代品。我沒有瀏覽器測試這個,所以一定要根據需要進行測試和適應。