formulier
leendertW - 19/01/2005 12:02 (laatste wijziging 19/01/2005 12:06)
PHP beginner
Ik heb dit formuliertje maar er zit een fout in, maar die kan ik zelf niet ontdekken
dit is de code
<?php
if(isset($_POST['submit'])) {
$sName = $_POST['sNaam'];
$sMail = $_POST['sMail'];
$sBericht = $_POST['sBericht'];
$sBericht = nl2br($sBericht);
if(strlen($sNaam) < 4) $sError = "Geen correcte naam ingevoerd<br>";
if(strlen($_POST['sMail']) < 4 || !ereg('@',$_POST['sMail']) || !ereg('.',$_POST['sMail'])) $sError = "Geen correcte emailingevoerd<br>";
if(strlen($sBericht) < 4) $sError .= "Geen correct bericht ingevoerd<br>";
if($sError) echo "de opdracht werd niet uitgevoerd vanwege de volgende redenen<br>" . $sError . "Kies terug en probeer het nogmaals";
if(!isset($sError))
{
$sHeader = "MIME-Version: 1.0\r\n";
$sHeader .= "Content-type: text/html; charset=iso-8859-1\r\n";
$sHeader .= "To: ".$sNaam." <".$sMail.">\r\n";
$sHeader .= "From: ".$_POST['sNaam']." <".$_POST['sMail'].">\r\n";
$sNaar = 'hierje@emailadres.nl';
$sOnderwerp = 'hierhetonderwerp';
$sBody = "Er is een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n\rNaam: " . $Snaam . "\n\rE-mailadres: " . $Smail ."\n\rBericht: " . $Sbericht;
$sControleer = mail($_POST['sNaar'],$_POST['sOnderwerp'],$sBody, sHeader);
if($sControleer) echo "de E-mail is correct verzonden!";
if(!$sControleer) echo "de E-mail is niet verzonden! Klik <A href='javascript:history.go(-1);'> hier </a> om terug te gaan naar het formulier</A>";
}
}
else {
?>
<form name="contact" method="POST" action="<?=$_Server['PHP_SELF']" ?>">
<input name="sNaam" type="text" value="Vul hier je naam in"><br>
<input name="sMail" type="text"value="voer hier je E-mailadres in"><br>
<textarea name="sBericht">Voer hier je bericht in</textarea><br>
<input type="submit" name="submit" value="Verzenden">
</form>
<?php
}
?>
<?php
if ( isset ( $_POST [ 'submit' ] ) ) {
$sName = $_POST [ 'sNaam' ] ;
$sMail = $_POST [ 'sMail' ] ;
$sBericht = $_POST [ 'sBericht' ] ;
$sBericht = nl2br ( $sBericht ) ;
if ( strlen ( $sNaam ) < 4 ) $sError = "Geen correcte naam ingevoerd<br>" ;
if ( strlen ( $_POST [ 'sMail' ] ) < 4 || ! ereg ( '@' , $_POST [ 'sMail' ] ) || ! ereg ( '.' , $_POST [ 'sMail' ] ) ) $sError = "Geen correcte emailingevoerd<br>" ;
if ( strlen ( $sBericht ) < 4 ) $sError .= "Geen correct bericht ingevoerd<br>" ;
if ( $sError ) echo "de opdracht werd niet uitgevoerd vanwege de volgende redenen<br>" . $sError . "Kies terug en probeer het nogmaals" ;
{
$sHeader = "MIME-Version: 1.0\r \n " ;
$sHeader .= "Content-type: text/html; charset=iso-8859-1\r \n " ;
$sHeader .= "To: " . $sNaam . " <" . $sMail . ">\r \n " ;
$sHeader .= "From: " . $_POST [ 'sNaam' ] . " <" . $_POST [ 'sMail' ] . ">\r \n " ;
$sNaar = 'hierje@emailadres.nl' ;
$sOnderwerp = 'hierhetonderwerp' ;
$sBody = "Er is een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n \r Naam: " . $Snaam . "\n \r E-mailadres: " . $Smail . "\n \r Bericht: " . $Sbericht ;
$sControleer = mail ( $_POST [ 'sNaar' ] , $_POST [ 'sOnderwerp' ] , $sBody , sHeader
) ;
if ( $sControleer ) echo "de E-mail is correct verzonden!" ;
if ( ! $sControleer ) echo "de E-mail is niet verzonden! Klik <A href='javascript:history.go(-1);'> hier </a> om terug te gaan naar het formulier</A>" ; }
}
else {
?>
<form name="contact" method="POST" action="<?= $_Server [ 'PHP_SELF' ] " ?>" >
< input name= "sNaam" type= "text" value= "Vul hier je naam in" >< br>
< input name= "sMail" type= "text" value= "voer hier je E-mailadres in" >< br>
< textarea name= "sBericht" > Voer hier je bericht in</ textarea>< br>
< input type= "submit" name= "submit" value= "Verzenden" >
</ form>
<?php
}
?>
en dit is de fout:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in c:\program files\easyphp1-7\www\mail.php on line 37
10 antwoorden
Gesponsorde links
Thomas - 19/01/2005 12:12 (laatste wijziging 19/01/2005 12:13)
Moderator
Wat is regel 37 ? Ook handig om te weten...
Mja, als je fatsoenlijk inspringt in je code zie je dit soort fouten meteen.
Ik zou trouwens een array gebruiken voor $sError...
Dan kun je kijken of je formulier goed is ingevuld met if(sizeof($error_array) == 0) en kun je je fouten netjes afdrukken met een for(each)-lus.
leendertW - 19/01/2005 12:13
PHP beginner
Ja ik heb de fout al dankzij Henri. Bij action stond een " te veel.:S
Fangorn: Ik zal het eens gaan proberen.
leendertW - 19/01/2005 15:00 (laatste wijziging 19/01/2005 15:01)
PHP beginner
Nu heb ik het formulier helemaal veranderd maar nu krijg ik dit als ik iets niet invul:
Array
Klik hier om terug te gaan naar het formulier
U heeft uw naam niet ingevult
Klik hier om terug te gaan naar het formulier
dit is het script:
<html>
<head>
<title>Mail scriptje </title>
</head>
<body>
<?php
if(isset($_POST['submit'])) {
$sName = $_POST['sNaam'];
$sMail = $_POST['sMail'];
$sAdres = $_POST['sAdres'];
$sWebsite = $_POST['sWebsite'];
$sBericht = $_POST['sBericht'];
$sBericht = nl2br($sBericht);
$sError[] = array();
if ($_POST['sNaam'] == '') {
$sError[] = 'U heeft uw naam niet ingevult';
}
elseif($_POST['sAdres'] == '') {
$sError[] = 'U heeft uw adres niet ingevult';
}
elseif($_POST['sWebsite'] == 'http://') {
$sError[] = 'U heeft uw website niet ingevult';
}
elseif(empty($_POST['sMail']) || !eregi('@',$_POST['sMail']) || !eregi('.',$_POST['sMail']) || eregi(' ',$_POST['sMail'])) {
$sError[] = 'Uw heeft uw emailadres niet ingevult';
}
elseif($_POST['sBericht'] == '') {
$sError[] = 'U heeft het bericht niet ingevult';
}
if (count($sError) == 0)
{
$sHeader = "To: ".$sNaam." <".$sMail.">\r\n";
$sHeader = "From: ".$_POST['sNaam']." <".$_POST['sMail'].">\r\n";
$sNaar = ' ';
$sOnderwerp = 'Berichtje van de website';
$sBody = "Er is op ".$sDatum." een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n\rIp adres: " . $iIp . "\n\rNaam: " . $sNaam . "\n\rAdres: " . $sAdres . "\n\rWebsite: " . $sWebsite . "\n\rE-mailadres: " . $sMail ."\n\rBericht: " . $sBericht;
$sDatum = date("H:i d-m-Y ");
$iIp = getenv(REMOTE_ADDR);
mail($_POST['sNaar'],$_POST['sOnderwerp'],$sBody, $sHeader);
}
else
{
for($i = 0; $i < count($sError); $i++)
{
echo '<div align="center" class="fout"> '.$sError[$i].'<BR>
Klik <A href="javascript:history.go(-1);"> hier </a> om terug te gaan naar het formulier</A></div>';
}
}
}
else
{
?>
<form name="contact" method="POST" action="mail.php">
<table>
<tr>
<td class="rood"><b>Naam:</b></td>
<td><input name="sNaam" type="text"></td>
</tr>
<tr>
<td class="rood"><b>Adres:</b></td>
<td><input name="sAdres" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Website:</b></td>
<td><input name="sWebsite" type="text" value="http://"><td>
</tr>
<tr>
<td class="rood"><b>Emailadres:</b></td>
<td><input name="sMail" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Bericht: </b></td>
<td><textarea cols="40" rows="15" name="sBericht"></textarea></td>
</tr>
<tr>
<td></td>
<td ><input type="submit" name="submit" value="Verzenden">
</form>
</td>
</tr>
</table>
<?php
}
?>
</body>
</html>
<html>
<head>
<title>Mail scriptje </title>
</head>
<body>
<?php
if ( isset ( $_POST [ 'submit' ] ) ) {
$sName = $_POST [ 'sNaam' ] ;
$sMail = $_POST [ 'sMail' ] ;
$sAdres = $_POST [ 'sAdres' ] ;
$sWebsite = $_POST [ 'sWebsite' ] ;
$sBericht = $_POST [ 'sBericht' ] ;
$sBericht = nl2br ( $sBericht ) ;
if ( $_POST [ 'sNaam' ] == '' ) {
$sError [ ] = 'U heeft uw naam niet ingevult' ;
}
elseif ( $_POST [ 'sAdres' ] == '' ) {
$sError [ ] = 'U heeft uw adres niet ingevult' ;
}
elseif ( $_POST [ 'sWebsite' ] == 'http://' ) {
$sError [ ] = 'U heeft uw website niet ingevult' ;
}
elseif ( empty ( $_POST [ 'sMail' ] ) || ! eregi ( '@' , $_POST [ 'sMail' ] ) || ! eregi ( '.' , $_POST [ 'sMail' ] ) || eregi ( ' ' , $_POST [ 'sMail' ] ) ) { $sError [ ] = 'Uw heeft uw emailadres niet ingevult' ;
}
elseif ( $_POST [ 'sBericht' ] == '' ) {
$sError [ ] = 'U heeft het bericht niet ingevult' ;
}
{
$sHeader = "To: " . $sNaam . " <" . $sMail . ">\r \n " ;
$sHeader = "From: " . $_POST [ 'sNaam' ] . " <" . $_POST [ 'sMail' ] . ">\r \n " ;
$sNaar = ' ' ;
$sOnderwerp = 'Berichtje van de website' ;
$sBody = "Er is op " . $sDatum . " een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n \r Ip adres: " . $iIp . "\n \r Naam: " . $sNaam . "\n \r Adres: " . $sAdres . "\n \r Website: " . $sWebsite . "\n \r E-mailadres: " . $sMail . "\n \r Bericht: " . $sBericht ;
$sDatum = date ( "H:i d-m-Y " ) ;
mail ( $_POST [ 'sNaar' ] , $_POST [ 'sOnderwerp' ] , $sBody , $sHeader ) ;
}
else
{
for ( $i = 0 ; $i < count ( $sError ) ; $i ++ ) {
echo '<div align="center" class="fout"> ' . $sError [ $i ] . '<BR> Klik <A href="javascript:history.go(-1);"> hier </a> om terug te gaan naar het formulier</A></div>' ;
}
}
}
else
{
?>
<form name="contact" method="POST" action="mail.php">
<table>
<tr>
<td class="rood"><b>Naam:</b></td>
<td><input name="sNaam" type="text"></td>
</tr>
<tr>
<td class="rood"><b>Adres:</b></td>
<td><input name="sAdres" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Website:</b></td>
<td><input name="sWebsite" type="text" value="http://"><td>
</tr>
<tr>
<td class="rood"><b>Emailadres:</b></td>
<td><input name="sMail" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Bericht: </b></td>
<td><textarea cols="40" rows="15" name="sBericht"></textarea></td>
</tr>
<tr>
<td></td>
<td ><input type="submit" name="submit" value="Verzenden">
</form>
</td>
</tr>
</table>
<?php
}
?>
</body>
</html>
Thomas - 19/01/2005 15:23
Moderator
$sError[] = array();
Daarmee maak je het eerste element van $sError OOK weer een array... Het moet
$sError = array(); zijn.
En die hyperlink moet je ff naar buiten je for-lus verplaatsen uiteraard...
leendertW - 19/01/2005 15:55 (laatste wijziging 19/01/2005 15:59)
PHP beginner
Waarom moet die hyperlink buiten die for-lus?
Hij doet het zo prima!
en hoe kan je het zo doen dat hij zegt:
De volgende velden zijn niet ingevult:
- naam
- adres
etc.
Hoe doe je dat. Dan moet je dus eerst de fouten tellen en wanneer er 1 fout is dan moet geeft hij het zo weer:
Het volgende veldis niet ingevult:
- naam
maar wanneer er meerder velden niet zijn ingevult moet hij:
De volgende velden zijn niet ingevult:
- naam
-adres
etc.
weergeven.
Thomas - 19/01/2005 16:20 (laatste wijziging 19/01/2005 16:21)
Moderator
$eenitem = (sizeof($fouten_array) == 1);
echo ($eenitem ? "Het" : "De")." volgende veld."($eenitem ? " is" : "en zijn")." niet ingevuld:<br />";
$eenitem = ( sizeof ( $fouten_array ) == 1 ) ;
echo ( $eenitem ?
"Het" : "De" ) . " volgende veld." ( $eenitem ?
" is" : "en zijn" ) . " niet ingevuld:<br />" ;
Teehee, PHP is hard...
leendertW - 19/01/2005 17:57
PHP beginner
Maar nu heb ik dus het probleem dat hij aangeeft dat de mail is verstuurt maar dat hij niet aan komt:S
<html>
<head>
<title>Mail scriptje </title>
</head>
<body>
<?php
if(isset($_POST['submit'])) {
$sName = $_POST['sNaam'];
$sMail = $_POST['sMail'];
$sAdres = $_POST['sAdres'];
$sWebsite = $_POST['sWebsite'];
$sBericht = $_POST['sBericht'];
$sBericht = nl2br($sBericht);
$sError[] = array();
if ($_POST['sNaam'] == '') {
$sError[] = 'U heeft uw naam niet ingevult';
}
elseif($_POST['sAdres'] == '') {
$sError[] = 'U heeft uw adres niet ingevult';
}
elseif($_POST['sWebsite'] == 'http://') {
$sError[] = 'U heeft uw website niet ingevult';
}
elseif(empty($_POST['sMail']) || !eregi('@',$_POST['sMail']) || !eregi('.',$_POST['sMail']) || eregi(' ',$_POST['sMail'])) {
$sError[] = 'Uw heeft uw emailadres niet ingevult';
}
elseif($_POST['sBericht'] == '') {
$sError[] = 'U heeft het bericht niet ingevult';
}
if (count($sError) == 0)
{
$sHeader = "To: ".$sNaam." <".$sMail.">\r\n";
$sHeader = "From: ".$_POST['sNaam']." <".$_POST['sMail'].">\r\n";
$sNaar = ' ';
$sOnderwerp = 'Berichtje van de website';
$sBody = "Er is op ".$sDatum." een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n\rIp adres: " . $iIp . "\n\rNaam: " . $sNaam . "\n\rAdres: " . $sAdres . "\n\rWebsite: " . $sWebsite . "\n\rE-mailadres: " . $sMail ."\n\rBericht: " . $sBericht;
$sDatum = date("H:i d-m-Y ");
$iIp = getenv(REMOTE_ADDR);
mail($_POST['sNaar'],$_POST['sOnderwerp'],$sBody, $sHeader);
echo 'het bericht is succesvol verstuurt';
}
else
{
for($i = 0; $i < count($sError); $i++)
{
echo '<div align="center" class="fout"> '.$sError[$i].'<BR>
Klik <A href="javascript:history.go(-1);"> hier </a> om terug te gaan naar het formulier</A></div>';
}
}
}
else
{
?>
<form name="contact" method="POST" action="mail.php">
<table>
<tr>
<td class="rood"><b>Naam:</b></td>
<td><input name="sNaam" type="text"></td>
</tr>
<tr>
<td class="rood"><b>Adres:</b></td>
<td><input name="sAdres" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Website:</b></td>
<td><input name="sWebsite" type="text" value="http://"><td>
</tr>
<tr>
<td class="rood"><b>Emailadres:</b></td>
<td><input name="sMail" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Bericht: </b></td>
<td><textarea cols="40" rows="15" name="sBericht"></textarea></td>
</tr>
<tr>
<td></td>
<td ><input type="submit" name="submit" value="Verzenden">
</form>
</td>
</tr>
</table>
<?php
}
?>
</body>
</html>
<html>
<head>
<title>Mail scriptje </title>
</head>
<body>
<?php
if ( isset ( $_POST [ 'submit' ] ) ) {
$sName = $_POST [ 'sNaam' ] ;
$sMail = $_POST [ 'sMail' ] ;
$sAdres = $_POST [ 'sAdres' ] ;
$sWebsite = $_POST [ 'sWebsite' ] ;
$sBericht = $_POST [ 'sBericht' ] ;
$sBericht = nl2br ( $sBericht ) ;
if ( $_POST [ 'sNaam' ] == '' ) {
$sError [ ] = 'U heeft uw naam niet ingevult' ;
}
elseif ( $_POST [ 'sAdres' ] == '' ) {
$sError [ ] = 'U heeft uw adres niet ingevult' ;
}
elseif ( $_POST [ 'sWebsite' ] == 'http://' ) {
$sError [ ] = 'U heeft uw website niet ingevult' ;
}
elseif ( empty ( $_POST [ 'sMail' ] ) || ! eregi ( '@' , $_POST [ 'sMail' ] ) || ! eregi ( '.' , $_POST [ 'sMail' ] ) || eregi ( ' ' , $_POST [ 'sMail' ] ) ) { $sError [ ] = 'Uw heeft uw emailadres niet ingevult' ;
}
elseif ( $_POST [ 'sBericht' ] == '' ) {
$sError [ ] = 'U heeft het bericht niet ingevult' ;
}
{
$sHeader = "To: " . $sNaam . " <" . $sMail . ">\r \n " ;
$sHeader = "From: " . $_POST [ 'sNaam' ] . " <" . $_POST [ 'sMail' ] . ">\r \n " ;
$sNaar = ' ' ;
$sOnderwerp = 'Berichtje van de website' ;
$sBody = "Er is op " . $sDatum . " een contactformulier vanaf je website verstuurd. de volgende gegevens werden ingevoerd:\n \r Ip adres: " . $iIp . "\n \r Naam: " . $sNaam . "\n \r Adres: " . $sAdres . "\n \r Website: " . $sWebsite . "\n \r E-mailadres: " . $sMail . "\n \r Bericht: " . $sBericht ;
$sDatum = date ( "H:i d-m-Y " ) ;
mail ( $_POST [ 'sNaar' ] , $_POST [ 'sOnderwerp' ] , $sBody , $sHeader ) ; echo 'het bericht is succesvol verstuurt' ;
}
else
{
for ( $i = 0 ; $i < count ( $sError ) ; $i ++ ) {
echo '<div align="center" class="fout"> ' . $sError [ $i ] . '<BR> Klik <A href="javascript:history.go(-1);"> hier </a> om terug te gaan naar het formulier</A></div>' ;
}
}
}
else
{
?>
<form name="contact" method="POST" action="mail.php">
<table>
<tr>
<td class="rood"><b>Naam:</b></td>
<td><input name="sNaam" type="text"></td>
</tr>
<tr>
<td class="rood"><b>Adres:</b></td>
<td><input name="sAdres" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Website:</b></td>
<td><input name="sWebsite" type="text" value="http://"><td>
</tr>
<tr>
<td class="rood"><b>Emailadres:</b></td>
<td><input name="sMail" type="text"><td>
</tr>
<tr>
<td class="rood"><b>Bericht: </b></td>
<td><textarea cols="40" rows="15" name="sBericht"></textarea></td>
</tr>
<tr>
<td></td>
<td ><input type="submit" name="submit" value="Verzenden">
</form>
</td>
</tr>
</table>
<?php
}
?>
</body>
</html>
Thomas - 19/01/2005 19:35
Moderator
Het succesvol versturen van een emailbericht heeft NIETS te maken met het succesvol ontvangen van een emailbericht.
Weet je ook zeker dat het emailbericht verstuurd wordt ?
Doe eens het volgende:
$success = mail(...);
echo "Het bericht is ".($success ? "" : "NIET ")."succesvol verstuurd.";
echo "Het bericht is " . ( $success ?
"" : "NIET " ) . "succesvol verstuurd." ;
leendertW - 19/01/2005 22:16
PHP beginner
Nee ik heb het al gezien. Ik doe in de mail() functie wel $sNaar maar die heb ik verder nergens aagegeven:S.
in ieder geval bedankt voor de hulp.:!:
Gesponsorde links
Dit onderwerp is gesloten .