Başka yerlerde de belirtildiği gibi, str_replace size özellikle arıyoruz ne yapacaklar, ama ...
I profile.php?user=John' DROP DATABASE--
konusunda daha endişeli olurdum
Böyle sorguları inşa etmeyin. HİÇ. SQL Injection neden bir nedeni bakın. Bunu yapmak için doğru yolu için this article bir göz atın.
Oh, ve a comic bunu ASLA gerektiğini güçlendirmek için bir hafıza yardımı olarak kullanmak için.
EDIT: yanıt (bu sizin sorunuzu açıklığa kavuşturulması olduğu açıktır böylece sizin özgün soru düzenleyerek daha iyiyiz) yanıt olarak. Eğer kullanıcı varsa 'John Johnson' profile.php?user=John_Johnson
, sen yapıyorsun değiştirme ters gerekir veritabanında saklanan, ancak URL ona erişmek istiyorsanız:
$user = str_replace('_', ' ', $_GET['user']);
$user = mysql_escape_string($user);
$query = mysql_query("SELECT * FROM users WHERE username = '$user'");
// finns inte användaren så skriver vi ut ett felmeddelande
if (!mysql_num_rows($query)) exit('<p>The user you are looking for appears to be missing.</p>');
Bu almak profile.php?user=John_Johnson
ve sql sorgu üretecektir: SELECT * FROM users WHERE username = 'John Johnson'
Eğer cevapladı örnek kod profile.php?user=John Johnson
almak ve sql sorgu üretmek istiyoruz: ne istediğinizi tam tersi SELECT * FROM users WHERE username = 'John_Johnson'
hangi sanıyorum.
Fakat yine de, ben şiddetle hazırlanmış tablolara bakarak tavsiye ederim. mysql_escape_string
stop-gap ölçmek gerçekten. Tüm bu alır bir kez kullanmak için unutmak ve hack sitenizi açtık.