mailscript werkt niet
chth - 29/08/2010 10:57
Lid
hallo, ik weer.
ik heb dus weer een mailscript dat niet werkt, als ik het online zet en ik wil naar die pagina van het formulier, wordt er een lege mail verstuurd naar mijn emailadres zonder dat er een pagina opent.
dit is de code die ik gebruik
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ($_POST['verzendbutton'] != "verzenden") {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :".$_POST['naam']."\nCommentaar: ".$_POST['reactie'];
mail("mijn emailadres", "contact", $boodschap, $_POST['mailadres'];
echo "Bedankt ".$_POST['naam'].", fijn dat je wilde meewerken";
}
?>
</body>
</html>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ( $_POST [ 'verzendbutton' ] != "verzenden" ) {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :" . $_POST [ 'naam' ] . "\n Commentaar: " . $_POST [ 'reactie' ] ;
mail ( "mijn emailadres" , "contact" , $boodschap , $_POST [ 'mailadres' ] ; echo "Bedankt " . $_POST [ 'naam' ] . ", fijn dat je wilde meewerken" ; }
?>
</body>
</html>
weet iemand wat ik fout doe?
26 antwoorden
Gesponsorde links
joannis11 - 29/08/2010 11:18 (laatste wijziging 29/08/2010 11:55)
Nieuw lid
Wacht heel even, ik fix hem /
Edit:
Laat het nou net zo zijn, dat de action mailform2.php is.
En ik verwacht dan dat dit mailform1.php is, en hij het ook hier verwerkt!
Dus, dat lijkt mij de bug, en anders is hier mijn script, met verbetering, maar niet perfecte fouthandeling
Je kunt het zelf bijwerken om hun te vertellen wat er mis is.
Maar, om het makkelijk te houden heb ik maar gezegt ALLES in te vullen
<?php
// Pagina: mailform.php
?>
<?php
// Pagina: mailform.php
?>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if (!isset($_POST['verzendbutton'])) {
?>
<form action="" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea><br />
<input type="submit" value="Verzenden" name="verzendbutton" />
</form>
<?php
} else {
if(!empty($_POST['naam']) && !empty($_POST['reactie']) && !empty($_POST['mailadres']))
{
$_POST['naam'] = htmlspecialchars($_POST['naam']);
$_POST['naam'] = strtolower($_POST['naam']);
$_POST['naam'] = ucwords($_POST['naam']);
$_POST['mailadres'] = htmlspecialchars($_POST['mailadres']);
$_POST['reactie'] = htmlspecialchars($_POST['reactie']);
$boodschap = "Naam: " . $_POST['naam'] . "\nCommentaar: " . $_POST['reactie'];
$verzender = "From: " . $_POST['mailadres'];
mail("mail@mymail.com", "Contact", $boodschap, $verzender);
echo "Bedankt " . $_POST['naam'] . ", fijn dat je wilde meewerken";
} else {
echo "Vul astublieft elk veld in.";
}
}
?>
</body>
</html>
<?php
// Pagina: mailform.php
?>
<?php
// Pagina: mailform.php
?>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ( ! isset ( $_POST [ 'verzendbutton' ] ) ) { ?>
<form action="" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea><br />
<input type="submit" value="Verzenden" name="verzendbutton" />
</form>
<?php
} else {
if ( ! empty ( $_POST [ 'naam' ] ) && ! empty ( $_POST [ 'reactie' ] ) && ! empty ( $_POST [ 'mailadres' ] ) ) {
$_POST [ 'naam' ] = ucwords ( $_POST [ 'naam' ] ) ;
$boodschap = "Naam: " . $_POST [ 'naam' ] . "\n Commentaar: " . $_POST [ 'reactie' ] ;
$verzender = "From: " . $_POST [ 'mailadres' ] ;
mail ( "mail@mymail.com" , "Contact" , $boodschap , $verzender ) ; echo "Bedankt " . $_POST [ 'naam' ] . ", fijn dat je wilde meewerken" ;
} else {
echo "Vul astublieft elk veld in." ; }
}
?>
</body>
</html>
Nou, 8 keer in 1 minuut bijgewerkt xD
Maarja...
Hij is nu af, er zijn 3 manieren om hem te vertellen dat hij hem moet afhandelen op DEZELFDE pagina:
1.) zelfde_pagina.php (dus, vul dezelfde pagina in als dat je nu op bent)
2.)
<?php $self = $_SERVER['PHP_SELF']; ?>
<form method='post' action="<?php echo $self; ?>" />
<?php $self = $_SERVER [ 'PHP_SELF' ] ; ?>
<form method='post' action="
<?php echo $self ; ?> " />
3.)
<form method='post' action="" />
<form method = 'post' action = "" / >
chth - 29/08/2010 11:39 (laatste wijziging 29/08/2010 11:43)
Lid
bedankt voor te antwoorden, maar ik denk dat mijn probleem ergens anders zit
het is namelijk nog niet opgelost
ik vraag me ook af wat onderstaande code eigenlijk doet?
($_POST['verzendbutton'])
( $_POST [ 'verzendbutton' ] )
chth - 29/08/2010 11:46 (laatste wijziging 29/08/2010 11:47)
Lid
nee, ik denk dat mijn fout in de andere pagina zit, maar daar moet ik even nog naar zoeken.
ik ben namelijk nog maar net begonnen met php en het in boek waar ik mee werk maken ze verschillende mailscripten en ik denk dat ik vanuit mijn andere pagina (formulier.html) de naam van het mailscript moet aanpassen.
zou dat kunnen?
edit: ja, die fout heb ik wel al aangepast
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ($_POST['verzendbutton'] != "verzenden") {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :".$_POST["naam"]."\nCommentaar: ".$_POST["reactie"];
mail("mail@adres.com", "contact", $boodschap, "from: ".$_POST["naam"]."");
echo "Bedankt ".$_POST["naam"].", fijn dat je wilde meewerken";
}
?>
</body>
</html>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ( $_POST [ 'verzendbutton' ] != "verzenden" ) {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :" . $_POST [ "naam" ] . "\n Commentaar: " . $_POST [ "reactie" ] ;
mail ( "mail@adres.com" , "contact" , $boodschap , "from: " . $_POST [ "naam" ] . "" ) ; echo "Bedankt " . $_POST [ "naam" ] . ", fijn dat je wilde meewerken" ; }
?>
</body>
</html>
valles10 - 29/08/2010 11:47 (laatste wijziging 29/08/2010 11:47)
HTML interesse
mail('ontvanger@email.com', 'onderwerp', 'bericht'.$afzender);
mail ( 'ontvanger@email.com' , 'onderwerp' , 'bericht' . $afzender ) ;
joannis11 - 29/08/2010 11:48 (laatste wijziging 29/08/2010 11:54)
Nieuw lid
Zou kunnen.
Maar kun je misschien beide scripts plaatsen, en de fout die je krijgt, of wat er in jouw ogen fout gaat.
Want als hij geen error is, doet hij niks fout
Maar dan is er iets misgegaan bij het typen, over het hoofd gezien.
Net zoals bij mijn script waar ik net 1 minuut geleden achterkwam...
Een uitroepteken gemist.
En dat ene uitroepteken zorgde wel dat het hele script onbruikbaar werd
Is het jouw al opgevallen dat het laatste ding, dat een komma (,) hoorte te zijn, eigenlijk een punt (.) is?
Ik ga nu alles wel testen op mijn website, inplaatsvan op localhost.
Ik kreeg errors zonder dat er iets aan de hand was
Dus, alle fouten eruit, dan ga ik dat nu met de jouwe doen
Maar kun je dan wel beide scripts sturen?
chth - 29/08/2010 11:54 (laatste wijziging 29/08/2010 12:00)
Lid
@joannis11
het werkt nu deels met mijn aangepaste script maar er zit nog een fout in
namelijk: de bezoeker gaat eerst naar de pagina formulier.html en moet daar het formulier invullen, als de bezoeker zonder iets in te vullen op "verzenden" klikt wordt hij naar mailform2.php gestuurd om daar dan opnieuw het formulier in te vullen. (tot nu toe is er nog niks fout)
maar als de bezoeker dan nog eens op verzenden klikt zonder iets in te vullen, wordt er een lege mail verstuurd en krijgt de bezoeker de melding: Bedankt , fijn dat je wilde meewerken.
dit zou niet mogen gebeuren.
heb jij een idee hoe ik dit kan oplossen?
dit is een deel van formulier.html, maar de fout heb ik al wel, gevonden(een typfout )
<html>
<head>
<title>Mailformulier</title>
</head>
<body>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden">
</form>
</body>
</html>
< html>
< head>
< title> Mailformulier</ title>
</ head>
< body>
< form action= "mailform2.php" method= "post" >
Naam: < input type= "text" name= "naam" />< br />
E
- mail : < input type
= "text" name
= "mailadres" />< br
/> Uw reactie: < textarea cols= "30" rows= "4" name= "reactie" ></ textarea>
< input type= "submit" value= "verzenden" >
</ form>
</ body>
</ html>
en dit is de code van mailform2.php
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ($_POST['verzendbutton'] != "verzenden") {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :".$_POST["naam"]."\nCommentaar: ".$_POST["reactie"];
mail("chth13@gmail.com", "contact", $boodschap, "from: ".$_POST["naam"]."");
echo "Bedankt ".$_POST["naam"].", fijn dat je wilde meewerken";
}
?>
</body>
</html>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ( $_POST [ 'verzendbutton' ] != "verzenden" ) {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :" . $_POST [ "naam" ] . "\n Commentaar: " . $_POST [ "reactie" ] ;
mail ( "chth13@gmail.com" , "contact" , $boodschap , "from: " . $_POST [ "naam" ] . "" ) ; echo "Bedankt " . $_POST [ "naam" ] . ", fijn dat je wilde meewerken" ; }
?>
</body>
</html>
ik ga ook eerst eens een beetje eten
joannis11 - 29/08/2010 12:00 (laatste wijziging 29/08/2010 12:00)
Nieuw lid
In welk script, de jouwe, of de mijne?
Wat je kunt doen, maar dat zit al in de mijne is:
$commentaar = $_POST['commentaar'];
// zorgt dat alle spaties eruit zijn
$commentaar = trim($commentaar);
/* hier kijkt hij of er dan nog wel IETS in zit, als als je de string ofzo al maakt,
werkt isset niet meer, dat kun je makkelijk oplossen, door empty() (als hij helemaal leeg is)
isset werkt niet omdat hij dan wel bestaat, hij is alleen leeg :P
of moeilijker
als het commentaar minder dan 1 teken bevat (dus leeg is)
if(strlen($commentaar) < 1)
{
DOE JE DIT
} else {
en anders dit
}
*/
// als hij dus leeg is
if(empty($commentaar))
{
echo "VUL ALLE VELDEN IN!";
} else {
// stuur die mail :)
mail('', '', '', '');
}
$commentaar = $_POST [ 'commentaar' ] ;
// zorgt dat alle spaties eruit zijn
$commentaar = trim ( $commentaar ) ;
/* hier kijkt hij of er dan nog wel IETS in zit, als als je de string ofzo al maakt,
werkt isset niet meer, dat kun je makkelijk oplossen, door empty() (als hij helemaal leeg is)
isset werkt niet omdat hij dan wel bestaat, hij is alleen leeg :P
of moeilijker
als het commentaar minder dan 1 teken bevat (dus leeg is)
if(strlen($commentaar) < 1)
{
DOE JE DIT
} else {
en anders dit
}
*/
// als hij dus leeg is
{
echo "VUL ALLE VELDEN IN!" ; } else {
// stuur die mail :)
}
Oke
Smakelijk, en ik denk dan dat het hiermee opgelost is?
Ik hoop van wel
Bedankt door: chth
chth - 29/08/2010 12:35
Lid
in mijn formulier.html zat een fout.
nu..
kheb nog 2 vragen
-wat doet: trim($commentaar)
-wat doet: ($_POST['verzendbutton'])
deze begrijp ik niet, kun jij ze een beetje verduidelijken?
gnotrgnotr - 29/08/2010 12:37 (laatste wijziging 29/08/2010 12:40)
Nieuw lid
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if (!$_POST['verzendbutton']) {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :".$_POST['naam']."\nCommentaar: ".$_POST['reactie'];
mail("mijn emailadres", "contact", $boodschap, $_POST['mailadres'];
echo "Bedankt ".$_POST['naam'].", fijn dat je wilde meewerken";
}
?>
</body>
</html>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
if ( ! $_POST [ 'verzendbutton' ] ) {
?>
<form action="mailform2.php" method="post">
Naam: <input type="text" name="naam" /><br />
E-mail: <input type="text" name="mailadres" /><br />
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" value="verzenden" name="verzendbutton" />
</form>
<?php
} else {
$boodschap = "Naam :" . $_POST [ 'naam' ] . "\n Commentaar: " . $_POST [ 'reactie' ] ;
mail ( "mijn emailadres" , "contact" , $boodschap , $_POST [ 'mailadres' ] ; echo "Bedankt " . $_POST [ 'naam' ] . ", fijn dat je wilde meewerken" ; }
?>
</body>
</html>
joannis11 - 29/08/2010 12:49
Nieuw lid
chth schreef:
in mijn formulier.html zat een fout.
nu..
kheb nog 2 vragen
-wat doet: trim($commentaar)
-wat doet: ($_POST['verzendbutton'])
deze begrijp ik niet, kun jij ze een beetje verduidelijken?
Trim doet dit:
stel, je hebt een string:
$string = " text ";
wat doet trim:
van $string = trim($string);
daarin verteld hij dat string, hetzelfde is als zichzelf, maar dan getrimt.
en dan word het:
$string = "text"; inplaatsvan $string = " text ";
hij haalt de open ruimte weg, maar alleen aan de ZIJKANTEN.
Dus hij gaat niet de spaties tussen "Henk de Vries" weghalen, alleen de spaties eromheen.
en die 2e weet ik niet, want je bent de functie vergeten erbij te posten.
Bedankt door: chth
PcFreak - 29/08/2010 12:51 (laatste wijziging 29/08/2010 12:56)
Nieuw lid
gnotrgnotr schreef:
[..code..]
Dit script is niet veilig zo kunnen ze lege berichten versturen je doet het beter zo :
<?php
$MijnMail = "jouw@mail.com";
$Onderwerp = "Contact";
$Naam = $_POST['Naam'];
$Mail = $_POST['Mail'];
$Bericht = $_POST['Bericht'];
$Boodschap = "Naam :".$_POST['Naam']." \n Commentaar: ".$_POST['Bericht'];
if (isset($_POST['Verzenden'])) {
if(empty($Naam)) {
echo "Geen naam ingevuld!";
} elseif(empty($Mail)) {
echo "Geen mail ingevuld!";
} elseif(empty($Bericht)) {
"Geen bericht ingevuld!";
} else {
mail($MijnMail, $Onderwerp, $Boodschap, $Mail;
echo "Je email is succesvol verzonden!";
}
} else {
echo '<form action="<?php echo "".$_SERVER['PHP_SELF'].""; ?>" method="post">
Naam: <input type="text" name="Naam" /><br />
E-mail: <input type="text" name="Mail" /><br />
Bericht: <textarea cols="30" rows="4" name="Bericht"></textarea>
<input type="submit" value="Verzenden!" name="Verzenden" />
</form>';
}
?>
<?php
$MijnMail = "jouw@mail.com" ;
$Onderwerp = "Contact" ;
$Naam = $_POST [ 'Naam' ] ;
$Mail = $_POST [ 'Mail' ] ;
$Bericht = $_POST [ 'Bericht' ] ;
$Boodschap = "Naam :" . $_POST [ 'Naam' ] . " \n Commentaar: " . $_POST [ 'Bericht' ] ;
if ( isset ( $_POST [ 'Verzenden' ] ) ) { echo "Geen naam ingevuld!" ; echo "Geen mail ingevuld!" ; } elseif ( empty ( $Bericht ) ) { "Geen bericht ingevuld!" ;
} else {
mail ( $MijnMail , $Onderwerp , $Boodschap , $Mail ; echo "Je email is succesvol verzonden!" ; }
} else {
echo '<form action="<?php echo "".$_SERVER[' PHP_SELF
'].""; ?>" method="post"> Naam: <input type="text" name="Naam" /><br />
E-mail: <input type="text" name="Mail" /><br />
Bericht: <textarea cols="30" rows="4" name="Bericht"></textarea>
<input type="submit" value="Verzenden!" name="Verzenden" />
</form>' ;
}
?>
Kunnen foutjes inzitten heb het niet getest ;)
joannis11 - 29/08/2010 12:59
Nieuw lid
Ja, die foutjes kun je allemaal tegelijk behandelen, door te zeggen dat als er maar 1 niet is ingevuld, hij zegt alles in te vullen, of mijn manier (die vind ik veel fijner )
Dat is dit:
Je maakt een functie, waarin hij dat formulierjte echo'd.
Als hij 1 fout tegenkomt, dan gaat hij dat formulier opnieuw posten + errors.
En daarin, stuur je de errors mee met de functie, en dan komt het er zo uit te zien:
Username: (username box)
(als er een error is, in het rood laten zien)
Password: (password box)
(als er een error is, in het rood laten zien)
chth - 29/08/2010 14:50
Lid
ik gebruik nu dit als mailform maar er is een klein probleempje namelijk als ik de fomulierpagina open en op "verzenden" klik zonder iets in te vulles laat hij opnieuw het formulier zien, als ik dan nog eens op "verzenden" klik zonder iets in te vullen, dan duid hij in rode tekst aan wet er moet worden ingevuld.
weet iemand hoe ik ervoor kan zorgen dat deze rode tekst onmiddelijk verschijnt, als ik dus voor de eerste keer op "verzenden" klik zonder iets in te vullen?
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
$to = "contact@mail.com";
if ($_POST["verzendbutton"] != "verzenden" || !$_POST["naam"] || !$_POST["mailadres"] || !$_POST["reactie"]) {
?>
<form action="mailform3.php" method="post">
<?php
if ($_POST["verzendbutton"] && !$_POST["naam"]) {
echo ("<font color=\"red\">Vul hier uw naam in</font><br />");
}
?>
Naam: <input type="text" name="naam" value="<?php echo $_POST["naam"] ?>" /><br />
<?php
if ($_POST["verzendbutton"] && !$_POST["mailadres"]) {
echo ("<font color=\"red\">Vul hier uw e-mailadres in</font><br />");
}
?>
E-mail: <input type="text" name="mailadres" value="<?php echo $_POST["mailadres"] ?>" /><br />
<?php
if ($_POST["verzendbutton"] && !$_POST["reactie"]) {
echo ("<font color=\"red\">vul hier uw reactie in</font><br />");
}
?>
Uw reactie: <textarea cols="30" rows="4" name="reactie"><?php echo $_POST["reactie"] ?></textarea>
<input type="submit" name="verzendbutton" value="verzenden" />
</form>
<?php
} else {
$boodschap = "Naam: ".$_POST["naam"]."\nCommentaar: ".$_POST["reactie"];
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"]."");
echo ("Bedankt ".$_POST["naam"].", fijn dat u wilde meewerken");
}
?>
</body>
</html>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
$to = "contact@mail.com" ;
if ( $_POST [ "verzendbutton" ] != "verzenden" || ! $_POST [ "naam" ] || ! $_POST [ "mailadres" ] || ! $_POST [ "reactie" ] ) {
?>
<form action="mailform3.php" method="post">
<?php
if ( $_POST [ "verzendbutton" ] && ! $_POST [ "naam" ] ) {
echo ( "<font color=\" red\" >Vul hier uw naam in</font><br />" ) ; }
?>
Naam: <input type="text" name="naam" value="
<?php echo $_POST [ "naam" ] ?> " /><br />
<?php
if ( $_POST [ "verzendbutton" ] && ! $_POST [ "mailadres" ] ) {
echo ( "<font color=\" red\" >Vul hier uw e-mailadres in</font><br />" ) ; }
?>
E-mail: <input type="text" name="mailadres" value="
<?php echo $_POST [ "mailadres" ] ?> " /><br />
<?php
if ( $_POST [ "verzendbutton" ] && ! $_POST [ "reactie" ] ) {
echo ( "<font color=\" red\" >vul hier uw reactie in</font><br />" ) ; }
?>
Uw reactie: <textarea cols="30" rows="4" name="reactie">
<?php echo $_POST [ "reactie" ] ?> </textarea>
<input type="submit" name="verzendbutton" value="verzenden" />
</form>
<?php
} else {
$boodschap = "Naam: " . $_POST [ "naam" ] . "\n Commentaar: " . $_POST [ "reactie" ] ;
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] . "" ) ; echo ( "Bedankt " . $_POST [ "naam" ] . ", fijn dat u wilde meewerken" ) ; }
?>
</body>
</html>
joannis11 - 29/08/2010 15:09 (laatste wijziging 29/08/2010 15:13)
Nieuw lid
Als eerste moet je dat
if ($_POST["verzendbutton"] != "verzenden" || !$_POST["naam"] || !$_POST["mailadres"] || !$_POST["reactie"]) {
if ( $_POST [ "verzendbutton" ] != "verzenden" || ! $_POST [ "naam" ] || ! $_POST [ "mailadres" ] || ! $_POST [ "reactie" ] ) {
echt vervangen door
if (!isset($_POST["verzendbutton"]) || !$_POST["naam"] || !$_POST["mailadres"] || !$_POST["reactie"]) {
if ( ! isset ( $_POST [ "verzendbutton" ] ) || ! $_POST [ "naam" ] || ! $_POST [ "mailadres" ] || ! $_POST [ "reactie" ] ) {
Probeer eens:
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
$to = "contact@mail.com";
if (!isset($_POST["verzendbutton"]) || empty($_POST["naam"]) || empty($_POST["mailadres"]) || empty($_POST["reactie"])) {
?>
<form action="mailform3.php" method="post">
<?php
if (isset($_POST["verzendbutton"]) && empty($_POST["naam"])) {
echo ("<font color=\"red\">Vul hier uw naam in</font><br />");
}
?>
Naam: <input type="text" name="naam" value="<?php echo $_POST["naam"] ?>" /><br />
<?php
if (isset($_POST["verzendbutton"]) && empty($_POST["mailadres"])) {
echo ("<font color=\"red\">Vul hier uw e-mailadres in</font><br />");
}
?>
E-mail: <input type="text" name="mailadres" value="<?php echo $_POST["mailadres"] ?>" /><br />
<?php
if (isset($_POST["verzendbutton"]) && empty($_POST["reactie"])) {
echo ("<font color=\"red\">vul hier uw reactie in</font><br />");
}
?>
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" name="verzendbutton" value="verzenden" />
</form>
<?php
} else {
$boodschap = "Naam: ".$_POST["naam"]."\nCommentaar: ".$_POST["reactie"];
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"]."");
echo ("Bedankt ".$_POST["naam"].", fijn dat u wilde meewerken");
}
?>
</body>
</html>
<html>
<head>
<title>mailformulier</title>
</head>
<body>
<?php
$to = "contact@mail.com" ;
if ( ! isset ( $_POST [ "verzendbutton" ] ) || empty ( $_POST [ "naam" ] ) || empty ( $_POST [ "mailadres" ] ) || empty ( $_POST [ "reactie" ] ) ) { ?>
<form action="mailform3.php" method="post">
<?php
if ( isset ( $_POST [ "verzendbutton" ] ) && empty ( $_POST [ "naam" ] ) ) { echo ( "<font color=\" red\" >Vul hier uw naam in</font><br />" ) ; }
?>
Naam: <input type="text" name="naam" value="
<?php echo $_POST [ "naam" ] ?> " /><br />
<?php
if ( isset ( $_POST [ "verzendbutton" ] ) && empty ( $_POST [ "mailadres" ] ) ) { echo ( "<font color=\" red\" >Vul hier uw e-mailadres in</font><br />" ) ; }
?>
E-mail: <input type="text" name="mailadres" value="
<?php echo $_POST [ "mailadres" ] ?> " /><br />
<?php
if ( isset ( $_POST [ "verzendbutton" ] ) && empty ( $_POST [ "reactie" ] ) ) { echo ( "<font color=\" red\" >vul hier uw reactie in</font><br />" ) ; }
?>
Uw reactie: <textarea cols="30" rows="4" name="reactie"></textarea>
<input type="submit" name="verzendbutton" value="verzenden" />
</form>
<?php
} else {
$boodschap = "Naam: " . $_POST [ "naam" ] . "\n Commentaar: " . $_POST [ "reactie" ] ;
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] . "" ) ; echo ( "Bedankt " . $_POST [ "naam" ] . ", fijn dat u wilde meewerken" ) ; }
?>
</body>
</html>
Het zal vast wel zo zijn dat jouw manier ook werkt met wat aanpassingen, maar ik speel liever safe
Goede beveiliging, goed systeem, minimale bugs
Minimale ergernis...
Maar, 2-3 maanden geleden deed ik ook alleen maar wat er in mijn boek stond
chth - 29/08/2010 18:06
Lid
bedankt voor de aanpassingen, maar als ik dit uit probeer, verschijnt de rode tekst maar als ik weer een 2-tal keer op verzenden klik zonder iets in te vullen.
joannis11 - 29/08/2010 19:49
Nieuw lid
Bij mij niet hoor...
En heb hem getest op localhost, en mijn echt server...
chth - 29/08/2010 20:45 (laatste wijziging 29/08/2010 21:14)
Lid
@joannis11
jha ..
dat is nu het ergste probleem niet.
kheb hier nog een script dat ook niet helemaal werkt.
het werkt grotendeels normaal, behalve dan dat het geen mail verzend
ik gebruik deze code
<html>
<head>
<title>Mailformulier</title>
</head>
<body>
<?php
function valid_mail ($str) {
return (ereg ('(^[0-9a-zA-Z_\.-]{1,}@([0-9a-zA-Z_\-]{1,}\.)+[0-9a-zA-Z_\-]{2,}$)', $str));
}
function valid_name ($str) {
return (ereg ('^[A-Za-z. -]+$', $str));
}
$_POST["naam"] = ucfirst($_POST["naam"]);
if ($_POST["verzendbutton"] != "verzenden" || !valid_name($_POST["naam"]) || !valid_mail($_POST["mailadres"]) || !$_POST["reactie"]) { // dus als het formulier leeg is of een van de waarden niet is ingevuld
?>
<form action="mailform4.php" method="post">
<?php
if ($_POST["verzendbutton"] && !valid_name($_POST["naam"])) {
echo "<font color=\"red\">Vul hier uw naam correct in!</font><br>";
}
?>
Naam: <input type="text" name="naam" value="<?php echo $_POST["naam"] ?>"><br>
<?php
if ($_POST["verzendbutton"] && !valid_mail($_POST["mailadres"])) {
echo "<font color=\"red\">Vul hier uw mailadres correct in!</font><br>";
}
?>
E-mail: <input type="text" name="mailadres" value="<?php echo $_POST["mailadres"] ?>"><br>
<?php
if ($_POST["verzendbutton"] && !$_POST["reactie"]) {
echo "<font color=\"red\">Vul hier uw reactie in!</font><br>";
}
?>
Uw reactie: <textarea cols="30" rows="4" name="reactie"><?php echo $_POST["reactie"] ?></textarea>
<input type="submit" value="verzenden" name="verzendbutton">
</form>
<?php
$to = "contact@mail.com";
} else { // in alle andere gevallen (dus formulier verzonden)
$boodschap = "Naam: ".$_POST["naam"]."\nCommentaar: ".$_POST["reactie"];
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"]."");
echo "Bedankt ".$_POST["naam"].", fijn dat wilde meewerken!";
}
?>
</body>
</html>
<html>
<head>
<title>Mailformulier</title>
</head>
<body>
<?php
function valid_mail ( $str ) {
return ( ereg ( '(^[0-9a-zA-Z_\.-]{1,}@([0-9a-zA-Z_\-]{1,}\.)+[0-9a-zA-Z_\-]{2,}$)' , $str ) ) ; }
function valid_name ( $str ) {
return ( ereg ( '^[A-Za-z. -]+$' , $str ) ) ; }
$_POST [ "naam" ] = ucfirst ( $_POST [ "naam" ] ) ;
if ( $_POST [ "verzendbutton" ] != "verzenden" || ! valid_name( $_POST [ "naam" ] ) || ! valid_mail( $_POST [ "mailadres" ] ) || ! $_POST [ "reactie" ] ) { // dus als het formulier leeg is of een van de waarden niet is ingevuld
?>
<form action="mailform4.php" method="post">
<?php
if ( $_POST [ "verzendbutton" ] && ! valid_name( $_POST [ "naam" ] ) ) {
echo "<font color=\" red\" >Vul hier uw naam correct in!</font><br>" ; }
?>
Naam: <input type="text" name="naam" value="
<?php echo $_POST [ "naam" ] ?> "><br>
<?php
if ( $_POST [ "verzendbutton" ] && ! valid_mail( $_POST [ "mailadres" ] ) ) {
echo "<font color=\" red\" >Vul hier uw mailadres correct in!</font><br>" ; }
?>
E-mail: <input type="text" name="mailadres" value="
<?php echo $_POST [ "mailadres" ] ?> "><br>
<?php
if ( $_POST [ "verzendbutton" ] && ! $_POST [ "reactie" ] ) {
echo "<font color=\" red\" >Vul hier uw reactie in!</font><br>" ; }
?>
Uw reactie: <textarea cols="30" rows="4" name="reactie">
<?php echo $_POST [ "reactie" ] ?> </textarea>
<input type="submit" value="verzenden" name="verzendbutton">
</form>
<?php
$to = "contact@mail.com" ;
} else { // in alle andere gevallen (dus formulier verzonden)
$boodschap = "Naam: " . $_POST [ "naam" ] . "\n Commentaar: " . $_POST [ "reactie" ] ;
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] . "" ) ; echo "Bedankt " . $_POST [ "naam" ] . ", fijn dat wilde meewerken!" ; }
?>
</body>
</html>
joannis11 - 29/08/2010 21:29 (laatste wijziging 29/08/2010 21:32)
Nieuw lid
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"]."");
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] . "" ) ;
Moet zijn:
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"],"");
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] , "" ) ;
En om zeker te zijn dat het werkt:
$sender = "From: " . $_POST['mailadres'];
mail($to, "contact", $boodschap, $sender,"");
$sender = "From: " . $_POST [ 'mailadres' ] ;
mail ( $to , "contact" , $boodschap , $sender , "" ) ;
Conclusie:
Jij gebruikte een punt (.) inplaatsvan een komma (,).
Edit:
Nog een verrandering:
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"]."");
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] . "" ) ;
Moet zijn:
mail($to, "contact", $boodschap, "From: ".$_POST["mailadres"],"");
mail ( $to , "contact" , $boodschap , "From: " . $_POST [ "mailadres" ] , "" ) ;
En om zeker te zijn dat het werkt:
$sender = "From: " . $_POST['mailadres'];
mail($to, "contact", $boodschap, $sender);
$sender = "From: " . $_POST [ 'mailadres' ] ;
mail ( $to , "contact" , $boodschap , $sender ) ;
PcFreak - 29/08/2010 22:19
Nieuw lid
Kan je geen mail script van sitemasters halen ?
en ombouwen leer je ook wat bij.
avdg - 30/08/2010 13:55 (laatste wijziging 30/08/2010 13:57)
PHP gevorderde
@PcFreak: hij heeft al code, waarom zou hij dan code gebruiken die hij compleet niet vertrouwd? (met de kans dat hij waarschijnlijk tegen dezelfde problemen gaat botsen omdat het probleem misschien niet aan het script ligt)
PcFreak - 30/08/2010 15:59
Nieuw lid
Het zit zo hij blijft maar post met hetzelfde probleem terwijl hij al een andere forumbericht gepost had en het was al opgelost ;)
chth - 30/08/2010 20:00
Lid
dat vorige was een script dat niet controleerde of alles correct ingevuld is.
en..
waarvoor dient dit forum anders?
gnotrgnotr - 01/09/2010 18:52
Nieuw lid
PcFreak schreef:
[..quote..]
Dit script is niet veilig zo kunnen ze lege berichten versturen je doet het beter zo :
[..code..]
Kunnen foutjes inzitten heb het niet getest ;)
als je wat beter nadenk op regel 25 is dat een stuk beter php code kan toch niet in een php code
Gesponsorde links
Dit onderwerp is gesloten .