Bir veritabanına özel karakterler eklemek için nasıl?

7 Cevap php

Herkes nasıl bir MySQL veritabanı içine özel karakterler eklemek için bana söyleyebilir misiniz? Sözcük içeriyorsa, 'o zaman takılı olmaz rağmen ben, bir veritabanına bazı kelimeler eklemek amacıyla bir PHP komut dosyası yaptık.

PhpMyAdmin kullanırken ince özel karakterler ekleyebilirsiniz, ancak PHP ile onları eklerken sadece çalışmıyor. PHP başka bir şeye özel karakterler değişiyor olabilir mi? Eğer öyleyse, onları doğru eklemek yapmak için bir yolu var mı?

7 Cevap

$insert_data = mysql_real_escape_string($input_data);

Eğer veri $input_data olarak depolanan olduğunu varsayarsak

Sen kaçan? Mysql_real_escape_string () işlevi denemek ve özel karakterleri idare edecek.

kullanmak mysql_real_escape_string

Yani mysql_real_escape_string ne yapar?

Bu PHP kütüphane işlevi aşağıdaki karakterlere ters slash: \ n, \ r, \, \ x00 \ x1a, 've ". Önemli kısmı bu açıkları açmak için büyük olasılıkla karakterler çünkü tek ve çift tırnak, kaçtı olmasıdır.

Sql_injection hakkında kendinizi bilgilendirin. Sen bir başlangıç ​​olarak bu link kullanabilirsiniz

Büyük olasılıkla benzer SQL dizesi, kaçan:

SELECT * FROM `table` WHERE `column` = 'Here's a syntax error!'

Aşağıdaki gibi, tırnak kaçmak gerekiyor:

SELECT * FROM `table` WHERE `column` = 'Here\'s a syntax error!'

mysql_real_escape_string() sizin için bu işler.

Sen propably bir sorgu içine doğrudan yapıştırırken. Istead Eğer appriopriate işlevini kullanarak, onları "kaçış" gerekir - mysql_real_escape_string, mysqli_real_escape_string veya PDO::quote Kullandığınız uzatma bağlı.

Diğerleri mysql_real_escape_string işaret olarak (), (addslashes olacak gibi) sorunu çözecektir ancak you should always use mysql_real_escape_string(), güvenlik nedenleriyle Not - düşünün:

SELECT * FROM valid_users WHERE username='$user' AND password='$password'

Ne tarayıcı gönderirse

user="admin' OR (user=''"
password="') AND ''='"

Sorgu olur:

SELECT * FROM valid_users 
WHERE username='admin' OR (user='' AND password='') AND ''=''

yani güvenlik kontrolleri tamamen atlanır.

C.

Muhtemelen "mysql_real_escape_string()" u için çalışacak