1

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?

2
  • 3
    that's because the javascript is interpreted by the browser. Commented Apr 10, 2013 at 14:38
  • 1
    Why on earth would you $var = print_r('string', true); a string? That acheives precisely nothing over $var = 'string'; Commented Apr 10, 2013 at 14:41

3 Answers 3

4

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.

Sign up to request clarification or add additional context in comments.

Comments

1

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);

Comments

0

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 :)

1 Comment

Since you are storing the value, post is more suitable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.