How can I dynamically display an external page in an iframe?

I'd like to have a single page at my site where I could dynamically display an iframe of an external URL with my branding above it, so that a URL like http://www.mysite.com/view.php?URL=www.cnn.com would automatically display in this layout:

http://cl.ly/6b7e8801e41034045e22

the way StumbleUpon's top banner looks (doesn't have to be that url structure)

Is there a way to do this in PHP or jQuery?

Thanks,

Nathan
nbierm65Asked:
Who is Participating?
 
zicevaConnect With a Mentor Commented:
for this to work: <iframe id="the_iframe" src="<?php echo $_GET["URL"]; ?>"></iframe>

The URL has to begin with http://
You can tweak it a little bit, and will work either way:

<iframe id="the_iframe" src="<?php echo  substr($_GET["URL"],0,7)=="http://"?$_GET["URL"]:"http://".$_GET[URL]; ?>"></iframe>

This works if you access:
http://www.mysite.com/view.php?URL=www.espn.com
or
http://www.mysite.com/view.php?URL=http://www.espn.com
0
 
Gurvinder Pal SinghCommented:
if the iframe's id attribute value is 'iframeId' then

$("#iframeId").attr("src", "http://www.mysite.com/view.php?URL=www.cnn.com");

you can put this line whenever you want to update the iframe's content
0
 
zicevaCommented:
Why would you need it to be "dynamic"?

You can simply have view.php look like this:
<html>
<head>
<title>Whatever</title>
</head>
<body>
<div>
##Your Branding HERE##
</div>
<iframe id="the_iframe" src=<?php echo $_GET["URL"]; ?>></iframe>
</body>
</html>

Of course, you need a little CSS & stuff...

By "dynamic" one would understand that AFTER what I the code I just gave is loded, you what to change the content of only the iframe which would require a little javascript "magic" like this:

in the branding <div> you would have a button:

<input type="button" value="Other URL" onclick="document.getElementById('the_iframe').src='http://www.google.ro'">

That [i]dynamically[/i] loads www.google.ro in the iframe when pressed.
0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
nbierm65Author Commented:
Maybe 'dynamic' is the wrong word. What I mean is that I would type

http://www.mysite.com/view.php?URL=www.cnn.com

and see cnn.com in the iframe, and then type  

http://www.mysite.com/view.php?URL=www.espn.com

and see espn.com in the iframe, without any adjustments to any code--ideally without even any need to click an input button in a branding div. So in essence, how to get this

<?php echo $_GET["URL"]; ?>

to pull the external URL right from here:

http://www.mysite.com/view.php?URL=www.espn.com

without any other steps. Does that make sense?
0
 
nbierm65Author Commented:
got it, thanks!

http://nathanbweb.host22.com/try/iframe/extiframephp.html?URL=http://www.cnn.com

my question got posted twice by mistake, and in the other thread someone gave me a JS solution, if anyone's curious or would prefer that:

http://bit.ly/bhApLl
0
 
Gurvinder Pal SinghCommented:
@nbierm65: Did the jquery solution not worked?
0
 
nbierm65Author Commented:
I wasn't sure how to try it, since it seemed to be creating an iframe within which the entire URL string was called as the source. Also, it seemed that each URL would have to be hardcoded into the jQuery. (Maybe I misunderstood what you proposed.) I was looking for the iframe to call only the external URL after parsing it from the URL string (if that makes sense; I may have my terms jumbled). If you have a way to do that, so that a page like is automatically produced in jquery (and the cnn.com can be changed to any URL just by typing it into the browser bar):
http://nathanbweb.host22.com/try/iframe/extiframe.html?URL=http://www.cnn.com

I'll see if there's a way to go back and award multiple points, or re-post it as a jQuery-only question and award your solution.
0
All Courses

From novice to tech pro — start learning today.