|
Categorieën >
PHP
mailscript werkt niet
|
|
|
offline
|
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']."\nCommentaar: ".$_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
|
|
|
joannis11 – 29/08/2010 11:18 (Laatst gewijzigd op 29/08/2010 11:55)
|
|
offline
|
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'] . "\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>
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 (Laatst gewijzigd op 29/08/2010 11:43)
|
|
offline
|
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'])
|
joannis11 – 29/08/2010 11:40 (Laatst gewijzigd op 29/08/2010 11:45)
|
|
offline
|
Nieuw lid
|
Oke...
Dan ga ik door met zoeken.
Heb je mijn versie ook al geprobeerd?
Klopt het dat hij zegt dat de ";" daar niet hoort te staan?
Die fout krijg ik namelijk als ik jouw script run.
|
chth – 29/08/2010 11:46 (Laatst gewijzigd op 29/08/2010 11:47)
|
|
offline
|
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"]."\nCommentaar: ".$_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 (Laatst gewijzigd op 29/08/2010 11:47)
|
|
offline
|
PHP interesse
|
mail('ontvanger@email.com', 'onderwerp', 'bericht'.$afzender);
mail('ontvanger@email.com', 'onderwerp', 'bericht'.$afzender);
|
joannis11 – 29/08/2010 11:48 (Laatst gewijzigd op 29/08/2010 11:54)
|
|
offline
|
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 (Laatst gewijzigd op 29/08/2010 12:00)
|
|
offline
|
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"]."\nCommentaar: ".$_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 (Laatst gewijzigd op 29/08/2010 12:00)
|
|
offline
|
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
|
chth – 29/08/2010 12:35
|
|
offline
|
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 (Laatst gewijzigd op 29/08/2010 12:40)
|
|
offline
|
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']."\nCommentaar: ".$_POST['reactie']; mail("mijn emailadres", "contact", $boodschap, $_POST['mailadres']; echo "Bedankt ".$_POST['naam'].", fijn dat je wilde meewerken"; } ?> </body> </html>
|
Dit onderwerp is gesloten.
|
|
|