1

SQL 選択で bbcode をコーディングしたいと思います。基本的には、ユーザーが[user]Anotheruser[/user]テキスト フィールドに入力できるようにしたいと考えています。テキスト フィールドは、フロントエンドで次のような URL に変換されますhttp://mydomain.com/user/[userid]/anotheruser。したがって、ユーザー ID を取得するには、SQL 選択を含める必要があります。さらに、他のユーザーが実際に存在することを確認するために if else を含める必要があります。bbcode の作成に通常使用される でこれを行うことができますかpreg_replace、それとももっと複雑なことをする必要がありますか?

4

3 に答える 3

0

他の場所で行う必要があるのと同じように、POST側での注入は避ける必要があります。

この状況はまったく違いはありません。

于 2010-05-10T09:49:58.350 に答える
0

preg_match最初にタグを取得し、ユーザー名を取得してクエリを実行し(注意して、その手順を安全にしてください)、一致した文字列全体を新しいURLに置き換えます。

preg_match_all ( '#\[user\](.*?)\[/user\]#i', $text, $matches, PREG_SET_ORDER );

for ( $i = 0, $j = count( $matches ); $i < $j; $i++ )
{
    $userName = $matches[$i][1];
    $userId   = 0;

    // query example with mysqli
    $stmt = $sql->prepare( 'SELECT uid FROM users WHERE username = ? LIMIT 1' );
    $stmt->bind_param( 's', $userName );
    $stmt->execute();
    $stmt->bind_result( $userId );

    if ( $stmt->fetch() )
    {
        $text = str_replace( $matches[$i][0], "<a href=\"/user/$userId/$userName\" title=\"$userName\">$userName</a>", $text );
    }
}
于 2010-05-10T10:12:15.973 に答える
0

pre_replace は機能するはずですが、注意してください。穴があれば必ずパッチを当ててください...特にSQLインジェクションに注意してください。

于 2010-05-10T09:33:07.767 に答える