1

一个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);

链接标签

<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 链接重定向到上述网址?任何建议或参考将不胜感激。

4

3 回答 3

1

使用 urlencode php 函数

redirect.php?encodeurl=<?php echo urlencode($row_urlencoder['url']); ?>
于 2013-02-18T11:21:19.000 回答
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'].'');

?>
于 2013-02-18T11:40:00.473 回答
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 对空格进行编码的方法。

于 2013-02-18T11:44:33.577 回答