/ 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
effektiv brug af addslashes
Fra : Ole Jensen


Dato : 05-06-05 15:50

Hej NG

Jeg er i gang med at bruge php og mysql for første gang.
Jeg er nået til det punkt hvor jeg skal have smidt data ind i databasen, og
man kan jo sagtens manuelt konvertere alle de enkelte inputs.

fx:
$input = addslashes($_POST["input"]);
$input2 = addslashes($_POST["input2"]);
$inputosv = addslashes($_POST["inputosv"]);

Men der må da næsten være en lettere måde man lynhurtig kunne løbe sine
$_POST data igennem og konvertere så de er klar til at ryge ind i databasen?

PFT
Ole



 
 
Martin (05-06-2005)
Kommentar
Fra : Martin


Dato : 05-06-05 16:17

Ole Jensen wrote:
> Hej NG
>
> Jeg er i gang med at bruge php og mysql for første gang.
> Jeg er nået til det punkt hvor jeg skal have smidt data ind i databasen, og
> man kan jo sagtens manuelt konvertere alle de enkelte inputs.
>
> fx:
> $input = addslashes($_POST["input"]);
> $input2 = addslashes($_POST["input2"]);
> $inputosv = addslashes($_POST["inputosv"]);
>
> Men der må da næsten være en lettere måde man lynhurtig kunne løbe sine
> $_POST data igennem og konvertere så de er klar til at ryge ind i databasen?

jeg har lavet en funktion til min database (ja ved godt jeg har kunne
godt PEAR DB, men det gad jeg ikk - så jeg lavede min egen :)

<?php
function sql_insert($array,$tabel) {
global $config;
foreach($array AS $value => $key) {
$value1[] = $value;
$key1[] = $key;
}
   
return sql("INSERT INTO ".$config["db_prefix"].$tabel."
(".implode(",",$value1).") VALUES
(".implode(",",addslashes(".$key1.")).")");
}

// Du kan kalde den således:

$insert = array(
"felt1" => "'".$_POST["input1"]."'"
, "felt2" => "'".$_POST["input2"]."'"
);

$sql = sql_insert($insert,"tabel");

Jacob Atzen (05-06-2005)
Kommentar
Fra : Jacob Atzen


Dato : 05-06-05 16:17

On 2005-06-05, Ole Jensen <ole_jensen> wrote:
> Jeg er i gang med at bruge php og mysql for første gang.
> Jeg er nået til det punkt hvor jeg skal have smidt data ind i
> databasen, og man kan jo sagtens manuelt konvertere alle de enkelte
> inputs.
>
> fx:
> $input = addslashes($_POST["input"]);
> $input2 = addslashes($_POST["input2"]);
> $inputosv = addslashes($_POST["inputosv"]);
>
> Men der må da næsten være en lettere måde man lynhurtig kunne løbe sine
> $_POST data igennem og konvertere så de er klar til at ryge ind i databasen?

Ifølge manualen er best practice at bruge mysql_real_escape_string():

http://dk2.php.net/mysql_real_escape_string

Hvis du insisterer på at benytte addslashes kan du bruge array_map() til
at udføre en operation på samtlige elementer i et array med. F.eks:

$slashedInput = array_map('addslashes', $_POST);

Bemærk, at du vil få et forkert resultat, hvis du benytter addslashes()
eller mysql_real_escape_string() på en streng, der allerede er blevet
escapet. Det er beskrevet på manualsiden for mysql_real_escape_string().

--
Med venlig hilsen
- Jacob Atzen

Michael (05-06-2005)
Kommentar
Fra : Michael


Dato : 05-06-05 20:11

Måske også med lidt rekursion.

function mysql_safe($array) {
if(sizeof($array) > 0) {
foreach($array AS $key=>$value)
if(is_array($value))
$array[$key] = mysql_safe($value);
else
$array[$key] = addslashes($value);
}
return $array;
}


$_POST = mysql_safe($_POST);

--
Mvh.
Michael



Søg
Reklame
Statistik
Spørgsmål : 177517
Tips : 31968
Nyheder : 719565
Indlæg : 6408634
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste