2011-11-13 9 views
0

mydatabaseのダブルリンクに問題があります。 私は新しい投稿のためのPHPファイルフォームにあります。 $ _POST ['title'] タイトルを投稿すると、タイトルからデータベースに新しいURLが作成されます。問題は、ユーザーがすでにデータベースに存在するタイトルを提出したときで、PHPがダブルリンクを作成したときです。私はurlをチェックする関数を書いて、新しい投稿のための別のリンクを作成したいと思っています:if exist/posts/new_link functionは/ posts/new_link_1のように別のリンクを作成します。私の悪い英語のためタイトルのデータベースで作成されたダブルリンク

$link = $_GET['url']; 

$checkdb = mysql_query("SELECT `url` FROM `posts` WHERE `url`='$link'") or die("ERROR"); 
$howmanypost = mysql_num_rows($checkdb); //this is check links in db 

if ($howmanypost = $newlinksfromtitle) { 

// Here I would like the function that creates a new url to db 

} else { 

$newpost = "INSERT INTO `posts` (`id`, `title`, `img`, `tags`, `author`, `data`, `type`, `url`) VALUES ('', '$title', '$img', '$tags', '$author', '$data', 'img', '$url')"; 
$makepost = mysql_query($newpost); 

} 

申し訳ありません: 私はこのコードを持っていました。

+0

ニースのSQL注入穴。 –

+0

今すぐすでにパッチが適用されています –

答えて

1

あなたは同じタイトルのすべての記事は、そのために類似したURL、クエリを持っていることがわかっている場合:

$title = mysql_real_escape_string($title); 
$result = mysql_query("SELECT `title` FROM `posts` WHERE `title`='$title'"); 
$num_same = mysql_num_rows($result); 

if($num_same > 0) 
{ 
    // We know there's at least 1 post with the same title, so change the URL 
    $url = $url . '_' . $num_same; // Or: ($num_same + 1) 
} 

$sql = "INSERT INTO `posts` (`id`, `title`, `img`, `tags`, `author`, `data`, `type`, `url`) VALUES ('', '$title', '$img', '$tags', '$author', '$data', 'img', '$url')"; 
$result = mysql_query($sql); 

あなたの文字列がSQLインジェクションの対象にはなりませんので、あなたが適切にあなたの入力を消毒していることを確認します。

+0

速い応答をありがとう、私はこれを試します –

+0

これは素晴らしい作品です、ありがとうございます。 –

関連する問題