Contactformulier

Status
Niet open voor verdere reacties.

Simolokid

Gebruiker
Lid geworden
25 apr 2009
Berichten
92
PHP:
<?php
// Als er op submit is gedrukt
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
	// Posts checken
	if(!empty($_POST))
	{
		foreach($_POST as $key)
		{
			if(empty($key))
			{
				$errors[] = 'U bent vergeten $key veld in te voeren.';
			}
		}		
	}
	
	if(!empty($errors))
	{
		foreach($errors as $error)
		{
			echo $error.'<br />';
		}
	}
	// Anders
	else
	{
		// Mail elementen aanmaken
		$naar = "simoscript@hotmail.com";
		$van = "mattijsje9@hotmail.com";
		$onderwerp = "Bevestiging van uw vraag - Lekkerelollies.nl";
		$bericht = "$_POST['achternaam'] , $_POST['voornaam'] $_POST['tussenvoegsel'].
		Productnummer:
		$_POST['productnummer']
		Klantnummer:
		$_POST['klantnummer']
		
		Vraag van de klant: 
		
		$_POST['vraag']
		
		
		";
		
		// Mail
		$msg = mail($naar, $onderwerp, $bericht);
		
		// Als mail is gelukt
		if($msg)
		{
			echo 'De email is succesvol verzonden.';
		}
		// Anders
		else
		{
			echo 'Er is een fout in de email.';
		}
	}
}
// Anders
else
{
	// Start het formulier
	echo '<form action="" method="post">';
		// Voornaam
		echo '<label>Voornaam</label>';
		echo '<input class="text" name="voornaam" type="text" />';
		
		// Achternaam
		echo '<label>Achternaam</label>';
		echo '<input class="text" name="achternaam" type="text" />';
		
		// Tussenvoegsel
		echo '<label>Tussenvoegsel</label>';
		echo '<input class="text" name="tussenvoegsel" type="text" />';
		
		// Productnr
		echo '<label>Productnummer</label>';
		echo '<input class="text" name="productnummer" />';
		
		// Klnt nummer
		echo '<label>Klantnummer</label>';
		echo '<input class="text" name="klantnummer" type="text" />';
		
		// Bericht
		echo '<label>Uw vraag</label>';
		echo '<textarea rows="10" cols="30" class="text" name="vraag">Stel hier uw vraag.</textarea>';
		
		// Knoppen
		echo '<input value="Leegmaken" class="btn1" type="reset" />';
		echo '<input class="btn1" type="submit" name="submit" value="Verzend"/>';
	echo '</form>';
}
?>

Dit is de code die ik inmiddels heb, nadat ik de volgende code uit wanhoop maar gedelete heb. Ben er van overtuigt dat er weinig tot geen verschil in zit. Geen van beide werken nog, kan iemand mij vertellen wat er fout aan is in beide gevallen? :)

Alvast hartelijk bedankt,

Simolokid.

(andere script van mezelf):
PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
	if(!empty($_POST)){
		if(1 == 1){
			foreach($_POST as $key){
				if(empty($key)){
					header("location: contact.php");
					echo 'U bent vergeten $key veld in te voeren.';
				}
			}
		}
		elseif($_POST['submit']){
			$vraag = $_POST['vraag'];
			$naam = $_POST['achternaam'];
			$to = "mattijsje9@hotmail.com";
			$tussenvoegsel = $_POST['tussenvoegsel'];
			$subject = "Lekkerelollies.nl - Contact";
			$productnummer = $_POST['productnummer'];
			$klantnummer = $_POST['klantnummer'];
			
			if(!empty($_POST['tussenvoegsel'])){
				$message = "$tussenvoegsel $naam had de volgende vraag:\n
				
				$vraag\n
				
				Ingevulde productnummer: $productnummer\n
				Ingevulde klantnummer: $klantnummer\n
				";
				$mailing = mail($to, $subject, $message);
print_r($_POST);
				if($mailing){

					echo 'Uw mail is succesvol aangekomen';
				}
				else{
					echo 'Het verzenden van uw mail is mislukt, probeert u het later nog eens.';
				}
			}
			elseif(empty($_POST['tussenvoegsel'])){
				$message = "$naam had te volgende vraag:\n
				
				$vraag\n
				
				Ingevulde productnummer: $productnummer\n
				Ingevulde klantnummer: $klantnummer\n";
				
				$mailing = mail($to, $subject, $message);
print_r($_POST);
				if($mailing){
					echo 'Uw mail is succesvol aangekomen';
				}
				else{
					echo 'Het verzenden van uw mail is mislukt, probeert u het later nog eens.';
				}
			}
		}
	}
}

else{

?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Contact formulier</title>
<link href="stylesheet_lekkerelollies.css" rel="stylesheet" type="text/css" />
</head>

<body>

<label class="regi"> Contactformulier </label> <br />
<div id="formulier">
<form action="<? echo($_SERVER["PHP_SELF"]);?>" method="post">
<table>
<tr><td class="text_label">Voornaam: </td><td><input class="text" name="voornaam" type="text" value="" /></td><tr/>
<tr><td class="text_label">Achternaam: </td><td><input class="text" name="achternaam" type="text" value="" /></td><tr/>
<tr><td class="text_label">Tussenvoegsel: </td><td><input class="text" name="tussenvoegsel" type="text" value="" /></td><tr/>
<tr><td class="text_label">(Productnummer): </td><td><input class="text" name="productnummer" value="" type="text" /></td><tr/>
<tr><td class="text_label">(Klantnummer): </td><td><input class="text" name="klantnummer" value="" type="text" /></td><tr/>
<tr><td class="text_label">Uw vraag: </td><td><textarea rows="10" cols="30" class="text" id="vraag" name="vraag">Stel hier uw vraag.</textarea></td><tr/>
<tr><td>&nbsp;</td><td align="center"><input class="btn1" type="reset" /> <input class="btn1" type="submit" name="submit" value="Verzend !"/></td></tr>
</table>
</form>
</div>
<div id="vraagteken">
<a href="?p=faq"><img src="images/vraagteken.png" /></a>
</div>
</body>
</html>
<?php
}
?>
 
Welke fout krijg je, want ik ga niet het hele script nabouwen?
 
Welke fout krijg je, want ik ga niet het hele script nabouwen?

bij het 2e script krijg ik geen 1 foutmelding. Het echo'd compleet niks en wordt geredirect naar de homepage op een of andere manier. Geen mails what so ever.

Bij het 1e script krijg ik een syntax error, unexpected T_STRING. Heb deze error vaker gehad maar weet niet meer precies hoe deze op te lossen.
 
Hallo,

Het probleem ligt bij
Code:
if(!empty($_POST)){
        foreach($_POST as $key){
            if(empty($key)){
                header("location: contact.php");
                echo 'U bent vergeten $key veld in te voeren.';
            }
        }
    }
, even een uitleg.
je zegt,
Code:
if(!empty($_POST)){
dit betekent dat als post niet leeg is je
Code:
                header("location: contact.php");
                echo 'U bent vergeten $key veld in te voeren.';
wilt uitvoeren.
Als alles netjes ingevuld is valt er dus niets te openen.
Haal dit stuk weg en controleer alle invoeren appart.
zoiets als
Code:
elseif($pstd == 'y'){
            $vraag = $_POST['vraag'];
            $naam = $_POST['achternaam'];
            $tussenvoegsel = $_POST['tussenvoegsel'];
            $subject = "Lekkerelollies.nl - Contact";
            $productnummer = $_POST['productnummer'];
            $klantnummer = $_POST['klantnummer'];
if(empty($vraag)){
echo "U hebt geen vraag ingevuld";
}
Enzovoort

Veel succes!
 
Laatst bewerkt:
Hallo,

Het probleem ligt bij
Code:
if(!empty($_POST)){
        foreach($_POST as $key){
            if(empty($key)){
                header("location: contact.php");
                echo 'U bent vergeten $key veld in te voeren.';
            }
        }
    }
, even een uitleg.
je zegt,
Code:
if(!empty($_POST)){
dit betekent dat als post niet leeg is je
Code:
                header("location: contact.php");
                echo 'U bent vergeten $key veld in te voeren.';
wilt uitvoeren.
Als alles netjes ingevuld is valt er dus niets te openen.
Haal dit stuk weg en controleer alle invoeren appart.
zoiets als
Code:
elseif($pstd == 'y'){
            $vraag = $_POST['vraag'];
            $naam = $_POST['achternaam'];
            $tussenvoegsel = $_POST['tussenvoegsel'];
            $subject = "Lekkerelollies.nl - Contact";
            $productnummer = $_POST['productnummer'];
            $klantnummer = $_POST['klantnummer'];
if(empty($vraag)){
echo "U hebt geen vraag ingevuld";
}
Enzovoort

Veel succes!

Volgens mij snap ik dan niet helemaal het nut van diverse if-jes.

Ik heb namelijk in de eerste if dingen, ergens ook if 1=1 gezet, dit komt doordat ik daaronder de elseif wilde gebruiken om de andere operatie uit te voeren, wanneer alles dus is ingevuld er dat uitgevoerd moet worden.

Als ik dat uitroepteken dus weghaal bovenin is me code dus eigenlijk gefixed?
 
Nee, dan maak je 2 dezelfde vergelijkingen.
Probeer het eens hoe ik het zeg?
Als het niet lukt ge je er neit op achteruit.
 
Nee, dan maak je 2 dezelfde vergelijkingen.
Probeer het eens hoe ik het zeg?
Als het niet lukt ge je er neit op achteruit.

Oke, inmiddels heb ik proberen te verbeteren - resultaat is hieronder te vinden.

Doet het alleen nog steeds niet ! :) geen 1 output.

PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
    if(!empty($_POST)){
    	 $vraag = $_POST['vraag'];
         $naam = $_POST['achternaam'];
         $to = "mattijsje9@hotmail.com";
         $tussenvoegsel = $_POST['tussenvoegsel'];
         $subject = "Lekkerelollies.nl - Contact";
         $productnummer = $_POST['productnummer'];
         $klantnummer = $_POST['klantnummer'];
         $voornaam = $_POST['voornaam'];
         
    	if(empty($naam)){
    		echo 'U bent vergeten uw achternaam in te vullen';
    	}
    	elseif(empty($vraag)){
    		echo 'U bent vergeten uw vraag in te vullen';
    	}
    	elseif(empty($voornaam)){
    		echo 'U bent vergeten uw voornaam in te vullen';
    	}    
        elseif(empty($_POST['tussenvoegsel'])){
                $message = "$naam, $voornaam had de volgende vraag:\n
                
                $vraag\n
                
                Ingevulde productnummer: $productnummer\n
                Ingevulde klantnummer: $klantnummer\n
                ";
                $mailing = mail($to, $subject, $message);
                
                if($mailing){
                    echo 'Uw mail is succesvol aangekomen';
                }
                else{
                    echo 'Het verzenden van uw mail is mislukt, probeert u het later nog eens.';
                }
        }
        elseif(!empty($_POST['tussenvoegsel'])){
                $message = "$tussenvoegsel $naam, $voornaam had te volgende vraag:\n
                
                $vraag\n
                
                Ingevulde productnummer: $productnummer\n
                Ingevulde klantnummer: $klantnummer\n";
                
                $mailing = mail($to, $subject, $message);
                	if($mailing){
                    echo 'Uw mail is succesvol aangekomen';
                	}
               		else{
                   		echo 'Het verzenden van uw mail is mislukt, probeert u het later nog eens.';
                	}
        }
    }
}
    
 
else{
 
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Contact formulier</title>
<link href="stylesheet_lekkerelollies.css" rel="stylesheet" type="text/css" />
</head>
 
<body>
 
<label class="regi"> Contactformulier </label> <br />
<div id="formulier">
<form action="<? echo($_SERVER["PHP_SELF"]);?>" method="post">
<table>
<tr><td class="text_label">Voornaam: </td><td><input class="text" name="voornaam" type="text" value="" /></td><tr/>
<tr><td class="text_label">Achternaam: </td><td><input class="text" name="achternaam" type="text" value="" /></td><tr/>
<tr><td class="text_label">Tussenvoegsel: </td><td><input class="text" name="tussenvoegsel" type="text" value="" /></td><tr/>
<tr><td class="text_label">(Productnummer): </td><td><input class="text" name="productnummer" value="" type="text" /></td><tr/>
<tr><td class="text_label">(Klantnummer): </td><td><input class="text" name="klantnummer" value="" type="text" /></td><tr/>
<tr><td class="text_label">Uw vraag: </td><td><textarea rows="10" cols="30" class="text" id="vraag" name="vraag">Stel hier uw vraag.</textarea></td><tr/>
<tr><td>&nbsp;</td><td align="center"><input class="btn1" type="reset" /> <input class="btn1" type="submit" name="submit" value="Verzend !"/></td></tr>
</table>
</form>
</div>
<div id="vraagteken">
<a href="?p=faq"><img src="images/vraagteken.png" /></a>
</div>
</body>
</html>
<?php
}
?>
 
Ik heb het even uitgeprobeerd en ik krijg een 404 melding. Als ik
HTML:
<form action="<? echo($_SERVER["PHP_SELF"]);?>" method="post">
vervang door
HTML:
<form action="<?php echo($_SERVER["PHP_SELF"]);?>" method="post">
werkt het wel ("Uw mail is succesvol aangekomen").
 
Sorry, vergeten te zeggen, dat was ik inderdaad ook tegengekomen(bij meerdere scripts al).
Maar als ik het goed begrijp werkt het script?
En snap je m'n uitleg ook?

Btw: als een script met een if-statement niet werkt moet je altijd even nagaan welke van de verschillende opties het script uitkiest, dan weet je waar je verbeteringen moet aanpassen.
 
Lijkt me niet. Het feit dat het werkt als ik het probeer (na een kleine aanpassing) wil nog niet zeggen dat het bij de TS ook werkt. We moeten wachten tot hij zegt of het gelukt is of niet.
 
Laatst bewerkt:
Ja maar dan moet hij dat wel doen:).
Kun je je script met kleine aanpassing ook even posten?
 
Het script dat bij mij werkt is het script uit post #7, met de wijziging uit post #8 ("<?" vervangen door "<?php").
 
Het script dat bij mij werkt is het script uit post #7, met de wijziging uit post #8 ("<?" vervangen door "<?php").

Bij mij doen ze het nog geen van allen. ook niet met die aanpassing.

Ik wordt simpelweg ge-redirect naar de homepage en krijg verder 0 mail binnen.

Toch raar.. maargoed.. topic kan dicht wat mij betreft, ik zal een work-a-round moeten vinden.

Groetjes
 
Niet bij de pakken neer gaan zitten, het je de functie mail goed ingestelt?
(in de php config)
 
Niet bij de pakken neer gaan zitten, het je de functie mail goed ingestelt?
(in de php config)

Ik neem aan van wel, gezien het feit een eerder contactformulier wél werkte... alleen natuurlijk heb ik dat weer gedelete.. vraag me niet waarom >.<
 
maar bij supersnail werkt t.
hoe komt de redirect?

Ik neem aan omdat er een $_GET - systeem in zit, waarbij de default pagina de homepage is. Maar omdat de pagina zichself moet aanroepen zou dit toch geen problemen mogen opleveren?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan