/ 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
Erstatte &
Fra : Lars Olesen


Dato : 10-01-04 10:09

Jeg har med følgende foreach:

foreach($input as $key=>$value) {
    $search = array ("&");
    $replace = array ("&");
    $input[$key] = preg_replace($search, $replace, $value);
}

forsøgt at erstatte & med & men jeg får følgende fejlmeddelelse:

Warning: No ending delimiter '&' found in
/net/users/a35/902/vihdk/www/core/functions.php on:

$input[$key] = preg_replace($search, $replace, $value);

Hvad gør jeg galt?


--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


 
 
Tonni Aagesen (10-01-2004)
Kommentar
Fra : Tonni Aagesen


Dato : 10-01-04 11:41

Lars Olesen wrote:
> Jeg har med følgende foreach:
>
> foreach($input as $key=>$value) {
> $search = array ("&");
> $replace = array ("&");
> $input[$key] = preg_replace($search, $replace, $value);
> }

> Hvad gør jeg galt?

Skal & ikke escapes \$ ?

Mvh
Tonni

Lars Olesen (10-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 10-01-04 13:27

> Skal & ikke escapes \$ ?

Du har garanteret ret :) Tak for det!

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Tonni Aagesen (10-01-2004)
Kommentar
Fra : Tonni Aagesen


Dato : 10-01-04 13:36

Lars Olesen wrote:
>> Skal & ikke escapes \$ ?
>
> Du har garanteret ret :) Tak for det!

Så lidt :)

Men der skulle selvfølgelig have stået \& og ikke \$

Mvh
Tonni

Jacob Atzen (10-01-2004)
Kommentar
Fra : Jacob Atzen


Dato : 10-01-04 19:27

Lars Olesen <lsolesen@hotmail.com> writes:

> Jeg har med følgende foreach:
>
> foreach($input as $key=>$value) {
>     $search = array ("&");
>     $replace = array ("&amp;");
>     $input[$key] = preg_replace($search, $replace, $value);
> }
>
> forsøgt at erstatte & med &amp; men jeg får følgende fejlmeddelelse:
>
> Warning: No ending delimiter '&' found in
> /net/users/a35/902/vihdk/www/core/functions.php on:
>
> $input[$key] = preg_replace($search, $replace, $value);
>
> Hvad gør jeg galt?

Du bruger ikke et preg. preg's starter og slutter med en delimiter
(kan ikke lige komme på et dansk ord). Altså:

$string = "Foo&bar";
$search = "/&/";
$replace = "&amp;";
print preg_replace($search, $replace, $string)."\n";

Giver så:

$ php searchrepl.php
Foo&amp;bar

--
Med venlig hilsen
- Jacob Atzen

Lars Olesen (10-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 10-01-04 19:40

Jacob Atzen wrote:

> $string = "Foo&bar";
> $search = "/&/";
> $replace = "&amp;";
> print preg_replace($search, $replace, $string)."\n";

Det er var / x 2 der skulle til. Tak for hjælpen!

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Lars Olesen (10-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 10-01-04 19:50

Jacob Atzen wrote:

> $string = "Foo&bar";
> $search = "/&/";
> $replace = "&amp;";
> print preg_replace($search, $replace, $string)."\n";


Det var / x 2 der skulle til. Tak for hjælpen!

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 00:14

Lars Olesen <lsolesen@hotmail.com> wrote:

>$input[$key] = preg_replace($search, $replace, $value);

Hvorfor ikke bruge
http://dk.php.net/manual/en/function.str-replace.php

As of PHP 4.0.5, every parameter in str_replace() can be an array.
så kan du endda spare løkken og du bruger en funktion der er skrevet
til det i stedet for at skrive din egen.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 00:31

> Hvorfor ikke bruge
> http://dk.php.net/manual/en/function.str-replace.php

Den vil jeg lige kigge på. Årsagen til at jeg bruger min egen funktion
er fordi jeg skal sørge for at alle værdier i $_GET og $_INPUT får
konverteret evt. værdier til noget andet. Den funktion skal samtidig
liste alle lovlige tegn. Endelig putter den også addslashes på, hvis de
ikke er sat automatisk af php.

Eksempel:

$_POST = myAddslashes($_POST);

function myAddslashes()
{
   //addslashes
   //konverterer farlige tegn
   //fjerner ulovlige tegn
}

Det er måske en dum måde at gøre det på?

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 00:40

Lars Olesen <lsolesen@hotmail.com> wrote:

>Det er måske en dum måde at gøre det på?

Hvad så med at bruge
http://dk.php.net/manual/en/function.htmlentities.php
eller
http://dk.php.net/manual/en/function.htmlspecialchars.php
alt efter hvormeget der skal ændres.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 00:47

> Hvad så med at bruge
> http://dk.php.net/manual/en/function.htmlentities.php
> eller
> http://dk.php.net/manual/en/function.htmlspecialchars.php
> alt efter hvormeget der skal ændres.

Ja, det er i virkeligheden nok det smarteste. Men så slipper jeg ikke
uden om min løkke gør jeg?

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 01:04

Lars Olesen <lsolesen@hotmail.com> wrote:

>Men så slipper jeg ikke
>uden om min løkke gør jeg?

Nej, det gør du vel ikke.
--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 01:14

Af nysgerrighed - hvordan håndterer du $_POST og $_GET input fra
formularer, inden du fx gemmer dem i en database?

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 01:22

Lars Olesen <lsolesen@hotmail.com> wrote:

>Af nysgerrighed - hvordan håndterer du $_POST og $_GET input fra
>formularer, inden du fx gemmer dem i en database?

Jeg gør ikke noget, addslashes udføres af sig selv og jeg indsætter
med INSERT INTO tb VALUES(null,'$dat');

Dette for at have så rå data i databasen som muligt.
Når jeg så skriver noget ud behandler jeg det alt efter hvad det er og
hvordan det skal vises.
--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 09:49

> Jeg gør ikke noget, addslashes udføres af sig selv og jeg indsætter
> med INSERT INTO tb VALUES(null,'$dat');
>
> Dette for at have så rå data i databasen som muligt.
> Når jeg så skriver noget ud behandler jeg det alt efter hvad det er og
> hvordan det skal vises.

Det giver naturligvis mening, men er det ikke et sikkerhedsbrist fx at
tillade tags, hvis det er i en overskrift, og det er brugeren, der har
tastet ind?

Og hvad når fx en værdi skal være tilstede fordi din sql ser sådan her ud:

INSERT INTO tb VALUES ($kat_id);

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 11:39

Lars Olesen <lsolesen@hotmail.com> wrote:

>Det giver naturligvis mening, men er det ikke et sikkerhedsbrist fx at
>tillade tags, hvis det er i en overskrift, og det er brugeren, der har
>tastet ind?

Hvis det kan være et problem, så tjekker jeg for det inden jeg skriver
det ud. Databasen tager jo ikke skade af at have tags i sig.

Ideen er at ved at have ubehandlet data i databasen, så er det nemmere
at bruge det samme data i et nyt layout, tilpasse det på en anden måde
osv.

>Og hvad når fx en værdi skal være tilstede fordi din sql ser sådan her ud:
>
>INSERT INTO tb VALUES ($kat_id);

Det gør jeg ikke, jeg lader aldrig et user-input bestemme et id eller
andet vitalt. Og hvis jeg er afhængig af at en variabel skal indeholde
det rigtige, så tjekker jeg selvfølgelig for det.

--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 12:22

> Hvis det kan være et problem, så tjekker jeg for det inden jeg skriver
> det ud. Databasen tager jo ikke skade af at have tags i sig.

Til dels enig, men til en overskrift, hvor man har besluttet at
formattering foregår bagefter, synes jeg ikke at brugeren skal kunne
indtaste tags. Derfor fjerner jeg dem!

> Ideen er at ved at have ubehandlet data i databasen, så er det nemmere
> at bruge det samme data i et nyt layout, tilpasse det på en anden måde
> osv.

Det er jeg med på - dog mener jeg at det bliver lettest hvis du kun
tillader de tags, du synes er nødvendige. Det er også sikrere at lave en
positiv validering allerede fra starten, synes jeg.

>>Og hvad når fx en værdi skal være tilstede fordi din sql ser sådan her ud:
>>INSERT INTO tb VALUES ($kat_id);
>
> Det gør jeg ikke, jeg lader aldrig et user-input bestemme et id eller
> andet vitalt. Og hvis jeg er afhængig af at en variabel skal indeholde
> det rigtige, så tjekker jeg selvfølgelig for det.

Ok, men man bliver jo sommetider nødt til at lade brugeren bestemme
forskellige tal i en database, og det er der problemet opstår.

Men det tjekker du altså for. Spørgsmålet er så, om du bruger noget
genbrugelig kode, eller du bare laver ad hoc kode hver gang?

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 14:50

Lars Olesen <lsolesen@hotmail.com> wrote:

>Men det tjekker du altså for. Spørgsmålet er så, om du bruger noget
>genbrugelig kode, eller du bare laver ad hoc kode hver gang?

Ad hoc, men jeg genbruger da den kode der kan genbruges
Jeg er slet ikke avanceret nok til at bruge klasser og det er også
sjældent jeg bruger funktioner ...
--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 09:50

> Jeg gør ikke noget, addslashes udføres af sig selv og jeg indsætter
> med INSERT INTO tb VALUES(null,'$dat');

Eller hvad hvis du fx forventer at have en e-mail-adresse i et felt, men
det viser sig så, at det er noget helt andet. Eller du kun forventer, at
der er tal, og så vil lave et regnestykke på de tal, men pludselig står
der nb.

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


Leonard (11-01-2004)
Kommentar
Fra : Leonard


Dato : 11-01-04 11:42

Lars Olesen <lsolesen@hotmail.com> wrote:

>Eller hvad hvis du fx forventer at have en e-mail-adresse i et felt,

Jeg forventer ikke noget af et user-input, men hvis jeg vil have noget
bestemt, så må jeg jo validere inputtet.
Men det gør jeg ikke i forbindelse med indsættelse i databasen, det
gør jeg i forbindelse med formen, for hvis det nu er forkert, så skal
jeg jo tilbage til formen med de data der er indtastede og en
meddelelse til brugeren om hvad der er galt.
--
mvh Leonard
Har du kigget på: http://dk.php.net/ el. http://www.webcafe.dk/

Lars Olesen (11-01-2004)
Kommentar
Fra : Lars Olesen


Dato : 11-01-04 12:24

>>Eller hvad hvis du fx forventer at have en e-mail-adresse i et felt,
>
> Jeg forventer ikke noget af et user-input, men hvis jeg vil have noget
> bestemt, så må jeg jo validere inputtet.
> Men det gør jeg ikke i forbindelse med indsættelse i databasen, det
> gør jeg i forbindelse med formen, for hvis det nu er forkert, så skal
> jeg jo tilbage til formen med de data der er indtastede og en
> meddelelse til brugeren om hvad der er galt.

Du bliver da efter min mening nødt til at forvente, at brugerens input
er en e-mail-adresse, når nu det er det han skal taste ind?

Ok, så validerer du data - i forbindelse med formen - inden det
indsættes i databasen. Det er egentlig også det jeg lidt klumpet har
forsøgt at spørge om. Altså hvis nu user-input validerer, så går man
videre til indsættelse i databasen.

Men hvordan laver du denne validering. Bruger du noget genbrugelig kode?

--
Lars
www.fodboldenslegestue.dk   www.larsolesen.dk
www.discimport.dk      www.vih.dk


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

Månedens bedste
Årets bedste
Sidste års bedste