/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Quotes og slash i Mysql
Fra : Nederbasse


Dato : 26-02-09 09:19

Hej


På trods af advarsler er der stadig nogle der vil skrive f.eks. GPS'er i en
tekst der skal ind i en Mysql db hvilket giver en error.

Hvordan sikre man at der kan indsættes ' og / i en Mysql database
Databasens tegnsæt er UTF-8 Unicode (utf8)

Neder



 
 
Johan Holst Nielsen (26-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 26-02-09 09:39

Nederbasse wrote:
> Hej
>
>
> På trods af advarsler er der stadig nogle der vil skrive f.eks. GPS'er i en
> tekst der skal ind i en Mysql db hvilket giver en error.
>
> Hvordan sikre man at der kan indsættes ' og / i en Mysql database
> Databasens tegnsæt er UTF-8 Unicode (utf8)

mysql_real_escape_string();

Det bedste er noget at lave en funktion ala

function dbstr($str) {
if(get_magic_quotes_gpc()) {
$str = stripslashes($str);
}
return mysql_real_escape_string($str);
}

Så når du indsætter laver du blot noget ala

$str = "GPS'er";

$sql = "INSERT INTO tabel (value) VALUES ('".dbstr($str)."')";
mysql_query($sql);

.... og problemet er løst :)


--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (26-02-2009)
Kommentar
Fra : Dan Storm


Dato : 26-02-09 09:51

Johan Holst Nielsen skrev:
> Det bedste er noget at lave en funktion ala
>
> function dbstr($str) {
> if(get_magic_quotes_gpc()) {
> $str = stripslashes($str);
> }
> return mysql_real_escape_string($str);
> }

magic_quotes_gpc er forældet, så spørgsmålet er om det overhovedet er
nødvendigt at lave funktionen? Naturligvis hvis man vil tage højde for
ældre versioner af PHP med magig_quotes_gpc sat til.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Nederbasse (26-02-2009)
Kommentar
Fra : Nederbasse


Dato : 26-02-09 11:34

SNIP
>
> magic_quotes_gpc er forældet, så spørgsmålet er om det overhovedet er
> nødvendigt at lave funktionen? Naturligvis hvis man vil tage højde for
> ældre versioner af PHP med magig_quotes_gpc sat til.
>
> --
> Dan Storm - storm at err0r dot dk / http://err0r.dk
>
> People who claim they don't let little things bother
> them have never slept in a room with a single mosquito.

Vi har åbenbart version 4.3.9 på serveren og magic_quotes_gpc er off i begge
values

Neder



Johan Holst Nielsen (26-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 26-02-09 11:51

Nederbasse wrote:
> SNIP
>> magic_quotes_gpc er forældet, så spørgsmålet er om det overhovedet er
>> nødvendigt at lave funktionen? Naturligvis hvis man vil tage højde for
>> ældre versioner af PHP med magig_quotes_gpc sat til.
>>
>
> Vi har åbenbart version 4.3.9 på serveren og magic_quotes_gpc er off i begge
> values

Så brug den funktion jeg har skrevet :) In case en eller anden person
finder på at sætte det on :) (Er sket før...:D)

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (26-02-2009)
Kommentar
Fra : Dan Storm


Dato : 26-02-09 12:09

Nederbasse skrev:
> Vi har åbenbart version 4.3.9 på serveren og magic_quotes_gpc er off i begge
> values

Af ren og skær nysgerrighed - hvorfor har i ikke opdateret PHP? Eller er
I hostet hos en af de billige udbydere?
--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Nederbasse (26-02-2009)
Kommentar
Fra : Nederbasse


Dato : 26-02-09 18:36


"Dan Storm" <shadyz_REMOVETHIS_@err0r.dk> skrev i en meddelelse
news:49a67844$0$15897$edfadb0f@dtext01.news.tele.dk...
> Nederbasse skrev:
>> Vi har åbenbart version 4.3.9 på serveren og magic_quotes_gpc er off i
>> begge values
>
> Af ren og skær nysgerrighed - hvorfor har i ikke opdateret PHP? Eller er I
> hostet hos en af de billige udbydere?
> --
> Dan Storm - storm at err0r dot dk / http://err0r.dk
>
Vi har en MEGET_FORSIGTIG server admin her på jobbet, han laver ikke noget
bare fordi

Lars



Johan Holst Nielsen (26-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 26-02-09 22:46

Nederbasse wrote:
> "Dan Storm" <shadyz_REMOVETHIS_@err0r.dk> skrev i en meddelelse
> news:49a67844$0$15897$edfadb0f@dtext01.news.tele.dk...
>> Nederbasse skrev:
>>> Vi har åbenbart version 4.3.9 på serveren og magic_quotes_gpc er off i
>>> begge values
>> Af ren og skær nysgerrighed - hvorfor har i ikke opdateret PHP? Eller er I
>> hostet hos en af de billige udbydere?
>> --
>> Dan Storm - storm at err0r dot dk / http://err0r.dk
>>
> Vi har en MEGET_FORSIGTIG server admin her på jobbet, han laver ikke noget
> bare fordi

Det må man sige - 4.3.9 er omkring 4½ år gammel... Det er rimelig
bekymrende eftersom der ha været en slat PHP fejl siden da - hvor PHP
selv har bedt om at opgradere hurtigst muligt... Ved selvfølgelig ikke
om han har lavet nogle manuelle patches - men tvivler.

PHP4 velligeholdes ligeledes ikke - dvs. der kommer ikke opdateringer
til bugs og security mm.. Ikke at have opgraderet til PHP5 endnu er imo
direkte dumt.

Så rent faktisk vil jeg ikke kalde det MEGET_FORSIGTIG - tvært i mod! Og
du må gerne citere mig for ;)

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Nederbasse (27-02-2009)
Kommentar
Fra : Nederbasse


Dato : 27-02-09 10:43


> PHP4 velligeholdes ligeledes ikke - dvs. der kommer ikke opdateringer
> til bugs og security mm.. Ikke at have opgraderet til PHP5 endnu er imo
> direkte dumt.
>
> Så rent faktisk vil jeg ikke kalde det MEGET_FORSIGTIG - tvært i mod! Og
> du må gerne citere mig for ;)
>
> --
> Johan Holst Nielsen
> Freelance PHP Developer - http://phpgeek.dk

Jeg tror det køre lidt efter devisen: If it ain't broken don't fix it

Lars



Dan Storm (27-02-2009)
Kommentar
Fra : Dan Storm


Dato : 27-02-09 10:46

Nederbasse skrev:
>
> Jeg tror det køre lidt efter devisen: If it ain't broken don't fix it
>

Så må du jo forklare ham at det er i stykker :) Det er derfor der kommer
nye versioner :)



--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Johan Holst Nielsen (26-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 26-02-09 11:52

Dan Storm wrote:
> Johan Holst Nielsen skrev:
>> Det bedste er noget at lave en funktion ala
>>
>> function dbstr($str) {
>> if(get_magic_quotes_gpc()) {
>> $str = stripslashes($str);
>> }
>> return mysql_real_escape_string($str);
>> }
>
> magic_quotes_gpc er forældet, så spørgsmålet er om det overhovedet er
> nødvendigt at lave funktionen? Naturligvis hvis man vil tage højde for
> ældre versioner af PHP med magig_quotes_gpc sat til.

Ældre og ældre...Så vidt jeg ved er den option først fjernet i version
5.3 (eller husker jeg forkert?). Altså de nuværende releases har stadig
mulighed for at have den on - selvom den længe har været default off.
PHP 5.3 er svjv stadig i beta,alpha eller hvad det nu engang er :)

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Martin (26-02-2009)
Kommentar
Fra : Martin


Dato : 26-02-09 11:58

Johan Holst Nielsen wrote:
> Dan Storm wrote:
>> Johan Holst Nielsen skrev:
>>> Det bedste er noget at lave en funktion ala
>>>
>>> function dbstr($str) {
>>> if(get_magic_quotes_gpc()) {
>>> $str = stripslashes($str);
>>> }
>>> return mysql_real_escape_string($str);
>>> }
>>
>> magic_quotes_gpc er forældet, så spørgsmålet er om det overhovedet er
>> nødvendigt at lave funktionen? Naturligvis hvis man vil tage højde for
>> ældre versioner af PHP med magig_quotes_gpc sat til.
>
> Ældre og ældre...Så vidt jeg ved er den option først fjernet i version
> 5.3 (eller husker jeg forkert?). Altså de nuværende releases har stadig
> mulighed for at have den on - selvom den længe har været default off.
> PHP 5.3 er svjv stadig i beta,alpha eller hvad det nu engang er :)

Det er helt korrekt, den er stadig at finde i PHP 5.2.x, og jeg synes at
have læst et eller andet sted, at den ikke vil blive fjernet før PHP 6 -
men ja, den er default off :)

Johan Holst Nielsen (26-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 26-02-09 12:01

Martin wrote:
> Johan Holst Nielsen wrote:
>> Ældre og ældre...Så vidt jeg ved er den option først fjernet i version
>> 5.3 (eller husker jeg forkert?). Altså de nuværende releases har
>> stadig mulighed for at have den on - selvom den længe har været
>> default off. PHP 5.3 er svjv stadig i beta,alpha eller hvad det nu
>> engang er :)
>
> Det er helt korrekt, den er stadig at finde i PHP 5.2.x, og jeg synes at
> have læst et eller andet sted, at den ikke vil blive fjernet før PHP 6 -
> men ja, den er default off :)

Tjekkede lige op - og det er rigtigt - det er først i PHP 5.3 den er
"deprecated" :) Og den vil så blive fjernet i 6.0.

<http://php.net/manual/en/info.configuration.php#ini.magic-quotes-gpc>

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Dan Storm (26-02-2009)
Kommentar
Fra : Dan Storm


Dato : 26-02-09 12:07

Johan Holst Nielsen skrev:
> Ældre og ældre...Så vidt jeg ved er den option først fjernet i version
> 5.3 (eller husker jeg forkert?). Altså de nuværende releases har stadig
> mulighed for at have den on - selvom den længe har været default off.
> PHP 5.3 er svjv stadig i beta,alpha eller hvad det nu engang er :)

Ja, okay; jeg har nok bare ikke selv scriptet efter det så, idet jeg
ikke mente der var nogen der brugte det mere. Så jeg var for hurtig ude
med at kaste om mig med ord som 'forældet' :)

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Nederbasse (26-02-2009)
Kommentar
Fra : Nederbasse


Dato : 26-02-09 18:54


"Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
news:49a6552b$0$90272$14726298@news.sunsite.dk...
> Nederbasse wrote:
>> Hej
>>
>>
>> På trods af advarsler er der stadig nogle der vil skrive f.eks. GPS'er i
>> en tekst der skal ind i en Mysql db hvilket giver en error.
>>
>> Hvordan sikre man at der kan indsættes ' og / i en Mysql database
>> Databasens tegnsæt er UTF-8 Unicode (utf8)
>
> mysql_real_escape_string();
>
> Det bedste er noget at lave en funktion ala
>
> function dbstr($str) {
> if(get_magic_quotes_gpc()) {
> $str = stripslashes($str);
> }
> return mysql_real_escape_string($str);
> }
>
> Så når du indsætter laver du blot noget ala
>
> $str = "GPS'er";
>
> $sql = "INSERT INTO tabel (value) VALUES ('".dbstr($str)."')";
> mysql_query($sql);
>
> ... og problemet er løst :)
>
>
> --
> Johan Holst Nielsen
> Freelance PHP Developer - http://phpgeek.dk

Det er desværre ikke så let
Der er ca. 40 forskellige uddannelses institutioner der skal indsætte tekst
så derfor ved ikke ikke på forhånd hvor funktionen skal bruges. GPS'er er
bare et eksembel på hvad der kan komme i teksten.

Har jeg forstået det ret at problemet vil blive løst hvis magic_quotes
bliver slået til?
Lars



Johan Holst Nielsen (26-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 26-02-09 22:52

Nederbasse wrote:
> "Johan Holst Nielsen" <spam@phpgeek.dk> skrev i en meddelelse
> news:49a6552b$0$90272$14726298@news.sunsite.dk...
>> Nederbasse wrote:
>>> Hej
>>>
>>>
>>> På trods af advarsler er der stadig nogle der vil skrive f.eks. GPS'er i
>>> en tekst der skal ind i en Mysql db hvilket giver en error.
>>>
>>> Hvordan sikre man at der kan indsættes ' og / i en Mysql database
>>> Databasens tegnsæt er UTF-8 Unicode (utf8)
>> mysql_real_escape_string();
>>
>> Det bedste er noget at lave en funktion ala
>>
>> function dbstr($str) {
>> if(get_magic_quotes_gpc()) {
>> $str = stripslashes($str);
>> }
>> return mysql_real_escape_string($str);
>> }
>>
>> Så når du indsætter laver du blot noget ala
>>
>> $str = "GPS'er";
>>
>> $sql = "INSERT INTO tabel (value) VALUES ('".dbstr($str)."')";
>> mysql_query($sql);
>>
>> ... og problemet er løst :)
>>
>>
> Det er desværre ikke så let
> Der er ca. 40 forskellige uddannelses institutioner der skal indsætte tekst
> så derfor ved ikke ikke på forhånd hvor funktionen skal bruges. GPS'er er
> bare et eksembel på hvad der kan komme i teksten.

Jamen det er jo ikke sådan du skal fikse det.

Dataene bliver f.eks. posted og du smider den ind i databaen via noget ala:

$sql = "INSERT INTO foo (val1, val2) VALUES
('".$_POST['val1']."','".$_POST['val2']."')";

I stedet skal det blot være:

$sql = "INSERT INTO foo (val1, val2) VALUES
('".dbstr($_POST['val1'])."','".dbstr($_POST['val2'])."')";


> Har jeg forstået det ret at problemet vil blive løst hvis magic_quotes
> bliver slået til?

Du skal IKKE slå den til. Det vil være det samme som hvis du ikke kunne
finde ud af at bruge ovnen, så du i stedet saver dit spisebord i små
stykker og tænder et bål i køkkenet, i stedet for at læse brugsanvisningen.

Som sagt - ovenstående metode er den mest "korrekte". magic_quotes_gpc
er noget fanden har skabt i php, og ført til et væld af sikkerhedsfejl
(som den du beskriver) i php applikationer. Derfor bliver den heldigvis
også skrottet nu.

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Martin (26-02-2009)
Kommentar
Fra : Martin


Dato : 26-02-09 23:50

Johan Holst Nielsen wrote:
> Du skal IKKE slå den til. Det vil være det samme som hvis du ikke kunne
> finde ud af at bruge ovnen, så du i stedet saver dit spisebord i små
> stykker og tænder et bål i køkkenet, i stedet for at læse brugsanvisningen.

Dagens kommentar!

Johan Holst Nielsen (27-02-2009)
Kommentar
Fra : Johan Holst Nielsen


Dato : 27-02-09 13:32

Martin wrote:
> Johan Holst Nielsen wrote:
>> Du skal IKKE slå den til. Det vil være det samme som hvis du ikke kunne
>> finde ud af at bruge ovnen, så du i stedet saver dit spisebord i små
>> stykker og tænder et bål i køkkenet, i stedet for at læse brugsanvisningen.
>
> Dagens kommentar!

Må indrømme der var røget et par glas rødvin ned ;) Det hjalp også lidt
på kreativiteten...

--
Johan Holst Nielsen
Freelance PHP Developer - http://phpgeek.dk

Nederbasse (27-02-2009)
Kommentar
Fra : Nederbasse


Dato : 27-02-09 12:11

SNIP
> $sql = "INSERT INTO foo (val1, val2) VALUES
> ('".$_POST['val1']."','".$_POST['val2']."')";
>
> I stedet skal det blot være:
>
> $sql = "INSERT INTO foo (val1, val2) VALUES
> ('".dbstr($_POST['val1'])."','".dbstr($_POST['val2'])."')";
>
>
>> Har jeg forstået det ret at problemet vil blive løst hvis magic_quotes
>> bliver slået til?
>
> Du skal IKKE slå den til. Det vil være det samme som hvis du ikke kunne
> finde ud af at bruge ovnen, så du i stedet saver dit spisebord i små
> stykker og tænder et bål i køkkenet, i stedet for at læse
> brugsanvisningen.
>
> Som sagt - ovenstående metode er den mest "korrekte". magic_quotes_gpc er
> noget fanden har skabt i php, og ført til et væld af sikkerhedsfejl (som
> den du beskriver) i php applikationer. Derfor bliver den heldigvis også
> skrottet nu.
>
> --
> Johan Holst Nielsen
> Freelance PHP Developer - http://phpgeek.dk

Jeg kan næsten ikke få armene ned

Lars



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408916
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste