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