Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: php mailformuliertje  (gelezen 4467 keer)

php mailformuliertje
« Gepost op: 2010/03/23, 01:46:32 »
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Contactformulier</title>
</head>
<body>


<?php
if(isset($_POST['Submit'])) 
{
// Receiving variables
@$pfw_ip$_SERVER['REMOTE_ADDR'];
@
$Naam addslashes($_POST['Naam']);
@
$EmailFrom addslashes($_POST['EmailFrom']);
@
$Adres addslashes($_POST['Adres']);
@
$Postcode addslashes($_POST['Postcode']);
@
$Woonplaats addslashes($_POST['Woonplaats']);
@
$Rekeningnummer addslashes($_POST['Rekeningnummer']);
@
$Akkoord addslashes($_POST['Akkoord']);
@
$Nieuwsbrief addslashes($_POST['Nieuwsbrief']);


// Validation
if (strlen($Naam) == )
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen naam ingevuld.</font></p>");
}

if (! 
ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+'$EmailFrom))
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen geldig e-mail adres ingevuld.</font></p>");
}

if (
strlen($Adres) == )
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen adres ingevuld.</font></p>");
}

if (
strlen($Postcode) == )
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen postcode ingevuld.</font></p>");
}

if (
strlen($Woonplaats) == )
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen woonplaats ingevuld.</font></p>");
}

if (
strlen($Rekeningnummer) == )
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen rekeningnummer ingevuld.</font></p>");
}

if (
strlen($Akkoord) == )
{
die(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>U heeft geen akkoord gegeven op de actie.</font></p>");
}

//Verstuur mail tje
$header "From: $EmailFrom\n"
  
"Reply-To: $EmailFrom\n";
$subject "Lid worden";
$email_to "mijnmail@domeinl.com";
$message "Naam: $Naam\n"
"Email: $EmailFrom\n"
" \n"
"Adres: $Adres\n"
"Postcode: $Postcode\n"
"Woonplaats: $Woonplaats\n"
"Rekeningnummer: $Rekeningnummer\n"
"Actie akkoord: $Akkoord\n"
"Nieuwsbrief: $Nieuwsbrief\n"
"IP van gebruiker: $pfw_ip\n"
"------------------------------------------------------------\n";
@
mail($email_to$subject ,$message ,$header ) ;

 echo(
"<p align='center'><font face='Arial' size='3' color='#FF0000'>Het is succesvol verzonden.</font></p>");
}else{
 
?>


<form action='' method='post' target='_self'>
<p>Naam:* <input type="text" name="Naam"></p>
<p>Email:* <input type="text" name="EmailFrom"></p>
<p>Adres:* <input type="text" name="Adres"></p>
<p>Postcode:* <input type="text" name="Postcode"></p>
<p>Woonplaats:* <input type="text" name="Woonplaats"></p>
<p>Rekeningnummer:* <input type="text" name="Rekeningnummer"></p>
<p><input type="checkbox" name="Akkoord" value="Yes">Ik ga akkoord met de maandelijkse betaling van 7 euro en de ACTIE van 1 euro voor de eerste maand*</p>
<p><input type="checkbox" name="Nieuwsbrief" value="Yes"> Ik ontvang graag nieuwsbrieven met extra informatie en tips!</p>
<p><input type="submit" name="Submit" value="Submit"></p>
</form>
Verplichte velden (*)
<? } ?>
</body>
</html>


Hallo....ben zelf geen programmeur of scripter, dus vraag het maar even aan de pro' s  =D Hoe verander ik de bovenstaande code, zodat na het klikken op submitten...ipv een berichtje een redirect wordt uitgevoerd naar http://xxxxx ???

Was zelf een beetje bezig geweest, maar kwam er niet helemaal uit  :-[
Zo maar wat willekeurig artwork:
http://www.chaukar.deviantart.com

Ecchi Anime, Manga and Otakuism:
http://www.animeonsen.com

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: php mailformuliertje
« Reactie #1 Gepost op: 2010/03/23, 10:02:23 »
Wil je de redirect na het klikken, of nadat de mail is verstuurd?
<form action='webpagina.php'
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Re: php mailformuliertje
« Reactie #2 Gepost op: 2010/03/23, 10:37:48 »
Als het succesvol is verstuurd....wil ik in plaats van berichtje een redirect naar pagina x


zoniet de melding van naam vergeten etc.
Zo maar wat willekeurig artwork:
http://www.chaukar.deviantart.com

Ecchi Anime, Manga and Otakuism:
http://www.animeonsen.com

Offline commandoline

  • LoCo-contact
    • marten-de-vries
    • Marten-de-Vries.nl
Re: php mailformuliertje
« Reactie #3 Gepost op: 2010/03/23, 11:10:32 »
Als het succesvol is verstuurd....wil ik in plaats van berichtje een redirect naar pagina x


zoniet de melding van naam vergeten etc.
Eigenlijk zoek je dus gewoon een manier om i.p.v. aan het einde van de php een stukje html te echo'en, te redirecten.

Redirecten kan in php door de Location-header handmatig in te stellen. Bijv:
<?php header("http://www.url.to/page/after.form"); /*De link is de pagina waar je de gebruiker naartoe wilt sturen.*/ ?>

Re: php mailformuliertje
« Reactie #4 Gepost op: 2010/03/23, 11:16:42 »
uhm zo dus niet

@mail($email_to, $subject ,$message ,$header ) ;
header("http://www.animeonsen.com"); /*De link is de pagina waar je de gebruiker naartoe wilt sturen.*/
//echo("<p align='center'><font face='Arial' size='3' color='#FF0000'>Het is succesvol verzonden.</font></p>");
}else{
 ?>


krijg melding

Warning: Cannot modify header information - headers already sent by (output started at /home/w10003/domains/animeonsen.com/public_html/test/contact3.php:9) in /home/w10003/domains/animeonsen.com/public_html/test/contact3.php  on line 79

hetzelfde probleem waar ik dus steeds mee zat te puzzelen...

wat doe ik fout?
Zo maar wat willekeurig artwork:
http://www.chaukar.deviantart.com

Ecchi Anime, Manga and Otakuism:
http://www.animeonsen.com

Offline Rachid

  • Lid
    • rachidbm
    • Mijn blog
Re: php mailformuliertje
« Reactie #5 Gepost op: 2010/03/23, 11:59:30 »
Je kunt geen redirect doen als je al HTML hebt teruggestuurd. Of output hebt gedaan.
Je moet de php code dus helemaal boven aan de pagina zetten.

En het is volgens mij; header("Location: http://www.nu.nl");
Als het script op dezelfde site draait zou ik de domeinnaam weghalen, dat je zoiets krijgt als: ("Location: /mailsend.html");
« Laatst bewerkt op: 2010/03/23, 13:17:59 door Wazzzaaa »
Ben je ook blij dat Ubuntu zo toegankelijk en gratis is, en wil je graag net als ik iets terugdoen, kijk dan eens rond bij mwanzo, dé poort naar het bijdragen aan Ubuntu en haar gemeenschap!

Re: php mailformuliertje
« Reactie #6 Gepost op: 2010/03/23, 12:05:09 »
thanks ...zo te zien werkt ie..

idd php code voor html zetten...was de trick
Zo maar wat willekeurig artwork:
http://www.chaukar.deviantart.com

Ecchi Anime, Manga and Otakuism:
http://www.animeonsen.com

Re: php mailformuliertje
« Reactie #7 Gepost op: 2010/03/24, 08:52:47 »
Dit script is niet echt veilig.
Als ik naar deze regel krijg, dan heb ik het vermoeden dat ie alleen een gedeelte controleert (ik weet niet of ereg anders werkt als preg):
ereg('[A-Za-z0-9_-]+\@[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+', $EmailFrom)Een emailadres als deze kan dus ook: a@a.a
Wat kwalijker is, is dat je op deze manier ook headers kan invoegen:
a@a.a
Bcc: derde.partij@example.com

Ook zou ik in wanneer er een fout optreed de gegevens in het tekstveld invoeren, zodat men niet alles over moet typen.

Dit heb ik er van gemaakt (je zou zelf moeten zien waar je HTML moet plaatsen):
<?php
$redirect 
'http://xxx';
$email_to 'jij@domein.nl';
// einde instellingen
$posted $_SERVER['REQUEST_METHOD'] == 'POST';
$showform TRUE;
$Naam getPost('Naam');
$EmailFrom getPost('EmailFrom');
$validEmail preg_match('/^([*+!.&#38;#$¦\'\\%\/0-9a-z^_`{}=?~:-]+)@(([0-9a-z-]+\.)+[0-9a-z]{2,4})$/i'$EmailFrom);
$Adres getPost('Adres');
$Postcode getPost('Postcode');
$Woonplaats getPost('Woonplaats');
$Rekeningnummer getPost('Rekeningnummer');
if(
$posted && $validEmail &&
   
$Naam && $Adres && $Postcode && $Woonplaats && $Rekeningnummer){
$header "From: $EmailFrom\n"
"Reply-To: $EmailFrom\n";
$subject "Lid worden";
$message "Naam: $Naam\n"
"Email: $EmailFrom\n"
"Adres: $Adres\n"
"Postcode: $Postcode\n"
"Woonplaats: $Woonplaats\n"
"Rekeningnummer: $Rekeningnummer\n"
"Actie akkoord: Ja\n"
"Nieuwsbrief: ".(isset($_POST['Nieuwsbrief'])?'Ja':'Nee')."\n"
"IP van gebruiker: ".$_SERVER['REMOTE_ADDR']."\n"
"------------------------------------------------------------\n";
if(@mail($email_to$subject$message$header)){
header('Location: '.$redirect);
exit;
echo 'Het bericht is verzonden!';
$showform FALSE;
}
else{
echo 'Door technische problemen kon het bericht niet in ontvangst worden genomen.<br>Probeert u het later nog eens.';
}
}
function 
getPost($name$multiline=FALSE){
if(empty($_POST[$name]) || !is_string($_POST[$name])) return '';
$val $_POST[$name];
$val get_magic_quotes_gpc() ? stripslashes($val) : $val;
if(!$multiline){
$val str_replace(array("\r""\n"), ''$val);
}
return trim($val);
}
if(
$showform){
?>

<html>
<head>
<titel>Contact</title>
</head>
<body>
<form action="" method="post">
<p>Naam:* <input type="text" name="Naam" value="<?php echo htmlentities($Naam); ?>"></p>
<?php if($posted&&!$Naam)echo '<p style="color:#f00">U heeft geen naam ingevuld.</p>';?>
<p>Email:* <input type="text" name="EmailFrom" value="<?php echo htmlentities($EmailFrom); ?>"></p>
<?php if($posted&&!$validEmail)echo '<p style="color:#f00">U heeft geen geldig e-mailadres ingevuld.</p>';?>
<p>Adres:* <input type="text" name="Adres" value="<?php echo htmlentities($Adres); ?>"></p>
<?php if($posted&&!$Adres)echo '<p style="color:#f00">U heeft geen adres ingevuld.</p>';?>
<p>Postcode:* <input type="text" name="Postcode" value="<?php echo htmlentities($Postcode); ?>"></p>
<?php if($posted&&!$Postcode)echo '<p style="color:#f00">U heeft geen postcode ingevuld.</p>';?>
<p>Woonplaats:* <input type="text" name="Woonplaats" value="<?php echo htmlentities($Woonplaats); ?>"></p>
<?php if($posted&&!$Woonplaats)echo '<p style="color:#f00">U heeft geen woonplaats ingevuld.</p>';?>
<p>Rekeningnummer:* <input type="text" name="Rekeningnummer" value="<?php echo htmlentities($Rekeningnummer); ?>"></p>
<p><input type="checkbox" name="Akkoord" value="Yes" <?php if(isset($_POST['Akkoord']))echo ' checked'?>>Ik ga akkoord met de maandelijkse betaling van 7 euro en de ACTIE van 1 euro voor de eerste maand*</p>
<?php if($posted&&!$Naam)echo '<p style="color:#f00">U moet akkoord gaan met de betaling.</p>';?>
<p><input type="checkbox" name="Nieuwsbrief" value="Yes" <?php if(isset($_POST['Nieuwsbrief']))echo ' checked'?>> Ik ontvang graag nieuwsbrieven met extra informatie en tips!</p>
<p><input type="submit" value="Verstuur"></p>
</form>
<sup>*)</sup> Verplichte velden
</body>
</html>
<?php ?>

Offline Drikje

  • Lid
Re: php mailformuliertje
« Reactie #8 Gepost op: 2010/03/28, 15:58:08 »
Hierbij een klein deel uit een script van mijzelf.

De postcode wordt gecontroleerd op vier cijfers en twee letters

( de controle op de twee letters in dit script is nog niet goed, het controleert alleen of de ingevoerde waarde geen getal is, dus met de invoer van overige tekens gaat dit script akkoord, en dat mag natuurlijk niet, de ingevoerd waarde moet voldoen aan twee letters a t/m z en daar dient het op gecontroleerd te worden. Dit moet ik bij mijzelf nog aanpassen. )

In dit script krijgt de string bij een foute invoer de waarde van de foutmelding. Door de echo in het invoerveld zal hierdoor de foutmelding in het invoerveld verschijnen i.p.v. een extra regel tussen de tekst. Tevens wordt aan de hand van de waarde van de string een kleur meegegeven, bij een fout wordt het rood, anders zwart.

Dit is slechts een deel van mijn script, dus dit script doet verder niets dan alleen controleren.


<?php

if(isset($_POST[aanmelden])) {

$pcc = ($_POST[pcc]);
$pcl = ($_POST[pcl]);
$plaats = ($_POST[plaats]);

if (
strlen($pcc) != "4" )  { $pcc="Vier cijfers"; } else { $colpcc="black" ; }
if (
$pcc == "Vier cijfers" ) { $colpcc="red" ; }

if (
is_numeric($pcc) == false ) { $pcc="Vier cijfers" ; } else { $colpcc="black" ; }
if (
$pcc == "Vier cijfers" ) { $colpcc="red" ; }

if (
strlen($pcl) != "2" )  { $pcl="Twee letters"; } else { $colpcl="black" ; }
if (
$pcl == "Twee letters" ) { $colpcl="red" ; }

if (
is_numeric($pcl) != false ) { $pcl="Twee letters" ; } else { $colpcl="black" ; }
if (
$pcl == "Twee letters" ) { $colpcl="red" ; }

if (
strlen($plaats) < "1" )  { $plaats="Woonplaats invullen"; } else { $colplaats="black" ; }
if (
$plaats == "Woonplaats invullen" ) { $colplaats="red" ; }

}

?>


<form action="<?php echo $_SERVER[PHP_SELF];?>" method="post">

<p>Postcode cijfers en letters appart invullen

<input style="font-size:8pt; width:120px; color:<?php echo $colpcc ?>; "  value="<?php echo $pcc ?>" name="pcc">
<input style="font-size:8pt; width:95px; color:<?php echo $colpcl ?>; "  value="<?php echo $pcl ?>" name="pcl">
</p>

<p> Woonplaats <input type="text" style="font-size:8pt; width:220px; color:<?php echo $colplaats ?>; "  value="<?php echo $plaats ?>" name="plaats"> </p>

<p>Aanmelding verzenden

<input type="submit" name="aanmelden"  value="Aanmelding vezenden" style="font-size:8pt; width:215px; color:blue; " > </p>
</form>


let ook op de controle van de bankrekening nummer ( geen postbanknummer ), deze dient uit 9 getallen te bestaan en er zit een bepaalde formule in de opbouw van een bankrekeningnummer hierop dien je ook te controleren. zie :

www.phphulp.nl/php/scripts/1/782/+php+controle+bankrekening&cd=1&hl=nl&ct=clnk&gl=nl
« Laatst bewerkt op: 2010/03/28, 16:06:23 door Drikje »
Acer TravelMate 4000 1,5Ghz, 512mb intern, Ubuntu sinds 04-01-2009.

Offline Drikje

  • Lid
Re: php mailformuliertje
« Reactie #9 Gepost op: 2010/03/28, 20:45:19 »
Ook in de controle van de vier getallen zit in het bovengenoemd script een fout. Het blijkt namelijk dat het mogelijk is een breuk-getal in te voeren zoiets als 54.3.
In de beschreven controle wordt gecontroleerd op 4 karakters, daar voldoet 54.3 aan omdat de punt/komma meedoet als karakter.

Daarna wordt gecontroleerd of het een getal is, ook daar voldoet het aan, tenslotte weten wij allemaal dat een breuk ook een getal is.

En daarmee word deze controle goedgekeurd, maar een postcode bestaat uit vier helle getallen zonder breuk, dus probleem ....

De controle moet zijn of de vier ingevoerde getallen een integere waarde is. Het blijkt dat een string verkregen met GET of POST nimmer integer is. Na een flinke zoektocht op het internet blijken t.b.v. de controle hier diverse mogelijkheden voor te zijn, maar complex of veel programmeerwerk. Ik wilde een stukje eenvoud. Na een get of post kan je rekenen met de waarde van het verkregen getal. Indien je voorafgaand aan de controle gaat rekenen met de verkregen waarde door slechts eerst plus 1 en daarna min 1 wordt de string herkenbaar als integer of niet.

De controle van de vier cijfers van de postcode ziet bij er mij als volgt uit :

De regel :



if (is_numeric($pcc) == false ) { $pcc="Vier cijfers" ; } else { $colpcc="black" ; }
if ($pcc == "Vier cijfers" ) { $colpcc="red" ; }

vervalt.

hiervoor in de plaats komt :


$s=$pcc+1 ;
$pcc=$s-1 ;

if (is_int($pcc)) { $colpcc="black" ; } else { $colpcc="red" ;
$pcc = "Vier cijfers" ; }


het volledige script van dit deel :


<?php

$pcc
="Vier cijfers";
$pcl="Twee letters";
$colpcc="red" ;
$colpcl="red" ;

if(isset(
$_POST[aanmelden])) {

$pcc = ($_POST[pcc]);
$pcl = ($_POST[pcl]);
$plaats = ($_POST[plaats]);

$s=$pcc+;
$pcc=$s-;

if (
is_int($pcc)) { $colpcc="black" ; } else { $colpcc="red" ;
$pcc "Vier cijfers" ; }

if (
strlen($pcc) != "4" )  { $pcc="Vier cijfers"; } else { $colpcc="black" ; }
if (
$pcc == "Vier cijfers" ) { $colpcc="red" ; }

if (
strlen($pcl) != "2" )  { $pcl="Twee letters"; } else { $colpcl="black" ; }
if (
$pcl == "Twee letters" ) { $colpcl="red" ; }

if (
is_numeric($pcl) != false ) { $pcl="Twee letters" ; } else { $colpcl="black" ; }
if (
$pcl == "Twee letters" ) { $colpcl="red" ; }

if (
strlen($plaats) < "1" )  { $plaats="Woonplaats invullen"; } else { $colplaats="black" ; }
if (
$plaats == "Woonplaats invullen" ) { $colplaats="red" ; }

}

?>


<form action="<?php echo $_SERVER[PHP_SELF];?>" method="post">

<p>Postcode

<input style="font-size:8pt; width:120px; color:<?php echo $colpcc ?>; "  value="<?php echo $pcc ?>" name="pcc">
<input style="font-size:8pt; width:95px; color:<?php echo $colpcl ?>; "  value="<?php echo $pcl ?>" name="pcl">
</p>

<p> Woonplaats <input type="text" style="font-size:8pt; width:220px; color:<?php echo $colplaats ?>; "  value="<?php echo $plaats ?>" name="plaats"> </p>

<p>Aanmelding verzenden

<input type="submit" name="aanmelden"  value="Aanmelding vezenden" style="font-size:8pt; width:215px; color:blue; " > </p>
</form>

« Laatst bewerkt op: 2010/03/28, 20:49:07 door Drikje »
Acer TravelMate 4000 1,5Ghz, 512mb intern, Ubuntu sinds 04-01-2009.

Re: php mailformuliertje
« Reactie #10 Gepost op: 2010/05/04, 20:37:48 »
Controleer gewoon met een reguliere expressie, dan weet je zeker dat wat je binnen krijgt een postcode genoemd mag worden ;)

if(!preg_match("/^([0-9]{4})([a-zA-Z]{2})$/", $pcc.$pcl)) {
   $melding = "Postcode onjuist. (voorbeeld 1234AB)";
}

Heb de code niet getest maar deze zou moeten werken.