Относно mysql_real_escape_string |
||||
|
||||
|
|
||||
![]() ![]() |
Привет. Досега винаги съм използвал addslashes, но тъй като повечето отзиви са в полза на mysql_real_escape_string, реших да го използвам в един проект. Питането ми е следното - как точмно действа тази функция и добавя ли реално в базата наклонени черти пред " ? Защото като пусна някой стринг през mysql_real_escape_string и му дам да ми го визуализира в браузъра преди записа в базата данни , е с наклонени черти. А после в базата данни те липсват? И ако добавя черти - с коя функция да се трият при четене от базата? Предварително благодаря на всички |
|||
|
---------------------------
Потребител от: 27.07.06 | Всички уроци от bourev | Всички скриптове от bourev |
||||
|
|
||||
|
||||
|
|
||||
![]() ![]() |
mysql_real_escape_string() calls MySQL's library function mysql_real_escape_string, which prepends backslashes to the following characters: \x00, \n, \r, \, ', " and \x1a. stripslashes премахва чертите |
|||
|
---------------------------
Потребител от: 15.04.08 | Всички уроци от po_taka | Всички скриптове от po_taka http://www.tekstove.info/ дайте някви идеи кво да го права тва нещо |
||||
|
|
||||
|
|
||||
![]() ![]() |
Ясно, но проблема при мен е, че в базата данни наклонената черта липсва пред тези символи. А в браузъра ми дава, че функцията ги поставя. Някакви идеи? Благодаря |
|||
|
---------------------------
Потребител от: 27.07.06 | Всички уроци от bourev | Всички скриптове от bourev |
||||
|
|
||||
|
|
||||
![]() ![]() |
Чертите се добавят , за да се предотврати SQL инжексия, а в базата се записват без черти. Като в ехо-то echo"123\"456"; , да добавяш специални символи. Ще ти отговора , като цитирам 2 поста от булфорум name='tedy' date='Jun 30 2008, 22:04' post='1495162992' Като начало Винаги ънескейпвай входящите параметри от $_POST/$_GET. А дали да го направиш това се проверява с get_magic_quotes_gpc(). Това е една адски тъпа опция на php.ini, която много дразни. Защо по дяволите за всеки реяукест енджина трябва да предполага, че ще искам да вкарвам в БД, при това с addslashes() ?! Че и на доста хостове е включено тва. Понеже по default ПХП е настроен (май последните версии не беше така..) автоматично да изпълнява addslashes() върху входните данни. И ти с mysql_real_escape_string() му правиш допълнителен ескейпинг. Познай на 3 наклонени черти двойното ескейпване до колко черти води в крайна сметка :) . Още в началото ако get_magic_quotes_gpc() върне Труе, тогава правиш stripslashes() на $_POST променливата. После я мъсялреалесцапестринг-ваш и т.н. CODE
Така получавам 'неопетнен' параметъра и нататък нормално си го escape-вам (ако ще влиза в БД). name='karaman' date='Jul 1 2008, 08:22' post='1495163054' не си разбрал правилно, ти правиш strip_slashes на изхода от mysql, а не трябва. При включен magic GPC (Get/Post/Cookie) strip_slashes се прави на входа на PHP скрипта, а после се прави mysql_real_escape_string на данните, които записвате в SQL |
|||
|
Това мнение е редактирано от po_taka на 10.08.2008 23:36
---------------------------
Потребител от: 15.04.08 | Всички уроци от po_taka | Всички скриптове от po_taka http://www.tekstove.info/ дайте някви идеи кво да го права тва нещо |
||||
|
|
||||
|
|
||||
![]() ![]() |
Най-напред - благодаря ти за отговорите. всъщност, използвам следната функция, която чисти добавените черти при включена get_magic_quotes_gpc(): CODE
Значи да те разбирам, че това е разликата между двете функции - mysql_real_escape_string добавя черти за да предпази от SQL инжексия, а в базата си записва нормален стринг - т.е. без черти. И следователно като чете от базата данни - не е необходимо да се стрипслашва? Още веднъж много ти благодаря :) |
|||
|
---------------------------
Потребител от: 27.07.06 | Всички уроци от bourev | Всички скриптове от bourev |
||||
|
|
||||
| 1 посетител чете тази тема (0 потребители и 1 гост) | |||
|
Активни потребители:
---
|
|||
| |||
Още по темата:
php форум,
flash форум,
html форум,
it форум,
seo форум,
vista форум,
pc форум,
css форум,
java форум,
mysql форум,
дизайн форум









