Vraag & Antwoord

Webprogrammeren & scripting

$_POST- variabelen in mail-array

9 antwoorden
  • hallo, Bij de volgende code krijg ik een foutmelding [code:1:a3ff6a0c21] if(mail("$_POST[\"mailadres\"]","$_POST[\"onderwerp\"]","$_POST[\"bericht\"]","From: $_POST[\"afzender\"]")) { echo "Uw bericht is verzonden"; }[/code:1:a3ff6a0c21] Dat kan ik voorkomen door de vars appart de definieren: [code:1:a3ff6a0c21] $mailadres=$_POST["$mailadres"] [/code:1:a3ff6a0c21] enz, en dan deze variabelen te gebruiken in de mail-array: [code:1:a3ff6a0c21] if(mail("$mailadres","$onderwerp","$bericht","From: $afzender")) { echo "Uw bericht is verzonden"; } [/code:1:a3ff6a0c21] Kan dit ook korter?
  • [code:1:377ba0227f]if(mail($_POST["mailadres"], $_POST["onderwerp"],$_POST["bericht"],"From: " . $_POST["afzender"])) { echo "Uw bericht is verzonden"; }[/code:1:377ba0227f] zoiets?
  • [code:1:13f5fcef05] if(mail($mailadres, $onderwerp, $bericht, "From: $afzender")) { echo "Uw bericht is verzonden"; }[/code:1:13f5fcef05] Dit werkt ook, omdat namelijk PHP het handige gebruik (soms onhandig) heeft om de POST-array (dat is het, een array) variabele ook aan hun variabele toe te kenne zonder de $_POST ervoor. Dit geeft soms problemen maar in jou geval is het DE oplossing :wink: Buiten dat hoef je maar zelden "..." om variabele te zetten als je een functie aanroept. Als het waardes zijn wel, maar niet als het een variabele is. :P
  • [quote:c95cd5e38b="Safihre"]Dit werkt ook, omdat namelijk PHP het handige gebruik (soms onhandig) heeft om de POST-array (dat is het, een array) variabele ook aan hun variabele toe te kenne zonder de $_POST ervoor.[/quote:c95cd5e38b] Dat is/was wel zo, maar alleen als REGISTER_GLOBALS aan staan. Bij de huidige versie zijn die echter niet meer gebruikt, met name ivm de veiligheid. [quote:c95cd5e38b]Buiten dat hoef je maar zelden "..." om variabele te zetten als je een functie aanroept. Als het waardes zijn wel, maar niet als het een variabele is. [/quote:c95cd5e38b] Dit klopt wel (en was ook het probleem)
  • [quote:5c5e8afbc3="E gozeling"][quote:5c5e8afbc3="Safihre"]Dit werkt ook, omdat namelijk PHP het handige gebruik (soms onhandig) heeft om de POST-array (dat is het, een array) variabele ook aan hun variabele toe te kenne zonder de $_POST ervoor.[/quote:5c5e8afbc3] Dat is/was wel zo, maar alleen als REGISTER_GLOBALS aan staan. Bij de huidige versie zijn die echter niet meer gebruikt, met name ivm de veiligheid. [quote:5c5e8afbc3]Buiten dat hoef je maar zelden "..." om variabele te zetten als je een functie aanroept. Als het waardes zijn wel, maar niet als het een variabele is. [/quote:5c5e8afbc3] Dit klopt wel (en was ook het probleem)[/quote:5c5e8afbc3] Het probleem is toch dat de " geescaped worden? Dit is de code in de TS: [code:1:5c5e8afbc3] if(mail("$_POST[\"mailadres\"]","$_POST[\"onderwerp\"]","$_POST[\"bericht\"]","From: $_POST[\"afzender\"]")) { echo "Uw bericht is verzonden"; }[/code:1:5c5e8afbc3] Ik gebruik altijd " in een $_POST array. We hebben er recentelijk op het forum nog een korte [url=http://forum.computertotaal.nl/phpBB2/viewtopic.php?t=145651]discussie[/url] over gevoerd :)
  • [quote:6cf7a7d2c5="Safihre"][code:1:6cf7a7d2c5] if(mail($mailadres, $onderwerp, $bericht, "From: $afzender")) { echo "Uw bericht is verzonden"; }[/code:1:6cf7a7d2c5] Dit werkt ook, omdat namelijk PHP het handige gebruik (soms onhandig) heeft om de POST-array (dat is het, een array) variabele ook aan hun variabele toe te kenne zonder de $_POST ervoor. [/quote:6cf7a7d2c5] Bij de TS werkte het ook met register_globals off aangezien hij eerst [code:1:6cf7a7d2c5] $mailadres = $_POST['mailadres'] [/code:1:6cf7a7d2c5] Overgens is het niet erg slim om zomaar $_POST of $_GET (enz) direct in een PHP functie te zetten. regel 1 is dat je input van de gebruiker nooit kunt vertrouwen en het risico bestaat dat mensen je code kunnen gebruiken om 'verkeerde' dingen te doen. Iemand zou met dit specifieke voorbeeld via een extern script heel veel mails kunnen versturen.
  • [quote:99e291a38d="Japaveh"]Het probleem is toch dat de " geescaped worden? Dit is de code in de TS: [code:1:99e291a38d] if(mail("$_POST[\"mailadres\"]","$_POST[\"onderwerp\"]","$_POST[\"bericht\"]","From: $_POST[\"afzender\"]")) { echo "Uw bericht is verzonden"; }[/code:1:99e291a38d][/quote:99e291a38d] Dat de " geescaped worden, komt waarschijnlijk door dat $_POST["iets"] in het geheel wordt omgeven door ". Zou je [i:99e291a38d]"$_POST["iets"]"[/i:99e291a38d] gebruiken, dan krijg je een foutmelding. Ik denk dat de ts deze probeert te voorkomen door de " om [i:99e291a38d]iets[/i:99e291a38d] te escapen. Het escapen is dus idd de fout, maar deze komt (mogelijk) voort uit de andere fout die er in zit.
  • Dat is een goeie... kun je dingen in een variabele escape? Dan kun je beter een mix van " en ' gebruiken om het conflict op te lossen met de escapes :wink:
  • [quote:09921eaa6e="Safihre"]Dat is een goeie... kun je dingen in een variabele escapen?[/quote:09921eaa6e] Nee, niet in een variabele, wel in een string die in de tekst staat. Maar als je een variabele al omgeeft met " (wat beter niet gedaan kan worden, zolang het een losse variabele is), hoef je de index van de array (het deel tussen [ en ] zelf niet meer tussen " te zetten.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.