2013-04-10 98 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