从动态填充的链接动态重定向URL

时间:2013-02-18 11:16:00

标签: php mysql redirect http-redirect url-redirection

mysql数据库有以下三列:

id  url_href              url
1    yahoo         http://www.yahoo.com
2    google        http://www.google.com
3    bing          http://www.bing.com

我使用以下查询来获取值

mysql_select_db($database_XYZ, $XYZ);
$query_urlencoder = "SELECT id, url_href, url FROM sites WHERE id >0 ORDER BY id DESC";
$urlencoder = mysql_query($query_urlencoder, $XYZ) or die(mysql_error());
$row_urlencoder = mysql_fetch_assoc($urlencoder);
$totalRows_urlencoder = mysql_num_rows($urlencoder);

href标签

<a href="redirect.php?encodeurl=<?php echo $row_urlencoder['url']; ?>" target="_blank"><?php echo $row_urlencoder['url_href']; ?></a>

根据重复区域动态填充页面上的链接,例如

yahoo
google
bing

并点击上面的链接分别将用户带到

http://www.examplecom/redirect.php?encodeurl=http://www.yahoo.com
http://www.example.com/redirect.php?encodeurl=http://www.google.com
http://www.example.com/redirect.php?encodeurl=http://www.bing.com

但实际上并没有像

那样重定向到相应的网址
http://www.yahoo.com
http://www.google.com
http://www.bing.com

在这种情况下,如何将href链接重定向到上面的url?任何建议或参考都应该感谢。

3 个答案:

答案 0 :(得分:1)

使用urlencode php函数

redirect.php?encodeurl=<?php echo urlencode($row_urlencoder['url']); ?>

答案 1 :(得分:1)

试试这个。

<?php
while($row = mysql_fetch_assoc($urlencoder)){
echo '<a href="http://yoursite.com/redirect.php?encodeurl='.$row_urlencoder['url'].'" target="_blank">'.$row_urlencoder['url_href'].'</a>';
} ?>

在你的redirect.php

<?php 

sleep(20);

header('Location:'.$_GET['encodeurl'].'');

?>

答案 2 :(得分:0)

rawurlencode( )会帮助你。

需要转义编码的字符是控件,空格和保留字符:

; / ? : @ & = + $ ,

分隔符也必须编码:

< > # % "

以下字符可能会导致网关和网络代理出现问题,还应编码:

{} | \ ^ [ ] `

PHP提供rawurlencode( )功能来保护它们。例如,rawurlencode( )可以构建嵌入式链接的href属性:

echo '<a href="search.php?q=' .
      rawurlencode("100% + more") .
      '">';

结果是<a>元素,其中嵌入的URL已正确编码:

<a href="search.php?q=100%25%20%2B%20more">

PHP还提供与urlencode( )函数不同的rawurlencode( )函数,前者将空格编码为+号,而后者encodes空格编号为%20。使用+字符编码空格是一种编码空格的早期HTTP方式。