1

私のウェブサイトに入った URL に対して単純な禁止ツール システムを実行しようとしていますが、まだ URL 比較の問題があります。

I 'm going to ban を使用して、次のデータベース テーブルbadurlを作成しました。url

CREATE TABLE `badurl`(
`id` int(3) NOT NULL auto_increment,
`url` text,
PRIMARY KEY (`id`),
KEY `id` (`id`))

ここで、次の URLwww.no_good_site.com を保存し、誰かが投稿http://www.no_good_site.comしたとしますが、それは同じですが、禁止されません。

$user = "http://www.no_good_site.com" // visitor post this

// i'm gonna do compare by the stored banned urls
// I've stored this one www.no_good_site.com

$qry="select * from badurls where url='$user'";
$result=mysql_query($qry) or die($qry);
if(mysql_num_rows($result)=='0'){

echo "Good";

}else{

while($line=mysql_fetch_array($result)){

echo "Bad";

}}

www. http://それで、エンドスラッシュなしで両方(投稿されたURLと保存されたURL)を設定/して比較できるアイデアはありますか。[ no_good_site.com]

彼らは多くの可能性を持って入る可能性があり、私のやり方は両方ともまったく同じである必要があるため、失敗したためです。

no_good_site.com
no_good_site.com/
www.no_good_site.com/
http://no_good_site.com
http://no_good_site.com/
http://www.no_good_site.com
http://www.no_good_site.com/
4

4 に答える 4

2

比較する前に、すべての URL を同様の形式にします。

no_good_site.com => www.no_good_site.com
no_good_site.com/ = > www.no_good_site.com
www.no_good_site.com/ => www.no_good_site.com
http://no_good_site.com => www.no_good_site.com
http://no_good_site.com/ => www.no_good_site.com
http://www.no_good_site.com => www.no_good_site.com
http://www.no_good_site.com/ => www.no_good_site.com

<?php
    function formatURL($url) {

        //an array of strings I wish to remove
        $remove = array(
                        "http://",
                        "www.",
                        "index.html",
                        "index.php"
                        );

        //loop through array
        foreach($remove as $value) {
            //replace array values with nothing
            $url = str_ireplace($value, '', $url);
        }

        //if the url ends in a / then trim it off
        $url = rtrim($url,'/');

        return $url;

    }
?>
于 2012-05-22T11:06:42.407 に答える
2

Try remove http://, www. and end '/' before query:

$user = "http://www.no_good_site.com/";  // visitor post this
$user = rtrim(str_ireplace(array('http://', 'www.'), '', $user), '/');
于 2012-05-22T11:09:44.730 に答える
1

簡単なことの 1 つは、入力した URL からドメイン名を抽出し、完全な URL ではなく DB で検索する場合です。

$_SERVER''SERVER_NAME'' として変数からドメイン名を簡単に取得できます。

于 2012-05-22T11:03:52.063 に答える
0

おそらくこれ?

$qry="select * from badurls where url LIKE '%$user%'";

ドメインは、クエリ(?blah=boo)とともに、プレフィックス(http,ssl)としてプロトコルを含む形式で提供されます。

于 2012-05-22T11:07:13.283 に答える