konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

Tytulem wstepu

mam wlasnego cmsa napisanego z wykorzystaniem smarty i adodb. dane insertuje przed textarea

generalnie wszystko dziala do czasu gdy pisze tekst przez www wszystko ok sie zapisuje do bazy.

problem jest ktos wstawia teskty przekejone z worda, openoofice itp i roznymi znakami typu ", ' , - itp.

Takich danych adodb nie chce zapisac do bazy, po recznej poprawie cudzyslowiow i innych najczesciej tekst jest zapisywany do bazy.

i pytanie.

jakimi funkcjiami (php, adodb, smarty) przerezac tekst aby system sam mogl sie ta zamiana zajac.
Janusz Skudrzyk

Janusz Skudrzyk Członek zarządu,
weblabs.pl

Temat: nieprawidlowe znaki przy insercie do bazy

nie chce "bo nie", czy odsyła jakiś komunikat o błędzie ?

Temat: nieprawidlowe znaki przy insercie do bazy

htmlspecialchars(), mysql_escape_string(), strip_tags(), addslashes()
Marcin Laber

Marcin Laber internet
technologies
magician

Temat: nieprawidlowe znaki przy insercie do bazy

Piotr Skwarna:
jakimi funkcjiami (php, adodb, smarty) przerezac tekst aby system sam mogl sie ta zamiana zajac.

Nie korzystałem z ADOdb ale wg manuala:
$conn->qstr("tekst");
gdzie $conn to obiekt ADOdb. Więcej na http://phplens.com/lens/adodb/docs-adodb.htm#qstr

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

mysql_real_escape_string()

a przy polaczaniu SET NAMES utf8 collate utf8_general_ci;
Jarosław Czub

Jarosław Czub FullStack Developer

Temat: nieprawidlowe znaki przy insercie do bazy

Albo bezpieczniej:



#==================================================
#
#==================================================
function sql_escape_string($string){
if (get_magic_quotes_gpc()==true) {
$string = stripslashes($string);
}
if (!is_numeric($string)) {
$string=mysql_real_escape_string($string);
}
return $string;
}

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

Można też zdaje się skorzystać z dobrodziejstw klasy PDO (prepare + execute) - odpada (ZTCP) wtedy problem pamiętania o escape_stringach i innych takich tam :D
ewentualnie można potraktować insertowany tekst filtrami...

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

dziekuje wszystkim za odpowiedzi, powoli zaczynam sprawdzac poszczegolne rozwiazania.

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

ja tam 98% projektów robie w oparciu o mechanizm mysql_real_escape_string, a przy wyswietlaniu htmlspecialchars i po sprawie. no, chyba, ze ktos chce html'a, to wtedy cos tam zostawiam, ale najczesciej lepiej bbcode zastosowac.

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

Kuba Świegot:
ja tam 98% projektów robie w oparciu o mechanizm mysql_real_escape_string, a przy wyswietlaniu htmlspecialchars i po sprawie. no, chyba, ze ktos chce html'a, to wtedy cos tam zostawiam, ale najczesciej lepiej bbcode zastosowac.

PDO (dostępne "w standardzie" w PHP bodajże od wersji 5.1) ma wbudowaną możliwość bindowania (podpinania) parametrów (PDOStatement->bindParam, PDOStatement->bindValue) do zapytania SQL - są one wtedy AUTOMATYCZNIE "eskejpowane"... Ponadto PDO daje Ci ujednolicony interface dostępu do bazy danych i już nie musisz więcej martwić się o to, czy używasz MySQL, SQLite, PostgreSQL czy jeszcze innej...

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

Piotr Lewandowski:
Ponadto PDO daje Ci ujednolicony interface dostępu do bazy danych i już nie musisz więcej martwić się o to, czy używasz MySQL, SQLite, PostgreSQL czy jeszcze innej...

ano, ale ogranicza do strict SQLa ze wzgledu na kompatybilnosc z "tymi wszystkimi roznymi" bazami. wiec jakby cos za cos. mnie sie wydaje, ze dla zdecydowanej wiekszosci stron spokojnie mozna sie obyc bez pidijoł.

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

Wojciech Zbigniew Piotrowicz:
Piotr Lewandowski:
Ponadto PDO daje Ci ujednolicony interface dostępu do bazy danych i już nie musisz więcej martwić się o to, czy używasz MySQL, SQLite, PostgreSQL czy jeszcze innej...

ano, ale ogranicza do strict SQLa ze wzgledu na kompatybilnosc z "tymi wszystkimi roznymi" bazami. wiec jakby cos za cos. mnie sie

do "stricta" czyli?? możesz rozwinąć tą myśl?? chyba nie jestem aż tak mocny w SQLu...
wydaje, ze dla zdecydowanej wiekszosci stron spokojnie mozna sie obyc bez pidijoł.

można... podobno proste stronki da się też pisać w PHP3...
zamiast PDO można uzyć mysqli - chociaż tutaj trzeba już zdaje się eskejpować stringi...Piotr Lewandowski edytował(a) ten post dnia 06.01.09 o godzinie 20:40

konto usunięte

Temat: nieprawidlowe znaki przy insercie do bazy

Piotr Lewandowski:
Wojciech Zbigniew Piotrowicz:
Piotr Lewandowski:
Ponadto PDO daje Ci ujednolicony interface dostępu do bazy danych i już nie musisz więcej martwić się o to, czy używasz MySQL, SQLite, PostgreSQL czy jeszcze innej...

ano, ale ogranicza do strict SQLa ze wzgledu na kompatybilnosc z "tymi wszystkimi roznymi" bazami. wiec jakby cos za cos. mnie sie

do "stricta" czyli?? możesz rozwinąć tą myśl?? chyba nie jestem aż tak mocny w SQLu...

e, znowu palnalem :|

mialem na mysli, ze np. w Interbase inaczej sie concat'uje stringi niz w MySQLu. no ale siegnalem do manuala i sie okazalo, ze mozna sobie ustawic "PIPES_AS_CONCAT" i bedzie banglac.

coz, czlowiek uczy sie cale zycie.



Wyślij zaproszenie do