![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Jest jakas funkcja odwrotna do mysql_escape_string ?
Wrzucam z CMS'a dane do SQL i pozniej chce wyświetlić tekst ale juz bez znaków unikowych. Po kilkukrotnym przesłaniu danych mam np takie coś: Kod <font face=\"\\"\\\\"\\\\\\\\"\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"Tahoma\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\& ![]() Ten post edytował My4tic 25.09.2005, 11:33:31 -------------------- Załóż konto na dropbox.
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) ![]() ![]() |
Nie ma, jest co pradwa strip_slashes ale ono chyba nie dziala identycznie odwrotnie jak mysql_escape_string.
A poza tym masz blad gdzie indziej, bo mysql_escape_string() powinno byc uzywane TYLKO przy wstawianiu stringow do bazy danych, gdy je wyciagasz to dostajesz czysty text, bez zadnych slashy. -------------------- Nie lubię jednorożców.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
CMS wrzuca to tak:
Kod <?php include ("config.php"); $aNaglowek = mysql_escape_string($aNaglowek); $aDBLink = @mysql_connect( "$SQLhost", "$SQLlogin", "$SQLpass" ); if ( !empty( $aDBLink ) ) { if ( mysql_select_db( "$db", $aDBLink ) == True ) { $aSQL = "select * from content"; $aQResult = mysql_query( $aSQL, $aDBLink ); if ( $aQResult == True ) { // -------------------------------------------------------- // $aSQL = "UPDATE content SET naglowek='$aNaglowek' WHERE id='$id'"; $aQResult = mysql_query( $aSQL ); Jak w PhpMyAdmin sprawdze co jest w komórkach to widać ze są slashe. Pozniej wyświetlam zawartość bazy: Kod <?php include ("admin/config.php"); $aDBLink = mysql_connect( "$SQLhost", "$SQLlogin", "$SQLpass" ); if ( !empty( $aDBLink ) ) { if ( mysql_select_db( "$db", $aDBLink ) == True ) { $aSQL = "select * from content"; $aQResult = mysql_query( $aSQL, $aDBLink ); if ( $aQResult == True ) { $aSQL = "SELECT id, naglowek, wstep FROM content WHERE id=1"; $aQResult = mysql_query( $aSQL ); $aRow = mysql_fetch_array( $aQResult ); $aNaglowek = $aRow["naglowek"]; i pozniej normalnie: Kod print($aNaglowek); Kurcze ![]() -------------------- Załóż konto na dropbox.
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wyłącz wszystkie magic_quotes w php.ini. Wtedy wystarczy, że uzyjesz mysql_real_escape_string i masz problem z głowy. MySQL nie przechowuje slashów w tabeli, więc absolutnie nie ma potrzeby uzywania strip_slashes().
The magic quotes are the only evil. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
No niestety dalej ładuje mi slashe do SQL. Uzywam mysql_escape_string. Moze być ta funkcja zamiast mysql_real_escape_string?
Komórka w SQL wygląda tak: Kod <font size=\"2\">Mitsubishi Motors i PSA Peugeot Citroën podpisują umowę dotyczącą produkcji nowych samochodów klasy SUV.</font> a plik php.ini: Kod ; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc. magic_quotes_runtime = Off ; Use Sybase-style magic quotes (escape ' with '' instead of \'). magic_quotes_sybase = Off Ten post edytował My4tic 23.09.2005, 18:23:18 -------------------- Załóż konto na dropbox.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm... dziwne. Sprawdź jeszcze ten kod (może jednak magic_quotes są włączone):
Powinieneś uzyć tu funkcji mysql_real_escape_string. To ona jest zalecana dla mysqla. W zasadzie to ktoś może też powiedzieć (np ja ![]() ![]() |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Okazało sie ze kolejny restart serwera pomógł :-) Pewnie za pierszym razem czegoś nie uruchomiłem ponownie
![]() Cytat że używanie natywnych funkcji dostępu do baz danych Nie mam pojecia co to znaczy ![]() Dzięki za pomoc. -------------------- Załóż konto na dropbox.
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 179 Pomógł: 0 Dołączył: 8.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
miałem na myśli funkcje typu mysql_*, pg_*, oci*
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 260 Pomógł: 0 Dołączył: 4.08.2005 Ostrzeżenie: (0%) ![]() ![]() |
Na localu chodzi wszystko ok ale co jesli na serwerze u providera mam włączone magic_quotes i nie chcą tego wyłączyć? Można rozwiązać to w inny sposób?
----------- Edit -------------- OK. Już sobie poradziłem. Rozwiązanie: - plik .htaccess w folderze gdzie uruchamiamy skrypty Treść .htaccess: Kod <IfModule mod_php4.c> php_flag magic_quotes_gpc off </IfModule> Do sprawdzenia czy wszystko działa korzystałem z tego skryptu:
gdyż podany przez Chmolu niestety mi nie działał. Dzięki wszystkim za pomoc. Ten post edytował My4tic 25.09.2005, 13:56:13 -------------------- Załóż konto na dropbox.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 17:27 |