views:

518

answers:

3

I want to pass a function a string, which takes that string tacks it onto url. Then goes to that url and then returns the page to my server so I can manipulate it with JS.

Any Ideas would be much appreciated.

cheers.

A: 

You should be able to use fopen() for what you want. It can accept URLs.

echo "<script type='text/javascript' src='myjavascript.js'></script>";
$handle = @fopen("http://www.example.com/", "r");
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
Evan Fosmark
+1  A: 

If your fopen_wrappers are enabled, you can use file_get_contents() to retrieve the page, and then insert JavaScript into the content before echoing it as output.

$content = file_get_contents('http://example.com/page.html');
if( $content !== FALSE ) {
  // add your JS into $content
  echo $content;
}

This of course won't affect the original page.

Jeff L
A: 

Using CURL would probably be easiest but I prefer to do stuff myself. This will connect to a given address and return the contents of the page. It will also return the headers, though, so watch out for that:

function do_request ($host, $path, $data, $request, $specialHeaders=null, $type="application/x-www-form-urlencoded", $protocol="", $port="80")
{
        $contentlen = strlen($data);
     $req = "$request $path HTTP/1.1\r\nHost: $host\r\nContent-Type: $type\r\nContent-Length: $contentlen\r\n";
     if (is_array($specialHeaders))
     {
         foreach($specialHeaders as $header)
      {
          $req.=$header;
      }
     }
     $req.="Connection: close\r\n\r\n";
     if ($data != null) {
      $req.=$data;
     }
     $fp = fsockopen($protocol.$host, $port, $errno, $errstr);
     if (!$fp) {
      throw new Exception($errstr);
     }
     fputs($fp, $req);
     $buf = "";
     if (!feof($fp)) {
      $buf = @fgets($fp);
     }
     return $buf;
}
Cameron
Yeah, file_get_contents() is probably also easier but this will work if fopen_wrappers is not enabled.
Cameron