I have one page (parent) which opens a second page via popup (child)
On the second page I have the following PHP code which gets the value of an HTML element from the parent page:
$var=print_r("<script type='text/javascript'>var x=window.opener.document.getElementsByName('name1');document.write(x[0].value)</script>",true);
When I echo the variable $var
I get exactly what I expect. Thus:
echo "test=" . $test;
... prints for example "Expenses" on the page.
So far so good.
The problem is when I try to write this variable to a file like:
$f=fopen("/mylog.txt","w+");
fwrite($f, $test);
fclose($f);
... then , instead of the actual value of $test
(e.g. Expenses),
I get the whole script tag in my logfile, thus:
<script type='text/javascript'>var x=window.opener.document.getElementsByName('name1');document.write(x[0].value)</script>
Assuming that print_r
with 'true' parameter returns the value to my $test
variable, why is it writing the exact script tag to the logfile?
How can I overcome this?
When you echo
the value to a browser, it will run the JavaScript and display the result.
When you save it to a file, the JavaScript isn't executed.
In both cases, the full script is output, but the browser is actually running the script, whereas your text editor won't.
Send your data which is on the client to the server. You can use Ajax (shown below) or a form.
$.post('myPHPfile.php',{name:window.opener.document.getElementsByName('name1')});
myPHPfile.php
$test=$_POST['name'];
$f=fopen("/mylog.txt","w+");
fwrite($f, $test);
fclose($f);
OK , I accomplished the desired result by altering the url-string which calls the 2nd page with an extra variable (the desired one) and then , via $_GET , I retrieve this value and can print it without problems to my logfile.
Many thanks guys to all of you for the quick responses :)