2012-04-26 18 views
0

私は以下のスクリプトを使って、投稿を閲覧できるユーザーをスキャンします。閲覧者のIDとフィールドに格納されているIDとが一致するように更新するにはどうすればよいですか。それが合っていれば、それはうまくいきます。格納されたエントリは、99394david、324234smith、34343janeのようなものになります。だから私が持っているこのスクリプトはそれにマッチしていません。私は単に、クエリ(私はあなたが正確にあなたのpostsテーブルを充填する方法について疑問を持っているが...)に$personidを追加します複数のIDから1つのIDを照合するにはどうすればよいですか?

$kit = mysql_real_escape_string($_GET['id']); 

$sql="SELECT `Who_can_see` from `posts` where `post_id` = '$kit'"; 
    $result=mysql_query($sql); 

    $query = mysql_query($sql) or die ("Error: ".mysql_error()); 

    if ($result == "") 
    { 
    echo ""; 
    } 
    echo ""; 


    $rows = mysql_num_rows($result); 

    if($rows == 0) 
    { 
    print(""); 

    } 
    elseif($rows > 0) 
    { 
    while($row = mysql_fetch_array($query)) 
    { 
    $userallowed = htmlspecialchars($row['who_can_see']); 
    } 
    } 

    //$personid is drawn from the database. its the id of the 
    person viewing the link. 

    if ($userallowed == $personid) { 
echo("allowed"); 
    } else { 
echo("not allowed"); 
    die(); 
    } 

    ?> 

答えて

0

:あなたの結果は、行が含まれている場合は

$sql="SELECT `Who_can_see` from `posts` 
     where `post_id` = '$kit' 
     AND `Who_can_see` = '$personid'"; 

、ユーザーは投稿を閲覧することができます。

ちなみに、SQL文の潜在的な問題を避けるために、prepared statementを使用することをお勧めします。

編集:Who_can_seeエントリのカンマ区切りのリストを含めることができるという事実に基づいて、あなたのオリジナルのスクリプトを使用し、ちょうどあなたが例striposのために使用して、一致させる方法を変更することができます。

if (stripos($userallowed, $personid) !== false) { 
    // $personid is found in $userallowed 
    echo("allowed"); 
} else { 
    echo("not allowed"); 
    die(); 
} 
+0

ありがとうございました。それはうまくいかなかった。私はエスケープ文字列を使用しています、それは十分であるはずですか? – ariel

+0

@arielはい、それで十分です。有効な例の場合、両方の値は( 'Who_can_see'と' $ personid')のように見えますか? – jeroen

+0

who_can_see誰もが持っているかもしれません、それとも99394davidのような1人でも、99394david、324234smith、34343janeのような複数の人でもかまいません。 – ariel

関連する問題