Re: Hide the real URL
| From: | Paul Novitski | Date: | Thu, 26 Jul 2007 13:50:47 +0000 |
| Subject: | Re: Hide the real URL | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-259572@lists.php.net to get a copy of this message | ||
At 7/26/2007 06:18 AM, elk dolk wrote:
I want to hide the real URL to my images by masking it with PHP the code looks like this: $query = "SELECT * FROM table"; $result=mysql_query($query); while ($row = mysql_fetch_array($result)) { echo "<img src='http://www.mysite.com/img/{$FileName}'/>"; } if you look at the source in browser you will see: <img src='http://www.mysite.com/img/111.jpg' /> how can I show it like this: <img src='show.php?FileName=111.jpg' />Your primary script would echo:
while ($row = mysql_fetch_array($result))
{
// get the file name from the data table
$FileName = $row['filename'];
// encode the filename to be legal in an URL
$FileName = urlencode($FileName);
// download to browser
echo <<<_
<img src="show.php?FileName=$FileName" />
_;
}and the secondary script show.php could use logic such as this:
// if the querystring contains the expected parameter
if (isset($_GET['Filename']))
{
// get requested filename
$Filename = 'img/' . $_GET['Filename'];
// if that file exists
if (file_exists($Filename))
{
// output to browser, suppressing error message
@readfile($Filename);
}
}
Notes:
Your sample script included:
echo "<img src='http://www.mysite.com/img/{$FileName}'/>";Marking up your images as <img ... /> indicates that you want to use XHTML. XHTML requires that attributes be quoted with double quotes, not single quotes (apostrophes). Use <http://validator.w3.org/> to validate your markup. However, simply reversing the quotes in your statement would result in:
echo '<img src="http://www.mysite.com/img/{$FileName}"/>'; This would not work because PHP would fail to expand the variable name inside single quotes. Therefore you'd need to escape the inner quotes like so: echo "<img src=\"http://www.mysite.com/img/{$FileName}\"/>"; or use heredoc (<<<...) which I prefer to use because it means not having to escape the quotes. In a case like this it also means not having to enclose the variable in curly braces:
echo <<<_<img src="show.php?FileName=$FileName" /> _; urlencode: http://php.net/urlencode heredoc syntax: http://php.net/heredoc#language.types.string.syntax.heredoc isset: http://php.net/isset file_exists: http://php.net/file_exists readfile: http://php.net/readfile @ Error Control Operator: http://php.net/@ Regards, Paul __________________________ Paul Novitski Juniper Webcraft Ltd. http://juniperwebcraft.com