2012-05-28 63 views
0

我有一個網站,人們加入他們的網站在我的數據庫,我已經做過類似的任何用戶都可以添加只有一個相同的站點如 的條目;如果USER1補充說:http://site1.com則沒有其他用戶可以添加http://site1.com他們顯示該網站已在DB,現在有些人做這件事情,他們讓子域,http://subdomain.site1.com,那麼他們可以添加這已經是在數據庫中的主域的子域的UL號。現在我的問題是如何防止這種情況發生?使用PHP不要讓另一個入口

我嘗試:

.... 
     $check = mysql_query("SELECT * FROM domain WHERE url LIKE '%$suburl%'"); 
    if($check=="$url"){ 
echo"You cannot add a subdomain"; 

} 
?> 
+0

@Jordan加入吧:) –

+2

請停止與古MySQL擴展編寫新的代碼:它不再保持和社區已經開始了[棄用過程(http://news.php.net/php.internals/53799 )。相反,您應該使用改進的[MySQLi](http://php.net/mysqli)擴展或[PDO](http://php.net/pdo)抽象層。也不要將變量(尤其是那些來自用戶的變量)放入SQL中,因爲這會使您容易受到SQL注入的影響。您應該使用預準備語句,將變量作爲參數傳遞給MySQL,而這些參數不會針對SQL進行評估。 – eggyal

+1

「mysql_query」函數的返回值是一個資源標識符;將它與'$ url'進行比較(爲什麼要引用它?)可能不是你想要的。也許你想要[?mysql_num_rows'](http://php.net/manual/en/function.mysql-num-rows.php)? – eggyal

回答

2

鑑於新的條目http://subdomain.site1.com,使用下面的函數來獲取site1.com部分(我得到了它here),並把結果裏面的LIKE '%%'

// Get the domain name from URL 
function get_domain($url) 
{ 
    $host = parse_url($url, PHP_URL_HOST); 
    if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $host, $regs)) { 
    return $regs['domain']; 
    } 
    return false; 
} 

$host = get_domain("http://subdomain.site1.com"); // site1.com 
$qry = mysql_query("SELECT * FROM domain WHERE url LIKE '%$host%' LIMIT 1"); 

if (mysql_num_rows($qry)) { 
    // Site already exist 
} 
+0

謝謝:) @eggyal感謝,它只能如果請求是從單一的形式,也有一個文本區域的形式,用戶可以從中添加多數量的URL它不是在那裏工作的。 。 有任何想法嗎? –

相關問題