2011-08-01 48 views
2

我正在使用PHP來生成一個使用外部(我的網站)JavaScript文件來設置隱藏表單輸入值的動態Web表單。我的表單在重新發布到外部網站之前提交給我自己的PHP頁面。外部網站要求提供此隱藏值。當JavaScript禁用客戶端時,有沒有辦法從PHP執行外部Javascript?

許多使用我的表單的瀏覽器沒有啓用javascript,因此跟蹤失敗,我無法提交到外部網站。是否有任何方法執行javascript文件從我的php代碼中獲取跟蹤信息而不發送給客戶端瀏覽器?

這是一個僞代碼模擬了代碼的,我要處理表單的帖子:

if ($doPOST) { 
    //Check POSTed parameters for tracking id ($tid) 
    if ($tid == ''){ 
    //Execute external javascript to get tid 
    } 
    //Post form data to external site 
} 

我已經環顧四周,找不到任何相關信息,但如果你知道一個網站,的這是解釋讓我知道。爲了澄清,我沒有找到有關增加javascript文件客戶端的信息。

編輯: 這是表單執行的Javascript。我沒有權力改變這個腳本。數字48891是不是硬編碼在它執行更改腳本:

onReady=(function(ie){var d=document;return ie?function(c){var n=d.firstChild,f=function(){try{c(n.doScroll('left'))}catch(e){setTimeout(f,10)}};f()}:/webkit|safari|khtml/i.test(navigator.userAgent)?function(c){var f=function(){/loaded|complete/.test(d.readyState)?c():setTimeout(f,10)};f()}:function(c){d.addEventListener("DOMContentLoaded",c,false)}})(/*@cc_on [email protected]*/); 
var test_track=function(data){onReady(function(){document.getElementById('test_track').value = data.TID})} 
test_track({"TID" : "488891"}); 
+0

我最好奇的,您能不能給我們要執行JS的例子嗎? – tomdemuyt

+0

我發佈了需要執行的Javascript。 –

+0

否。如果JavaScript被禁用,那麼JavaScript將不會運行。 –

回答

1

如果你有時間壓力(我不是說這是一個好主意),你可以解析出TID值並將其寫入隱藏表單值'test_track'。

你可以使用JavaScript的內容:

$js = file_get_contents('http://example.com/source.js'); 
+0

最大的竅門是讓腳本執行,以便我可以獲取該值。由於客戶端沒有啓用javascript,有沒有辦法在PHP中請求腳本,以便我可以解析它的服務器端? –

+0

有,用該命令更新答案。 – tomdemuyt

+0

謝謝湯姆,這是一個黑客,但我會看到它會發生什麼。 –

2

號如果JavaScript是在客戶機上的瀏覽器禁用你不能得到的信息進行瀏覽器。我建議你使用PHP進行跟蹤

3

是的,你可以執行JavaScript服務器端。但是,對於一個片段來說,這不會有多大意義,並且您將無法訪問DOM。請參閱v8cgi項目以獲取服務器端JavaScript實現。

只需在PHP中重寫它。

+0

此代碼位於我的網站外部,因此我無法重寫它。感謝您使用v8cgi參考。 –

相關問題