2013-04-10 102 views
1

我有一個頁面(父),它通過彈出(孩子)打開第二頁PHP代碼中的JavaScript腳本標籤

在第二頁上我有以下的PHP代碼從獲取一個HTML元素的值父頁:

$var=print_r("<script type='text/javascript'>var x=window.opener.document.getElementsByName('name1');document.write(x[0].value)</script>",true); 

當我回應變量$var我得到了我期望的。因此:

echo "test=" . $test; 

...打印例如頁面上的「費用」。

到目前爲止這麼好。

問題是,當我嘗試這個變量寫如文件:

$f=fopen("/mylog.txt","w+"); 
fwrite($f, $test); 
fclose($f); 

...然後,而不是$test(例如費用)的實際值,

我得到的在我的日誌文件整個腳本標籤,從而:

<script type='text/javascript'>var x=window.opener.document.getElementsByName('name1');document.write(x[0].value)</script> 

假設print_r與「真」參數的值返回到我的$test變量爲什麼它將確切的腳本標記寫入日誌文件?

我該如何克服這個問題?

+3

這是因爲JavaScript是由瀏覽器解釋。 – Prisoner 2013-04-10 14:38:34

+1

爲什麼你會''var = print_r('string',true);'一個字符串?這完全不會超過'$ var ='string';' – DaveRandom 2013-04-10 14:41:04

回答

4

當你的瀏覽器的值爲echo時,它會運行JavaScript並顯示結果。

將其保存到文件時,JavaScript不會被執行。

在這兩種情況下,都會輸出完整腳本,但瀏覽器實際上正在運行腳本,而您的文本編輯器不會。

1

將您在客戶端上的數據發送到服務器。您可以使用Ajax(如下所示)或表單。

$.post('myPHPfile.php',{name:window.opener.document.getElementsByName('name1')}); 

myPHPfile.php

$test=$_POST['name']; 
$f=fopen("/mylog.txt","w+"); 
fwrite($f, $test); 
fclose($f); 
0

OK,我完成了通過改變URL字符串這就要求有一個額外的變量(所需的一個),然後在第二頁,通過$ _GET期望的結果,我檢索這個值,並可以打印它沒有問題我的日誌文件。

非常感謝你們所有人的快速反應:)

+0

由於您正在存儲該值,所以post更合適。 – user1032531 2013-04-10 16:31:34