Randallmaster
6.03.2013, 09:01:30
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
<input name="test" type="text" value="
<?= stripslashes($d['test']); ?>" />
nospor
6.03.2013, 09:12:53
<?= htmlspiecialchars($d['test']); ?>
I zapomnij o stripslashes.
Zapomnij też o addslashes. Do wkładania do bazy uzywa sie mysql_real_escape_string()
Randallmaster
6.03.2013, 09:28:08
<?= htmlspiecialchars($d['test']); ?>
pokazuje mi tutaj \"test\" nie usuneło \\
nospor
6.03.2013, 09:34:51
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
Randallmaster
6.03.2013, 09:40:20
Do bazy zapisało mi w postaci: dajemy cudzyslowie \'test\'
sprawdziłlem
wczytuje tak: <?= htmlspecialchars($d['test']); ?>
nospor
6.03.2013, 09:41:39
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.
Randallmaster
6.03.2013, 09:58:24
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/215i dodało mi do bazy tak: sprawdzanie dwa "test"
teraz w inpucie dobrze wczytuje
nospor
6.03.2013, 10:01:05
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
Randallmaster
6.03.2013, 10:07:00
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()
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ą).
nospor
6.03.2013, 10:17:39
@!*! Nawet jak przejdzie na PDO to i tak będzie musiał wywalić automatyczne slashowanie - nie ma bata

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
Randallmaster
6.03.2013, 10:19:36
mój plik php.ini:
znajduje sie w katalogu na ktore jest przekierowanie /test
log_errors = 1
display_errors = off
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?
nospor
6.03.2013, 10:21:09
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ć.
Randallmaster
6.03.2013, 10:24:28
Wielkie Dzięki

pierwszy raz mam styczność z php.ini
mogę gdzieś poczytać o tych wszystkich funkcjach np error_reporting? po polsku?
nospor
6.03.2013, 10:27:39
W linku który sam podałęś, masz je opisane po polsku....
https://pomoc.home.pl/bazawiedzy/zagadnienia/215display_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.
Randallmaster
6.03.2013, 10:28:55
Sorry przecież ustaliłem error_log = /plik_logow.log. Jeszcze raz dzięki za pomoc
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.