Ik heb met behulp van een template een website aan het maken, wat goed lukt.
De contact pagina werkt via een link naar een contact.php. Zie hieronder.
Als ik op de link klik krijg ik wel de melding "Uw bericht is correct verzonden!", maar ik ontvang geen mail.
Ik heb al wat rondgekeken hier, maar kan niet ontdekken waar het fout gaat.
(bij [email protected] vul ik mijn e-mail adres in)
Graag hulp.
M.vr.groeten
Adri

<?
$subject="from".$_GET['uw naam: '];
$headers= "From:".$_GET['e-mail: ']."\n";
$headers.='Content-type: text/html; charset=iso-8859-1';
mail($_GET['[email protected]'], $subject, "
<html>
<head>
<title>Contact letter</title>
</head>
<body>

<br>
".$_GET['bericht']."
</body>
</html>" , $headers);
echo ("Uw bericht is correct verzonden!");
?>
<script>
resizeTo(300, 300)
//window.close()
</script>
Ik ben geen goede scripter maar kan zijn dat je waar je emailadres plaatst, $_GET[''] gebruikt.

Probeer

mail('[email protected]', $subject,  "






Adri Rovers op 18/03/2014 14:53:32

Ik heb met behulp van een template een website aan het maken, wat goed lukt.
De contact pagina werkt via een link naar een contact.php. Zie hieronder.
Als ik op de link klik krijg ik wel de melding "Uw bericht is correct verzonden!", maar ik ontvang geen mail.
Ik heb al wat rondgekeken hier, maar kan niet ontdekken waar het fout gaat.
(bij [email protected] vul ik mijn e-mail adres in)
Graag hulp.
M.vr.groeten
Adri

<?
$subject="from".$_GET['uw naam: '];
$headers= "From:".$_GET['e-mail: ']."\n";
$headers.='Content-type: text/html; charset=iso-8859-1';
mail($_GET['[email protected]'], $subject, "
<html>
<head>
<title>Contact letter</title>
</head>
<body>

<br>
".$_GET['bericht']."
</body>
</html>" , $headers);
echo ("Uw bericht is correct verzonden!");
?>
<script>
resizeTo(300, 300)
//window.close()
</script>


Adri, Je bent nieuw met PHP?

Er gaat een hoop mis met je script.
Zo is $_GET['uw_naam :'] niet correct. En waarom deze als onderwerp?
$_GET['e-mail: '] is dus ook onjuist.
$_GET['[email protected]'] kan ook niet.

Wat GET doet is de waarde uit je URL halen.
Bijvoorbeeld
URL: index.php?naam=Adri
Op index kun je de naam dan ophalen met $_GET['naam'].

Je mist een aantal headers en je controleert niet of het daadwerkelijk goed gaat.

Sowieso zou ik POST gebruiken i.p.v. GET
@michael
Ja helemaal nieuw met PHP. Dat script zat bij de template,
Verdiep je eens even in de basis van PHP. Dan begrijp je wat GET en POST voor functie hebben en waarom je script niet gaat werken op deze manier.
Ik kan je het wel voordoen maar daar leer je ook niks van.
OK, ik begrijp inmiddels dat POST veiliger is omdat je met GET via de url de gegevens kunbt zien.

ik heb nu dit gemaakt, vul alle velden in, maar krijg toch het bericht "U heeft niet alle velden ingevuld" en ook geen mail. De velden komen overeen met die in het formulier.

<?php
if (!isset($_POST['naam']) || !isset($_POST['bedrijf']) ||!isset($_POST['telefoon']) ||!isset($_POST['email']) || !isset($_POST['bericht'])) {
echo 'U heeft niet alle velden ingevuld!';
exit;
}

$naam = htmlspecialchars($_POST['naam']);
$bedrijf = htmlspecialchars($_POST['bedrijf']);
$email = htmlspecialchars($_POST['email']);
$bericht = htmlspecialchars($_POST['bericht']);

$tijd = time();
$datum = strftime('%d/%m/%y %H:%M', $tijd);
$ip = getenv('REMOTE_ADDR');
$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:
____________________________________
'.$bericht.'
------------------------------------';

mail('[email protected]', 'Bericht van mail.nl', $message, 'From: '.$email);

echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';
?>
!isset betekend niets meer dan 'is niet geset'. Dit betekent niet dat de velden ook daadwerkelijk gevuld zijn. Dit kun je controleren met if(trim($_POST['naam']) == '') of met strlen(). trim verwijdert spaties voor en achter de variabele. Hiermee controleer je dus een leeg veld, maar ook of het veld alleen een spatie bevat. In mijn ogen is strlen() (mogelijk in combinatie met trim) beter. Hiermee controleer je lengte van de variabele en kun je bijvoorbeeld eisen dat de naam minimaal 2 tekens moet zijn en het telefoon 10.

Om te controleren of een formulier wordt gepost doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
Probeer onderstaande code eens.


<?php  
if($_SERVER['REQUEST_METHOD'] == 'POST') {

	if (isset($_POST['naam'],$_POST['bedrijf'],$_POST['telefoon'],$_POST['email'],$_POST['bericht'])) {
	  
		$naam = htmlspecialchars($_POST['naam']);
		$bedrijf = htmlspecialchars($_POST['bedrijf']);  
		$email = htmlspecialchars($_POST['email']);  
		$bericht = htmlspecialchars($_POST['bericht']);  
		  
		$tijd = time();  
		$datum = strftime('%d/%m/%y %H:%M', $tijd);  
		$ip = getenv('REMOTE_ADDR');  
		$message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:  
		____________________________________  
		'.$bericht.'  
		------------------------------------';  
		  
		if(mail('[email protected]', 'Bericht van mail.nl', $message, 'From: '.$email)) {
			echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';
		} else {
			echo 'Uw bericht kon niet worden verzonden. Probeer het later eens.';
		}
	} else {
		echo 'Er is iets fout gegaan';
	}
}
?>
<form method="POST">
<label>Naam</label>
<input type="text" name="naam" /><br />

<label>Bedrijf</label>
<input type="text" name="bedrijf" /><br />

<label>Telefoonnummer</label>
<input type="tel" name="telefoon" /><br />

<label>E-mailadres</label>
<input type="email" name="email" /><br />

<label>Bericht</label>
<textarea name="bericht"></textarea>

<button>Verzenden</button>
</form>
Michael, hartstikke bedankt voor je hulp.
In eerste instantie werkte het nog niet. Heb nu een deel van de template gewijzigd in:

<br><form name="form1" method="post" action="contact.php">  
          Naam: <br><input name="naam" type="text" value size="50"""><br>  
          Bedrijf: <br><input name="bedrijf" type="text" value size="50"""><br>	Telefoon: <br><input name="telefoon" type="text" value size="50"""><br>  
          E-mail: <br><input name="email" type="text" value="value" size="50"><br><br>  
          <textarea name="bericht" rows="7" cols="50">value</textarea><br>  
          <input type="submit" name="Submit" value="Verzenden">  
    </form>


Het bericht wordt nu keurig verzonden.
Onder de tekst "Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord." verschijnt nu weer het (niet opgemaakte) formulier.
Ik zou willen dat dat niet gebeurt, maar dat er weer teruggegaan wordt naar contact.html

Hoe krijg ik dat nog voor elkaar.


[size=xsmall]Toevoeging op 18/03/2014 18:19:08:[/size]

Toch zou het het mooist zijn als ik de template kan blijven gebruiken:
de HTML code daarvan is en de bedleoing is dat als ik op send klik het ingevulde formulier wordt verstuurd.
Met de code van Michael krijg ik dat niet voor elkaar.

Vul al uw gegevens in, zodat we u zo goed mogelijk kunnen helpen.<br>
<br style="line-height:9px">
<form action="" enctype="multipart/form-data" id="form">
<table  cellspacing="0" cellpadding="0" class="form">
  <tr>
<td  style="width:198px; height:128px">
	<table  cellspacing="0" cellpadding="0">
	  <tr>
		<td  style="width:198px; height:27px"><input name="naam" type="text" id="naam" value="naam"></td>
	  </tr>
	   <tr>
		<td  style="width:198px; height:27px"><input name="bedrijf" type="text" id="bedrijf" value="bedrijf"></td>
	  </tr>
	   <tr>
		<td  style="width:198px; height:27px"><input name="telefoon" type="text" id="telefoon" value="tefefoon"></td>
	  </tr>
	   <tr>
		<td  style="width:198px; height:27px"><input name="email" type="text" id="email" value="email"></td>
	  </tr>
	</table>
			</td>
<td  style="width:202px; height:128px">
	<table  cellspacing="0" cellpadding="0">
	  <tr>
	<td  style="width:202px; height:109px"><textarea name="bericht" cols="0" rows="0" id="bericht">bericht</textarea></td>
	  </tr>
	  <tr>
		<td  style="width:202px; height:19px">
		<br style="line-height:1px">
		<img src="images/spacer.gif" alt="" width="116" height="1"><strong><a href="#" onClick="document.getElementById('form').reset()">reset</a></strong><img src="images/spacer.gif" alt="" width="15" height="1"><strong><a href="contact.php" onClick="document.getElementById('form').submit()">send</a></strong>	


Formulier in een table is nou niet de juiste manier van opmaak te noemen.
Maar goed. Volgens mij is je template 'contact.html' ? Hierin kun je geen PHP gebruiken.
De enige optie is dan, zoals je nou al doet, verwijzen naar contact.php, met het gevolg dat je op een andere pagina komt. De pagina even aanroepen en toch op de html pagina blijven kan alleen met Javascript, maar dat lijkt me nou nog een stap te ver voor je?
Waarom wil je je vasthouden aan het template? Is dit niet om te zetten naar contact.php? (Hernoemen en links verwijzen naar de php pagina).
Ik heb contact.html hernoemd naar contact.php en daar je code in gezet. De tabel is nu dus vervangen door het formulier.
Na invullen en verzenden blijf ik keurig op de pagina, maar er gebeurt niets.
Ik krijg geen mail. De code is nu als volgt:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE></TITLE>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<LINK HREF="style.css" TYPE="text/css" REL="stylesheet">

</HEAD>
<BODY>

<table  cellspacing="0" cellpadding="0" align="center">
  <tr>
    <td  style="width:766px; height:780px">
		<table  cellspacing="0" cellpadding="0">
		  <tr>
			<td  style="width:42px; height:780px"></td>
			<td  style="width:676px; height:780px">
				<table  cellspacing="0" cellpadding="0">
				  <tr>
					<td  style="width:676px; height:119px; background-image: url(images/grey_bg.gif); background-repeat:no-repeat">
						<table  cellspacing="0" cellpadding="0">
						  <tr>
							<td  style="width:560px; height:119px">
								<br style="line-height:48px">
								<img src="images/c-name2.jpg" alt="" hspace="3">
							</td>
							<td  style="width:116px; height:119px">
								<br style="line-height:66px">
								<a href="welkom.html"><img src="images/link.gif" alt="" style="margin-right:18px"  border="0"></a><a href="#"><img src="images/link1.gif" alt="" style="margin-right:21px"  border="0"></a><a href="#"><img src="images/link2.gif" alt="" border="0"></a> </td>
						  </tr>
						</table>
					</td>
				  </tr>
				   <tr>
					<td  style="width:676px; height:563px">
						<table  cellspacing="0" cellpadding="0">
						  <tr>
							<td  style="width:226px; height:563px">
								<a href="index.html"><img src="images/back.gif" alt="" border="0"></a><img src="images/pic5_1.gif" alt=""><br>
								<img src="images/pic5_2.gif" alt=""><br>
								<a href="werkwijze.html"><img src="images/comp2.gif" alt="" border="0"></a><a href="diensten.html"><img src="images/srv2.gif" alt="" border="0"></a><br>
							<a href="projecten.html"><img src="images/sol2.gif" alt="" border="0"></a><a href="index-5.html"><img src="images/cont2.gif" alt="" border="0"></a><br> </td>
							<td  style="width:450px; height:563px; background-color:#F8F8F8; background-image:url(images/top.gif); background-repeat:no-repeat">
								<table  cellspacing="0" cellpadding="0">
								  <tr>
									<td  style="width:450px; height:563px; background-image:url(images/bottom.gif); background-repeat:no-repeat; background-position: left bottom" class="list">
										<br style="line-height:30px">
										<img src="images/title5_1.gif" alt="" style="margin-left:29px"><br>
										<br style="line-height:9px">
										<img src="images/pic5_3.gif" alt="" align="left" style="margin-left:30px; margin-top:2px; margin-right:14px"><strong>Lenoir 
										Exclusief Houtwerk
										</strong><br>
										<span class="list" style="width: 450px; height: 563px; background-image: url(images/bottom.gif); background-repeat: no-repeat; background-position: left bottom; color: #7F7F7F;">t 49 -  xxxx EB xxxx</span><br>
										<br style="line-height:12px">
										<span class="list" style="width: 450px; height: 563px; background-image: url(images/bottom.gif); background-repeat: no-repeat; background-position: left bottom; color: #7F7F7F;">Mobiel :&nbsp; +31 611077787</span><br>
										<span class="list" style="width: 450px; height: 563px; background-image: url(images/bottom.gif); background-repeat: no-repeat; background-position: left bottom; color: #7F7F7F;">Telefoon:&nbsp;&nbsp; +31 162692796</span><br>
										<br>
										<br style="line-height:26px"> 
										<img src="images/px2_1.gif" alt="" style="margin-left:29px"><br>
										<br style="line-height:25px">
										<br>
										<br style="line-height:14px"> 
										<img src="images/px2_1.gif" alt="" style="margin-left:29px"><br>
										<br style="line-height:24px">
										
                                        <?php  
if($_SERVER['REQUEST_METHOD'] == 'POST') {

    if (isset($_POST['naam'],$_POST['bedrijf'],$_POST['telefoon'],$_POST['email'],$_POST['bericht'])) {
      
        $naam = htmlspecialchars($_POST['naam']);
        $bedrijf = htmlspecialchars($_POST['bedrijf']);  
        $email = htmlspecialchars($_POST['email']);  
        $bericht = htmlspecialchars($_POST['bericht']);  
          
        $tijd = time();  
        $datum = strftime('%d/%m/%y %H:%M', $tijd);  
        $ip = getenv('REMOTE_ADDR');  
        $message = $naam.' met het e-mailadres '.$email.' en het IP '.$ip.' stuurde op '.$datum.' het volgende bericht:  
        ____________________________________  
        '.$bericht.'  
        ------------------------------------';  
          
        if(mail('mijnmail@@gmail.com', 'Bericht van mail.nl', $message, 'From: '.$email)) {
            echo 'Uw bericht is verzonden. U krijgt zo snel mogelijk antwoord.';
        } else {
            echo 'Uw bericht kon niet worden verzonden. Probeer het later eens.';
        }
    } else {
        echo 'Er is iets fout gegaan';
    }
}
?>

                                        
                                        
                                        <form method="POST">
<label>Naam</label>
<input type="text" name="naam" /><br />

<label>Bedrijf</label>
<input type="text" name="bedrijf" /><br />

<label>Telefoonnummer</label>
<input type="tel" name="telefoon" /><br />

<label>E-mailadres</label>
<input type="email" name="email" /><br />

<label>Bericht</label>
<textarea name="bericht"></textarea>

<button>Verzenden</button>
</form>

</td>
								  </tr>
								</table>
							</td>
						  </tr>
						</table>
					</td>	
				  </tr>
				   <tr>
					<td  style="width:676px; height:98px" class="policy">
					<br style="line-height:45px">
					<span class="policy" style="width:676px; height:99px"> ef Houtwerk &copy; 2014</span></td>
				  </tr>
				</table>
			</td>
			<td  style="width:48px; height:780px"></td>
		  </tr>
		</table>
	</td>
  </tr>
</table>
</BODY>
</HTML>



Wat bedoel je met 'er gebeurt niets'?
Krijg je ook niet de melding of de mail wel of niet verzonden is?

Het is soms ook handig om foutmeldingen weer te geven. Dit doe je door de volgende code op de eerste regels te zetten
<?php
error_reporting(E_ALL);
ini_set('error_reporting', E_ALL);
?>

Reageren