Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: obłusga znaków specjalnych z magic_quotes
Forum PHP.pl > Forum > PHP
melior
Witam,
Zwracam się z pomocą bo trochę się już pogubiłem w obsłudze znaków specjalnych, a szczególnie w przypadku, gdy skrypt ma obsługiwać strony mające włączone magic_quotes i te bez.

Ogólnie wszystko działa mi ok, poza przypadkiem gdy ktoś wklepie backslasha "\"

Przy dodawaniu do bazy mysql mam taki kod
  1. $name = trim($name);
  2.  
  3. $name= htmlentities($name);
  4. }
  5. else{
  6. $name= htmlentities($db->real_escape_string($name));
  7. }


Przy wyświetlaniu w input text
  1. <input type="text" name="name" value="<?php
  2. echo $edit?htmlspecialchars(stripslashes($_POST['name'])):'';
  3. }else{
  4. echo $edit?html_entity_decode(htmlspecialchars($_POST['name'])):'';
  5. }
  6.  
  7. ?>">


Efekt jest taki, że gdy na serwerze z magic_quotes wpiszę "\test\" to zapisze się to poprawnie do bazy danych, ale przy wyświetlaniu w input text gubię "\" i dostaję samo "test".
Na localhost gdzie nie mam magic_quotes wszystko hula.

Wolę się spytać jak to powinno wyglądać dobrze, bo nie chcę za dużo mieszać w kodzie na próbach. Wystarczająco dużo czasu męczyłem się by kod obsługiwał poprawnie ' i " dostal.gif

Dzięki za wszelką pomoc smile.gif
piotr94
hmm, niby ciąg znaków "\test\" powinno zamienić na \"\\test\\\" i takie coś powinno zostać wysłane do bazy danych, sprawdź więc co tak na prawdę wychodzi po odpaleniu takich instrukcji. Jedyny pomysł, który przychodzi mi na szybko to ręczna zamiana na encje i na odwrót.
melior
Można zobaczyć jak to wygląda w praktyce tutaj:

link
nospor
Hehe, rozumiem, ze jak wkladasz tekst do edycji (do pola input) to też przepuszczasz go przez swoje:
echo $edit?htmlspecialchars(stripslashes($_POST['name'])):'';
?
No jesli tak to nic dziwnego ze ci znika \ poniewasz stripslashes nalezy robic po POSTcie, bo tylko wowczas php sam dodaje slasha. A ty jak wkladasz dane do inputa to nie masz POSTa i kasujesz \ smile.gif
melior
Hehe, dzięki nospor ;]

Dobrze mówisz, ale odniosłeś to do złego fragmentu i to mnie skołowało tongue.gif

Cytat
stripslashes nalezy robic po POSTcie

Właśnie robiłem go po POSTcie, wrzucając do inputa. Problem w tym, że robiłem go jeszcze we fragmencie kodu, którego tutaj nie przytoczyłem (my bad sad.gif )

Anyway problem rozwiązany smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.