PHP - Contactformulier

Status
Niet open voor verdere reacties.
Ik denk toch dat tegenwoordig scripts een beetje opgeblazen worden. Controleren of je template al aanwezig is? :O Natuurlijk doet zn ding als die van Fraps of Frats hele mooie en ingenieuze dingen, maar toch heb ik het simpeler gehouden. Mischien heb je hier wat aan ;)

PHP:
<?php
$naam = $_POST["name"];
$onderwerp = $_POST["subject"];
$message = $_POST["message"];

if (!empty($naam) && !empty($onderwerp) && !empty($message)) {
$email = "****@gmail.com";
$datum = $_POST["date"];
$sendmail_from = "From: webhost@mail.com";

if (isset($_POST["mail"])) { $van = $_POST["email"]; }
else { $van = "Niet ingevuld"; }

$bericht = "
Op $date, emailde $naam (E-mail: $van), het volgende bericht<br><br>
$message";
mail($email,$onderwerp,$bericht,$sendmail_from);
}
else {
	header("location: contact.html");
}
?>

en deze controleert ook nog eens of de gebruikers email is ingevuld, wat voor mijn persoonlijke doeleinden dus niet persee nodig was (het invullen). Bovendien is de datum toegevoegd, via de html input date.

Bovendien. Om php wat beter te begrijpen en dergelijken het zelf doen enzovoort enzovoort is hier een makkelijekr tutorial: http://www.answer-me.nl/pages/tutorials/formulierphp.php
 
Laatst bewerkt:
vervang dit eens
PHP:
!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $_POST['email'])

met dit
PHP:
!preg_match('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $_POST['email'])

ik weet niet zeker of dit de manier is om preg_match te gebruiken, maar wat ik begreep van php.net geeft Preg_match ook een true of false statement terug.

en het 2de deel van de error is dat de php mail functie geen mailserver kan vinden.
Dus ergo, als je het script online zet op een webserver die mail ondersteunt dan zal hij naar alle waarschijnlijkheid gaan werken.
 
Laatst bewerkt:
Heb eens geprobeerd zelf een scriptje te maken (trekt wss op niet veel :D), met de site die Jorryt mij had gegeven (bedankt hiervoor :)).

Nl.
PHP:
<?php
$naam = $_POST["naam"];
$email = $_POST["email"];
$onderwerp = $_POST ["onderwerp"];
$bericht = $_POST["opmerking"];

$ontvanger = "********@gmail.com";
$onderwerp = $onderwerp;

$bericht = $bericht;

mail ($ontvanger, $onderwerp, $bericht);
echo "Uw e-mail is verzonden.";
?>

De HTML code:
HTML:
<form method="post" action="actie.php">

Naam:<input type="text" name="naam"><br>
E-mail:<input type="text" name="email"><br>
Onderwerp:<input type="text" name="onderwerp"><br>
Bericht:<br><textarea name="opmerking">
</textarea><br>
<input type="submit" value="verzenden"><br>
</form>

En de foutmelding is:
( ! ) Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\******************\actie.php on line 12
Call Stack
# Time Memory Function Location
1 0.0017 675000 {main}( ) ..\actie.php:0
2 0.0017 675840 mail ( ) ..\actie.php:12

Ligt dit aan het programma, gebruik trouwens nu ipv EasyPHP, WAMP. Moet ik hier nog apart een mailserver op installeren ?

MVG,

PS. wat ik me ook afvraag: Kan iedereen eender welk e-mailadres invullen ? Moeten de zenders hun wachtwoord niet ingeven om te kunnen mailen (doordat dit door de mailserver gebeurd ?) ? Of staat dit e-mailadres er gewoon bij zodat de ontvanger terug zou kunnen antwoorden ?
 
Laatst bewerkt:
Dit ligt idd aan de mail server. Persoonlijk krijg ik hetzelfde probleem.
Het is altijd beter om je eigen script te maken. Daar leer je ook het meest van:thumb:

Bedenk wel dat met jouw script je de naam van de desbetreffende persoon niet te weten krijgt, je krijgt echt alleen maar het bericht, met het onderwerp. Je kan dus nog even een variable $berichtuiteindelijk of wat je ook maar leuk vind maken met daarin een verhaaltje, waarin de de variable $bericht en $naam opneemt. Dan kan je daar ook gelijk in zetten dat het is gepost van jouw site, anders denk je ook misschien van wie komt dit mailtje toch.

Succes;)

EDIT: natuurlijk krijg je ook het email adres van de desbetreffend persoon niet ;)
 
Oké bedankt,

Kan ik ook

PHP:
Mail ($ontvanger, $onderwerp, $bericht);

Vervangen door

PHP:
Mail ($naam, $email, $onderwerp, $bericht);

(De ontvanger is dan wel weg )

En weet je toevallig of ik iets bij kan installeren in WAMP voor dit werkend te krijgen? Ik moest bij de installatie een e-mailadres ingeven voor als er een mailserver was, dus zou dit toch moeten kunnen of niet ? :)
 
op via deze link kun je de werking en gebruik van de mail functie lezen.

Bookmark deze site, het is de PHP bijbel!
 
Klopt,

Je maakt hiermee wel een grote fout, want in elke PHP functie is er precies afgesproken hoeveel parameters er nodig zijn er waar ze moeten staan. Zodra je dat zou doen, wat jij zei. Zal het onderwerp van het bericht, zijn email zijn en het bericht, zijn onderwerp. Bovendien weet de mailserver niet meer wat die aanmoet, aangezien de 4e optionele parameter, de verzender moet zijn en dat wordt het getypte bericht.

Je kan dus nooit de volgorde tussen , in veranderen ;)

Als je niet helemaal weet hoe je email er dan in moet verwerken horen we het wel..
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan