PHP: SQL seçimi ile BBCode?

3 Cevap php

SQL seçimi ile bir bbcode kod istiyorum. Temelde Ben kullanıcı daha sonra bu gibi görünen bir URL'ye ön uç dönüştürülen bir metin alanına girdi [user]Anotheruser[/user], muktedir istiyorum: http://mydomain.com/user/[userid]/anotheruser. Aslında var diğer kullanıcı bulmak için başka Yani eğer kimliği almak için, bir SQL seçim eklemeniz gerekir, ve ayrıca bir istiyorum. Ben bir preg_replace gibi genellikle BBCode'u oluşturmak için kullanılan, ya da daha karmaşık şeyler yapmak gerekiyor ile bunu yapabilir mi?

3 Cevap

pre_replace dikkatli tho, çalışması gerekir. Eğer herhangi bir delik yama emin olun ... Özellikle sql enjeksiyon için dikkat.

Eğer başka bir yerde yapmalıyım gibi, enjeksiyonlar POST-yan kaçınmalısınız.

Bu durum hiç farklı değil.

preg_match ilk etiketi, kullanıcı adını almak sorguyu yürütmek (dikkatli olmak ve bu adım güvenli olun!) Ve yeni url ile tüm eşleşen dizesini değiştirmek:

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 );
    }
}