Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> obłusga znaków specjalnych z magic_quotes
melior
post
Post #1





Grupa: Zarejestrowani
Postów: 68
Pomógł: 3
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
piotr94
post
Post #2





Grupa: Zarejestrowani
Postów: 331
Pomógł: 30
Dołączył: 11.11.2008
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.


--------------------
http://www.piotr94.net21.pl/ - wykonanie stron i serwisów internetowych
Jeśli moje wypowiedzi były dla Ciebie pomocne, kliknij "Pomógł" i odwdzięcz się ;)
Go to the top of the page
+Quote Post
melior
post
Post #3





Grupa: Zarejestrowani
Postów: 68
Pomógł: 3
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


Można zobaczyć jak to wygląda w praktyce tutaj:

link
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
melior
post
Post #5





Grupa: Zarejestrowani
Postów: 68
Pomógł: 3
Dołączył: 7.12.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:33