PDA

Bekijk Volledige Versie : redirect in php (echo, header, ..)



gandert
15/08/07, 03:56
Heb een html en php pagina gemaakt om zo een mail formulier te kunnen versturen (dmv POST).

In onderstaande code moet na het versturen van de mail de pagina veranderen naar bedankt.html.

heb reeds geprobeerd:


echo "Thank you for using our mail form";

vervangen door:


echo header ('Location: bedankt.html');
exit();

en ook eens door:


header ('Location: bedankt.html');
exit();

maar dit alles zonder succes




<?php
{
//send email
$email = $_POST['email'] ;

$naam = $_POST["naam"] ;
$voornaam = $_POST["voornaam"] ;
$straat = $_POST["straat"] ;
$nummer = $_POST["nummer"] ;
$gemeente = $_POST["gemeente"] ;
$postcode = $_POST["postcode"] ;
$telefoon = $_POST["telefoon"] ;
$onderwerp = $_POST["onderwerp"] ;
$gevonden = $_POST["gevonden"] ;
$bericht = $_POST["bericht"] ;

mail( "administratie@dryhome.be", "Noaqua site",
"Dit bericht werd verzonden via het contact formulier op noaqua.be

Naam: $naam
Voornaam: $voornaam
Straat: $straat
Nummer: $nummer
Gemeente: $gemeente
Postcode: $postcode
Telefoon: $telefoon
Mail: $email
Bericht: $bericht

Gevonden via: $gevonden", "From: $email" );
echo "Thank you for using our mail form";



}




?>

ichosting
15/08/07, 08:51
Probeer het eens zo:



<?php
{
//send email
$email = $_POST['email'] ;

$naam = $_POST["naam"] ;
$voornaam = $_POST["voornaam"] ;
$straat = $_POST["straat"] ;
$nummer = $_POST["nummer"] ;
$gemeente = $_POST["gemeente"] ;
$postcode = $_POST["postcode"] ;
$telefoon = $_POST["telefoon"] ;
$onderwerp = $_POST["onderwerp"] ;
$gevonden = $_POST["gevonden"] ;
$bericht = $_POST["bericht"] ;

if (!mail( "administratie@dryhome.be", "Noaqua site",
"Dit bericht werd verzonden via het contact formulier op noaqua.be

Naam: $naam
Voornaam: $voornaam
Straat: $straat
Nummer: $nummer
Gemeente: $gemeente
Postcode: $postcode
Telefoon: $telefoon
Mail: $email
Bericht: $bericht

Gevonden via: $gevonden", "From: $email" )) {

echo "Er is een fout opgetreden bij het verzenden van e-mail!";

}else{
header ("Location: /bedankt.html");

}


}

?>

gandert
15/08/07, 09:16
het werkt. Bedankt

ichosting
15/08/07, 09:21
Ok. Ik zou er overigens wel even de POST gegevens strippen op vreemde tekens alvorens als je ze inleest. Om mogelijke spam etc te voorkomen!

Dennie-DeTi
15/08/07, 11:21
Na de header moet je wel een exit(0); zetten. In dit geval maakt het niet zoveel uit, maar anders voert php de code na de header ook nog uit. Heeft bij ons wel eens voor mooie resultaten gegeven :)

ichosting
15/08/07, 12:05
Ja da's waar, alleen voor dit voorbeeld was het genoeg idd. Maar je hebt gelijk.

Wido
15/08/07, 13:09
Uhm, geen input controle? Ik kan namelijk echt GIGANTISCH mooi spammen via dit formulier van jou.

blieb
29/08/07, 06:02
Wido! je mag niet spammen via dat formulier :(


Ik heb laatst overgens wel leuke tip gehad om spambots tegen te houden.

Plaats een hiddenfield in je form met value "0". Zorg dat een javascriptje het op 1 zet. En laat php vervolgens controlleren of de hiddenfield 1 is.

vergeet niet de bezoeker erop te wijzen dat ze javascript nodig hebben om het formulier te versturen :)

crazycoder
29/08/07, 09:03
Wido! je mag niet spammen via dat formulier :(

Helaas is Wido niet de enige die dat kan.

Wie niet snapt waar het over gaat, google maar eens op "header injection". En nee, het helpt echt niet als je het adres waar de e-mail naartoe moet in de code heb gezet.

ByteMe
29/08/07, 09:42
Toch wel verplichte lectuur voor elke PHP/SQL programmeur:

Mooi voorbeeld wat er kan misgaan met mail-formuliertjes
http://www.redfruitwebhosting.nl/support/artikel/3/PHP_bescherm_je_formulieren_tegen_E-mail_Injection/

Algemene beveiliging Xsitescripting, forum hacks, sessies, (my)SQL injection..
http://www.phpfreakz.nl/downloadz/webprogrammers_hacking_huide.pdf

Gandert, als je het simpel en veilig wil houden, dan kan je bijvoorbeeld FormHandler gebruiken op je site. Een pak scriptjes die je kan gebruiken zoals je wil bijv Class.Mailer.php om makkelijk multipart emails te maken. Die controleert bv ook op meerdere lijnen in je To-fields.