2013-02-18 122 views
1

動態URL MySQL數據庫具有以下三列:Rediricting從動態填充鏈接

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鏈接到在這種情況下的上述網址?任何建議或參考應感謝讚賞。

+0

是你的重定向。PHP是正確的,並指向所需的網址正確 – 2013-02-18 11:19:40

+0

是的,否則我將無法打開URL'http://www.site.com/redirect.php?encodeurl=http://www.yahoo。 com'。如果redirect.php不正確,網址會被打開嗎?我很好奇學習它。 – 2013-02-18 11:30:21

回答

1

使用進行urlencode PHP函數

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

應該正確地命名數據庫字段'url'來利用這個php函數嗎? – 2013-02-18 11:31:54

+0

與你的db字段名稱和php函數名沒有關係。 – 2013-02-18 11:34:20

+0

@SilentPond沒有字段名稱並不重要.. – 2013-02-18 11:35:04

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'].''); 

?> 
+0

不使用睡眠,因爲它停止其他http請求... – 2013-02-18 11:46:12

+0

hey dude @ Basic Bridge,'header('Location:'。$ _ GET ['encodeurl']。''); ?>在redirect.php中完成了這項工作。我沒有改變我在我的問題中發佈的現有代碼中的任何內容。非常感謝。謝謝@ Dipesh Parmar。 – 2013-02-18 12:24:30

+0

@SilentPond歡迎您 – 2013-02-18 12:47:50

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()函數的作用在於前者將空格編碼爲+符號,而後者編碼爲%20的空格encodes。使用+字符來編碼空間是一種早期的HTTP編碼空間方式。

+0

感謝您的信息@Dipesh Parmar – 2013-02-18 12:32:15