Geert Lund skrev:
> Altså synes faktisk ikke de to argumenter hænger helt sammen - hvis du
> benytter $_POST['variabel'] som reference direkte rundt i din kode har
> du vel netop ingen kontrol med dit input?
Det er vel som man ser på det.
> Jeg synes faktisk man kan argumentere for at det netop _ikke er
> ligegyldigt_ om man bruger den ene eller anden metode. I det øjeblik du
> aktivt vælger at hente en udefra kommende variabel ind i dit kode-scope
> bør du jo netop samtidig lave alle de checks der er nødvendig for at
> sikre at indholdet lever op til det forventede.
Jeg kan sagtens se fordelen i at gøre sådan:
$variabel = mysql_real_escape_string($_POST['variabel']);
istedet for at bruge funktionerne 12 gange i samme samme script. Men jeg
ser stadig intet formål i:
$name = $_POST['name']
$email = $_POST['email']
$website = $_POST['website']
$someinfo = $_POST['someinfo']
$showmethemoney = $_POST['showmethemoney']
$color = $_POST['color']
> Og jeg ser det faktisk som både god metodik men også teknik at vænne sig
> til (normalt) aldrig direkte i koden at bruge værdier der kommer fra
> PHPs SUPERGLOBALS ($_REQUEST, $_GET, $_POST, $_COOKIE - og begrebet kan
> udviddes i visse tilfælde til både $_SERVER og $_SESSION globalene også
> - specielt den sidste hvis man kører kode afviklet på usikker shared
> hosting) - men at man tager sig tid til 1) overveje hvilke variable man
> har brug for at overføre gennem hvilke kanaler og 2) hvilket indhold
> disse forventes at medbringe.
Det handler, efter min mening, stadig kun om at have kontrol over sin kode.
> Der er det generelt smartere (og ofte mere overskueligt) - at bruge:
>
> $variabel = $_POST['variabel']
>
> metoden - da den nemt og sikkert kan extendes med alle dine nødvendige
> checks - een gang for alle i din kode.
Det er da helt okay, hvis du finder det mere overskueligt.
Min kode bliver ikke mindre overskuelig af jeg ikke gør det.
Eksempel:
$input = mysql_real_escape_string(strip_tags($_POST['input']));
if(($_POST['tal']/$_POST['tal']) == 1)
{
mysql_query("UPDATE table SET description='".$input."' WHERE
no='".$_POST['tal']."'");
}
else
{
mysql_query("INSERT INTO table (no, description) VALUES ('0',
'".$input."')");
}
ovenstående (hurtig slamkode) finder jeg ikke uoverskueligt på nogen som
helst måde og mener jeg har den kontrol med mine globals som jeg vil have.
Men igen, det er en smagssag.
--
Dan Storm - storm at err0r dot dk /
http://err0r.dk
Tro ikke brugerne vil gøre noget for at undgå dit killfilter
- Så vigtig er du heller ikke!