mocniak pisze: Czy te "" i '' są tam dobrze osadzone?
A wiesz jak jest różnica między "" i ''? Jeżeli to strona cioci o wypiekach, to ok, ale jeżeli z tego korzystają inni, to radziłbym ze względów bezpieczeństwa przeanalizować zapytanie.
Użytkownik qpon napisał:
Fakt, addslashes rozwiązało problem. Jak mniemam zapobiega to także ingerowaniu w zapytanie do bazy przez formularz. A o magic_quotes napisałem już do admina serwera.
Dzięki za pomoc :-)
Apostrof w formularzu powoduje błąd prz
Witajcie.
Mam następujący problem - przy użyciu apostrofu ' w formularzu wywala mi błąd: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'div id="middle" [] at line 1 - czyli sypie się w miejscu pojawienia się tego apostrofu w zmiennej.
Przykładowy kod php wygląda tak
$x = $_POST['x']; //przechwycenie danych z formularza
mysql_query("UPDATE tabela SET x='{$x}', [] WHERE id=$id") or die(mysql_error());
Problem pojawił się dopiero przy migracji na inny serwer. Wersja PHP to 5.2.3, poprzednia to jakaś 4.x.
Z góry dzięki za pomoc, niestety na google nic nie znalazłem. ;-)
mocniak pisze:
$x = mysql_escape_strinfg ($_POST['x']);
Pewno chodzi o magic_quotes() - ostatni bastion lamerów. Idź kup sobie śpiewnik. zły dzień? do autora pytania: być może admin pozwala na nadpisywanie ustawień php.ini w skryptach.
get_magic_quotes_gpc i ini_set() powodzenia.
aaooo54 pisze:
Niby dlaczego. Jak słyszę "ja to koduję świetnie, to wina serwera", a widać że gość nie ma pojęcia o tym co robi, to mnie trafia. Proste.
Toś mu dał odpowiedź. Następny mądry :(
Pozdr Exe Very Cute
no to teraz ja nie rozumiem. być może zamiast prosić admina, może to sobie nadpisać w skrypcie. źle myślę?
aaooo54 pisze:
Magic_quotes same w sobie są pomysłem dosyć poronionym. Między innymi dlatego właśnie w PHP5 się je wyłącza, a ZTCP w PHP6 nie będzie ich wcale - czyli czeka je podobny los co równie beznadziejne register_globals.
Magic_qoutes nie rozwiązują żadnego problemu, one go tylko maskują (i jak widać na przykładzie Wątkodawcy wprowadzają zamęt i dezinformację). Addslashes() to także kiepski pomysł, bo to w sumie tylko "zepsucie" stringa Odpowiedź w tym wątku już padła - mysql_escape_string, choć ta prawidłowa to mysql_real_escape_string().
A powód jest taki, że należy escapować dokładnie te znaki, których escapowania wymaga istniejący sterownik bazy danych, dodatkowo biorąc pod uwagę aktualne kodowanie jakie masz ustawione w połączeniu z bazą.
Mądrzejsi admini próbują wyłączać te wątpliwej jakości "ficzery" PHP, niestety przez takich ludzi jak mocniak trzeba robić w porządnych skryptach obejścia, a PHP ma taką opinię jaką ma.
Pozdr Exe Very Cute