Search code examples
phpcurlfile-get-contents

Using file_get_contents or curl to embed html from a source outside my domain


We are developing a web app that enables the end user to place a bit of code on their webpage, so that anyone who visits their page will see a little pop up button on the edge of the browser window. When clicked, it opens a small panel where they can enter a telephone number for the website owner to call them back.

I am running up against a security issue. I am attempting to use server side include to place the button on the client's website. However, because this included site is on a different domain than the client's website, it is not allowed.

I have tried these two methods that I got from online forums, neither of which worked for me.

  1. Use the file_get_contents handler, like this;

    $includeFile =   
    file_get_contents("http://bizzocall.com/subdomains/dev/httpdocs/slideouttesttopDATA.php");
    echo $includeFile;
    

ERROR failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found.

  1. Use curl, like this:

    function curl($url){
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    
    
        $feed = 'http://bizzocall.com/subdomains/dev/httpdocs/slideouttesttopDATA.php';
        $bizzobtn = curl($feed);
        echo $bizzobtn;
    

This didn't work either.

ERROR The requested URL /subdomains/dev/httpdocs/slideouttesttopDATA.php was not found on this server.

This looks like its truncating the bizzocall.com/ off of the url. Perhaps If I knew how to write this chunk of code correctly,this would work.

Any help here would be welcome!


Solution

  • The 404 error is coming from the remote server, not your own. Try to reach that URL - You'll get the same 404.

    When I visit http://bizzocall.com/subdomains/dev/httpdocs/slideouttesttopDATA.php, I get the following:

    enter image description here

    Therefore, the issue is that you're using the wrong URL. Your code is sound, however.