PDA

Volledige versie bekijken : LoadVars $POST Variable


digitalecartoons
%Europe/Berlin %001 %2007, 01:02
Ik gebruik
mySendVars.sendAndLoad("testmail.php", myLoadVars, "POST")
om b.v. een "naam" LoadVars variabele naar mijn php script te sturen.

In het PHP script gebruik ik dan
$naamvariabele = utf8_decode($_POST["naam"])

om die variabele eruit te plukken. Dacht dat ik dat dan altijd met een POST variabele moest doen, dus in dit geval $_POST["naam"]

Maar merkte net dat dit:
echo $_POST["naam"];

hetzelfde resultaat geeft als dit:
echo $naam;

Als ik in flash dus b.v. een input veld maak met de instance "naam" en ik stuur die dan met LoadVars.send naar mijn php script, dan ontstaat daar dus een php variabele met dezelfde naam? Klopt dat?

Dan zou ik bovenstaande regel net zo goed zo kunnen doen:
$naam = utf8_decode($naam)

Of is het werken met een POST-variabele als $_POST["naam"] toch veiliger?

josko
%Europe/Berlin %416 %2007, 11:00
Wanneer de setting register_globals aanstaat, converteerd hij _POST['naam'] automatisch naar $naam. Maar, die setting is niet altijd aan. Het is dan ook beter om gewoon _POST[key] te gebruiken.

Tenzij je dit bovenaan zet, om het af te dwingen:

<?php
foreach ($_POST as $key=>$value) {
$$key = $value;
}
?>

--edit
ik heb ook niet gezegd dat het aan te raden is ;)
maar idd, je moet niet de includes hierboven hebben. Dan kan het verleidelijk worden om
_POST['dbhost'] oid even mee te sturen, waarmee dan de connectie wordt gemaakt.

true bernard, goed punt.

BernardV
%Europe/Berlin %441 %2007, 11:35
Wanneer de setting register_globals aanstaat, converteerd hij _POST['naam'] automatisch naar $naam. Maar, die setting is niet altijd aan. Het is dan ook beter om gewoon _POST[key] te gebruiken.

Tenzij je dit bovenaan zet, om het af te dwingen:

<?php
foreach ($_POST as $key=>$value) {
$$key = $value;
}
?>

Dat lijkt me niet echt verstandig, want er zijn veel mensen die hebben de includes boven dit soort code staan, laat ik nu eens gokken dat ook de variabele $dbhost gebruikt wordt, geef ik daar een IP van mijn sniffer die ook op de standaard mysql poort draait en ik heb de login gegevens.

Bargok
%Europe/Berlin %467 %2007, 12:13
register_globals dient gewoon uit te staan, en ten alle tijden niet gebruikt te worden. Zodra php6 verschijnt zijn deze gelukkig helemaal geschiedenis.