PHP - Contactformulier

Status
Niet open voor verdere reacties.

toetsenbord

Gebruiker
Lid geworden
13 dec 2010
Berichten
158
Hallo,

Ik ben een beginnend webdesigner en zou graag een contactformulier op mijn website willen hebben. Mijn website staat nog niet online, wanneer dan wel weet ik niet, maar om toch php te kunnen testen heb ik EasyPHP gedownload en geïnstalleerd.

Omdat ik helemaal niets ken van PHP zit ik al dagenlang op internet te zoeken naar een goed-werkend contactformulier. Hier krioelt het web van denk ik, (ik zit al dagenlang op google rond te 'zwerven') en ik weet wel dat je enkele dingen moet aanpassen, zoals naar waar de e-mail moet worden verzonden, maar wanneer ik dat dan probeer met EasyPHP geeft die 'tonnen' fouten.. Ligt wss aan mij.

Doe ik het fout?
Ik maak een php-formulier aan (contact.php) en daar link ik naar (de overige pagina's zijn html)
Bij sommige is het ook zo dat je in html een formulier zet en dan de knop Verzenden naar een php document wordt geleid.

Heeft iemand mss, of weet iemand een link naar een goed werkend contactformulier (liefst met naam, e-mailadres, onderwerp en bericht) en liefst, dat zou echt handig zijn, met een beetje uitleg ?

Dank bij voorbaat
 
Hallo,

Echt bedankt, 5blabla5, ik snap het al veel beter nu !
Toch is er nog een probleempje ... Wanneer ik op send heb gedrukt, krijg ik de volgende foutmelding (zie bijlage) en zegt hij dat alle velden ingevuld moeten worden, hoewel dat dit zo is ... :confused:

Mijn code is dezelfde als die van op de website, nl
PHP:
<?php

// your email address
$youremail = "********@gmail.com";

// field validation
if ($email=="" || $comments=="" || $name=="")

{
print ("All fields are required! Please go back and try again.");
}

else {

// email validation
if(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $email)) {
print ("Your email address does not appear to be valid. Please go back and try again.");
exit;
}


// send email
$headers = "From: \"$name\" <$email>\n";
$subject = "Feedback Form"; 
$message = "$comments";

mail ("$youremail", "$subject", $message, $headers);
print ("Thank you $name, your email has been sent.");

} 
?>
screenshot.png
 
Aah sorry, ik heb de code nog even extra goed bekeken, maar de code zelf vind ik een puinhoop:
- Ipv de superglobal $_POST werd er gebruik gemaakt van een andere constructie (die soms niet wordt ondersteund)
- If en else structuren waren behoorlijk door elkaar gehaald, en soms weggelaten (vervangen door exit())
- Geen tabjes om in te springen

Heb eventjes de code voor je opgeruimd, dus probeer de volgende code maar eens:
PHP:
<?php
// your email address
$youremail = "********@gmail.com";
 
// field validation
if (empty($_POST['email']) || empty($_POST['comments'] || empty($_POST['name']) {
	echo "All fields are required! Please go back and try again.";
} else {
	// email validation
	if(!eregi('^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.[a-z]{2,3})?)$', $_POST['email'])) {
		echo "Your email address does not appear to be valid. Please go back and try again.";
	} else {
 		// send email
		$headers = "From: \"$_POST['name']\" <$_POST['email']>\n";
		$subject = "Feedback Form"; 
		$message = "$_POST['comments']";
 
		mail ("$youremail", "$subject", $message, $headers);
		echo "Thank you " . $_POST['name'] . ", your email has been sent.";
 
	}
}
?>
 
Hé, bedankt !
Als ik toch ng even iets mag vragen, hij geeft toch nog een kleine fout weer (iets van een haakje ofziets ?)

Screenshot in bijlage.

MVG,

screenshot.png
 
Je mag de mijne gebruiken als je wilt, hoewel die misschien niet super geschikt is als leermiddel want hij is eigenlijk bedoelt om zonder PHP kennis een contact formulier te kunnen maken.

http://www.ruigekonijnen.nl/temp/contactform.zip

Bedankt, maar hier snap ik niet echt veel van :o
Ik heb iets geprobeerd (het was wss allemaal fout, hoor :confused:) kwam ik op heel veel foutmeldingen uit, maar dat ligt aan mij. :o

Even een vraagje: is het contactformulier dat 5Blabla5 had gegeven niet goed, met een kleine aanpassing (zie screenshot vorig bericht) :o
 
regel 6 miste nog een paar )

dit is het:
PHP:
if (empty($_POST['email']) || empty($_POST['comments'] || empty($_POST['name']) {

moet zijn :
PHP:
if (empty($_POST['email']) || empty($_POST['comments']) || empty($_POST['name'])) {

Staat ook in je error regel beschreven!
 
Bedankt Phobia,

maar helaas komt deze nu weer met een nieuwe error:

Er is ergens onverwachte spatie of iets in die aard ...

Dit is de foutmelding, iemand die het ziet ? :confused:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\Program Files (x86)\EasyPHP-5.3.4.0\www\**************\formmail.php on line 14
 
PHP:
        $headers = "From: ".$_POST['name']." <".$_POST['email'].">\n";
        $subject = "Feedback Form"; 
        $message = $_POST['comments'];
 
        mail ($youremail, $subject, $message, $headers);

probeer dit eens, al je variabelen zaten in quots verpakt.
 
Niet om alles te verpesten hoor, maar heb je voor mails verzenden via php geen mailserver nodig?

Anders werkt het allemaal nog niet.
 
De meeste webhost hebben dat wel.
En de optredende errors hebben daar niks mee van doen.

Maar het klopt wel, je moet gebruik kunnen maken van een mailserver wil je kunnen mailen.
 
PHP:
        $headers = "From: ".$_POST['name']." <".$_POST['email'].">\n";
        $subject = "Feedback Form"; 
        $message = $_POST['comments'];
 
        mail ($youremail, $subject, $message, $headers);

probeer dit eens, al je variabelen zaten in quots verpakt.

Werkt ook niet, krijg veel foutmeldingen maar ligt wss aan die mailserver...
 
wat voor error krijg je dan? en welke regel (post het ff)

easyphp ben ik niet mee bekent, maar je zou WAMP of usbwebserver kunnen gebruiken. Daar kun je wel een mailserver op installeren.

Maar heb je niet een webhost waar je op kunt testen? Je kunt het script klaar maken toch dat hij daadwerkelijk de mail moet versturen.
 
x10webhosting :)
Gratis, en geweldig om mee te testen (vooral omdat alles mag)
 
@Phobia, heb nog geen webhost en @5Blabla5, bedankt voor de tip :).

De fouten heb ik in bijlage gezet, omdat het anders mss een beetje lang was voor in een bericht te zetten.

MVG

PS. Ik krijg de foutmelding(en) wel, maar daaronder staat toch "Thank you test, your email has been sent.", hoewel ik geen mail krijg...

Bekijk bijlage fout.pdf
 
Je gebruikt de functie eregi(), die sinds php versie 5.3.0 deprecated (geschrapt) is... Dit betekent dat de functie meestal nog wel werkt, maar dat je niet wordt aanbevolen deze functie te gebruiken, omdat bij nieuwere versies van php mogelijk de functie niet meer in het pakket zit...

Gebruik ipv de functie eregi() de functie strpos(): php.net/strpos

Edit:
Ik zie dat je gebruik maakt van reguliere expressies, en strpos werkt daat geloof ik niet mee...
Gebruik de functie preg_match(): php.net/preg_match
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan