Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z cudzysłowiem, "/Test/"
Randallmaster
post
Post #1





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


zapisuje do bazy danych przez addslashes a wczytuje poprzez stripslashes

natomiast gdy wczytuje to w inpucie to cudzysłowie znika jest to tylko przed nim

$d['test'] to np. idę na "spacer"

w inpucie wyświetla mi: idę na

  1. <input name="test" type="text" value="<?= stripslashes($d['test']); ?>" />
Go to the top of the page
+Quote Post
nospor
post
Post #2





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




<?= htmlspiecialchars($d['test']); ?>
I zapomnij o stripslashes.

Zapomnij też o addslashes. Do wkładania do bazy uzywa sie mysql_real_escape_string()
Go to the top of the page
+Quote Post
Randallmaster
post
Post #3





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


<?= htmlspiecialchars($d['test']); ?>

pokazuje mi tutaj \"test\" nie usuneło \\


Ten post edytował Randallmaster 6.03.2013, 09:29:52
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Widać do bazy wkładasz podwójne \\....
ALbo podwóje slashujesz przez addslashes i mysql_real_escape_string
Albo masz w php.ini ustawione automatyczne slashowanie + twoje reczne slashowanie, dlatego masz podwójnie wszystko.

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





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Do bazy zapisało mi w postaci: dajemy cudzyslowie \'test\'
sprawdziłlem


wczytuje tak: <?= htmlspecialchars($d['test']); ?>
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




No właśnie. Do bazy ci sie źle zapisało. Do bazy ma się zapisać tak:
dajemy cudzyslowie 'test'

Już ci napisałem gdzie problem. Popraw to.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #7





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Usunąłem mysql_real_escape_string()

serwer mam na home.pl dobrze przeczytałem że rozróżnia znaki poprzeczne?

https://pomoc.home.pl/bazawiedzy/zagadnienia/215

i dodało mi do bazy tak: sprawdzanie dwa "test"

teraz w inpucie dobrze wczytuje
Go to the top of the page
+Quote Post
nospor
post
Post #8





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




Cytat
Usunąłem mysql_real_escape_string()
Ale nadal masz addslashes? Jak tak, to wywal addslashes a zostaw mysql_real_escape_string()
Jak nie, to znaczy ze masz na serwerze włączone automatyczne slashowanie. Pisałem ci też o tym. Masz to wywalić. To jest bardzo zła opcja. masz zostawić mysql_real_escape_string() a wywalić to automatyczne slashowanie. Opcja ta się nazywa magic_quotes - ustaw to na 0
Go to the top of the page
+Quote Post
Randallmaster
post
Post #9





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Nie mam addslashes ani nie mam mysql_real_escape_string(),

slashuje mi serwer

Rozumiem że uważasz że lepiej samemu slashować niż ma to robić serwer?

dobrze utworze plik php.ini

i dodam mysql_real_escape_string()
Go to the top of the page
+Quote Post
!*!
post
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

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


Cytat(Randallmaster @ 6.03.2013, 10:07:00 ) *
i dodam mysql_real_escape_string()


Przejdź na PDO zapomnij o funkcjach mysql_* i zapomnij że musisz coś z danymi robić przy zapisie do bazy (poza walidacją).
Go to the top of the page
+Quote Post
nospor
post
Post #11





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




@!*! Nawet jak przejdzie na PDO to i tak będzie musiał wywalić automatyczne slashowanie - nie ma bata (IMG:style_emoticons/default/smile.gif)

Cytat
dobrze utworze plik php.ini

i dodam mysql_real_escape_string()
Tak, tak właśnie należy zrobić. Ewentualnie po wywaleniu automatycznego slashowania przejdź na PDO jak już wspomniano
Go to the top of the page
+Quote Post
Randallmaster
post
Post #12





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


mój plik php.ini:
znajduje sie w katalogu na ktore jest przekierowanie /test

  1. error_log = /plik_logow.log
  2. error_reporting = E_ALL & ~E_NOTICE
  3. log_errors = 1
  4. display_errors = off
  5. magic_quotes_gpc = 0


zapisuje do bazy:
$_POST['test'] = mysql_real_escape_string($_POST['test']);

wynik w bazie: tutaj "test"

teraz jest ok??

jak powinien wyglądać zapis w bazie danych?

Ten post edytował Randallmaster 6.03.2013, 10:20:08
Go to the top of the page
+Quote Post
nospor
post
Post #13





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




Tak, teraz jest ok.

No może poza:
error_reporting = E_ALL & ~E_NOTICE
tak ma byc:
error_reporting = E_ALL

Masz widziesz wszyskie błędy w swojej aplikacji i na bieżąco je poprawiać.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #14





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Wielkie Dzięki (IMG:style_emoticons/default/smile.gif)

pierwszy raz mam styczność z php.ini

mogę gdzieś poczytać o tych wszystkich funkcjach np error_reporting? po polsku?
Go to the top of the page
+Quote Post
nospor
post
Post #15





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




W linku który sam podałęś, masz je opisane po polsku....
https://pomoc.home.pl/bazawiedzy/zagadnienia/215

display_errors = off
Z racji, że wyłączyłeś wyświetlanie błędów w przeglądarce, to zaglądaj do pliku z logami i pooprawiaj błędy, które tam będą. W przeciwnym wypadku z czasem będziesz miał problem.

A najlepiej teraz, kiedy zapewne działasz testowo to zrób tak:
display_errors = On
By widziec wszystkie błędy na bieżąco na ekranie.
Go to the top of the page
+Quote Post
Randallmaster
post
Post #16





Grupa: Zarejestrowani
Postów: 677
Pomógł: 11
Dołączył: 18.11.2009

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


Sorry przecież ustaliłem error_log = /plik_logow.log. Jeszcze raz dzięki za pomoc (IMG:style_emoticons/default/smile.gif)

Ten post edytował Randallmaster 6.03.2013, 10:30:20
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.12.2025 - 01:06