Archief - E-mailproblemen vanuit m'n website

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Elsje1986

Legacy Member
Hello,

Ik maak voor het eerst een website en evenals voor het eerst met Dreamweaver. Nu heb ik een kleine hindernis bij de codes om een e-mail te kunnen verzenden van uit m'n website. Het is ook de eerste keer dat ik php-codes gebruik. Dus als er gigantische fouten inzitten ligt het aan mijn te kort aan kennis op dit gebied.

Dit is de code van mijn form-code:

Code:
<form name="form" method="post" action="verwerking.php">
<label>Name:<br /><input type="text" name="E-Mail" size="40" maxlength="100" /></label><br /><br />
<label>E-Mail:<br /><input type="text" name="E-Mail" size="40" maxlength="100" /></label><br /><br />
<label>Theme:<br /><input type="text" name="E-Mail" size="40" maxlength="100" /></label><br /><br />
<label>Commentary:<br />
<textarea name="msg" cols="60" rows="6" ></textarea></label><br /><br />
<input name="paginanaam" type="hidden" value="<?php echo $paginanaam; ?>">
<input name="ip" type="hidden" value="<?php echo $ip; ?>">
<input name="browser" type="hidden" value="<?php echo $browser; ?>">
<input name="referer" type="hidden" value="<?php echo $referer; ?>">
<input name="scriptname" type="hidden" value="<?php echo $scriptname; ?>">
<input class="pointer" type="submit" name="submit" value="Send" /><br /><br />
</form>

en dit is m'n php-code:

PHP:
<?php
$name			= $_POST['name'];
$E-Mail			= $_POST['E-Mail'];
$message		= $_POST['msg'];
$paginanaam		= $_POST['paginanaam'];
$ip				= $_POST['ip'];
$browser		= $_POST['browser'];
$referer		= $_POST['referer'];
$scriptname		= $_POST['scriptname'];

$ip2			= $_SERVER["REMOTE_ADDR"];
$browser2		= $_SERVER['HTTP_USER_AGENT'];
$referer2		= $_SERVER['HTTP_REFERER'];
$scriptname2	= $_SERVER['SCRIPT_NAME'];

$jaar = date("Y");
$maand = date("m");
$dag = date("d");
$datum = $dag . " " . $maand . " " . $jaar;
$tijd = time("t");

$mijnadres = "[email protected]";

$mijnsite = "www.fotoboek-elslapere.be";

$xmail = array
("@cepk.info", "@ceprk.info", "@gawab.com", "@mail.ru", "@yandex.com", "@gates.com");
$xmaildomein = "";

function is_substr($needle, $haystack){
		$pos = strpos($haystack, $needle);
        
          if ($spos === false) {
        		 return false;
		} else {
        		 return true;
          }
		  }

		  if ( ( !$E-Mail ) ||
        		  ( strlen($_POST['E-Mail']) > 200 ) ||
			 ( !preg_match ("#^[A-Za-z0-9](([_\.\-]?
[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)
\.([A-Za-z] {2,})$#", $E-Mail) )
           {
          			print "Fout: Ongeldig E-Mail Adres"
                    exit;
           }
           
           foreach ($xmail as $xmaildomein) {
           if ( is_substr
					($xmaildomein,$E-Mail))
	   	  {
                   	print "Fout: Ongewenst E-Mail Adres"
                    exit;
           }
           }
         
           if ( is_substr("http",$message))
           {
         			print "Fout: gebruik geen http in je bericht";
                    exit;
           }
          
           if ( $referer !="")
           {
           if ( !eregi("^http:",$referer ) )
           {
                 	print "Fout: Ongeldige referer";
                    exit;
           }
           if ( is_substr(" ",$referer))
           {
                    print "Fout: Ongeldige referer";
                    exit;
           }
           }
           
	       if ( ( !$name ) ||
		   ( strlen($name) > 100 ) ||
	   	   ( preg_match("/[:=@\<\>]/", $name) ) 
		   )
		   { 
					print "Fout: Ongeldige Naam"; 
					exit; 
           }
           if ( preg_match("#cc:#i", $message, matches) )
           {
           			print "Fout: Ongeldig Header Field gevonden";
                    exit;
           }
           if ( !$message )
           {
           			print "Fout: Geen bericht";
                    exit;
           }
           if ( !$scriptname )
           {
           			print "Fout: Ongeldige toegang";
                    exit;
           }
           if ( !$browser )
           {
           			print "Fout: Ongeldige toegang";
                    exit;
           }
           if ( $browser != $browser2 )
           {
           			print "Fout: Ongeldige toegang";
                    exit;
           }
           if ( $ip != $ip2 )
           {
           			print "Fout: Ongeldige toegang";
                    exit;
           }
           if (eregi("\r",$E-Mail) || eregi "\n",$E-Mail))
           {
           			print "Fout: Ongeldig E-Mail Adres";
           }
           if (FALSE) {
           			print "Fout: Je kunt geen bericht sturen naar een adres op het zelfde domein.";
                    exit;
           }
           $headers = "Content-Type: text/plain; harset=iso-8859-1\n";
           $headers .= "Van: bezoeker [email protected]>\n";
           $recipient			= $mijnadres;
           $subject = "Contact via $mijnsite $datum $tijd";
           $mssg = "Via: $paginanaam $scriptname $referer2\n";
           $mssg 	.= "Browser: $browser\n";
           $mssg	.= "Referer: $referer\n";
           $mssg	.= "Verwerking: $scriptname2\n";
           $mssg	.= "=== AFZENDER ========\n";
           $mssg	.= "$name <$E-Mail> IP-adres: $ip\n";
           $mssg .= "=== BEGIN BERICHT ======\n\n";
           $mssg .= "$message\n\n";
           $mssg .= "=== EINDE BERICHT ======\n";
           $message = $mssg;
           mail($recipient, $subject, $message, $headers);
           header("location: http://www.startspace.nl/dankjewelvoorjebericht.php");
?>

Alvast dikke merci voor de hulp! ;)

Elsje1986

Legacy Member
SideShow zei:
wat lukt precies niet ?

Als ik in m'n pagina met het contactformulier alles invul en dan op Send/verstuur klik, krijg ik een venster met wilt u het bestand "verwerking.php" (waaronder die pagina is opgeslaan) openen?
Wat ik wil bekomen, is dat die mail effectief verstuurd is en een "dankuwel"-pagina na het versturen van de mail.

Excuses voor het ontbreken van de uitleg over het probleem. ;)

FusioN

Legacy Member
is dat wanneer ge offline aan t testen zijt op uw eigen pc, via wamp of zo?

heb dat hier ook voor, is iets met file extensions en hoe die php bestanden openen... als ik test vanop mijn webserver heb ik dat probleem niet

Elsje1986

Legacy Member
FusioN zei:
is dat wanneer ge offline aan t testen zijt op uw eigen pc, via wamp of zo?

heb dat hier ook voor, is iets met file extensions en hoe die php bestanden openen... als ik test vanop mijn webserver heb ik dat probleem niet

PHP ondersteund hij wel, maar heb hem inderdaad nog nt kunnen testen online. Ik hoop dat het enkel daaraan ligt. Er heeft precies niemand opmerkingen op mijn code. Ik veronderstel dat er geen fouten inzitten? Want ik ken er werkelijk zeer weinig van!

SideShow

Legacy Member
Ge steekt variabelen vol, ge controleert ze, ge stelt een string samen en ge mailt .... niet zo veel mis mee inderdaad.... maar toegeven uw code is niet de mooiste al gezien nee

Toch iets dan: volgens mij maak je het nodeloos gecompliceerd ... heb je echt wel een referer en 20 andere zaken nodig als ge een mail leest? .... Een mail sturen kan eigenlijk met 5 lijntjes ofzo.
Plus: je controleert niet als de mailfunctie wel degelijk gelukt is

el shorty

Legacy Member
als je het thuis gebruikt en test, moet je thuis een php server staan hebben (bvb apache + php module)
vbn: wamp, xamp etc. Anders kan windows je php bestand niet lezen en interpreteren.

Elsje1986

Legacy Member
Als ik m'n site online test omtrent die e-mailverwerking krijg ik de volgende foutmelding:
Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126

De site staat trouwens online op: Fotoboek - Els Lapere > Home

Als je opmerkingen of tips hebt op m'n site anderzijds, altijd welkom! Want ik ben hier pas een dikke maand mee bezig en voorheen kende ik hier niets van! Dus wil ik graag bijleren! ;)

citrofenwick

Legacy Member
Ik heb die site gehost voor haar. Naar mijn weten ondersteunt deze webspace php, dus dat zou geen probleem mogen zijn. In de map waar het php-bestand zich bevindt staat er een errorlog met het volgende in:

[22-Feb-2009 11:47:31] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 11:48:11] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 11:49:18] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 11:54:52] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 12:02:23] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 12:08:31] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 12:23:53] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126
[22-Feb-2009 12:25:40] PHP Parse error: syntax error, unexpected '=' in /home/zwammer/public_html/citrofenwick/els/Contact/verwerking.php on line 126

(verder ken ik bitterweinig van al die php-toestanden en zal ik me niet verder bemoeien :p)

tha_rippa1be

Legacy Member
$E-Mail = $_POST['E-Mail']; //lijn 3
$EMail = $_POST['E-Mail'];
uiteraard de rest dan ook aanpassen waar ge die variabele gebruikt.

(nu krijgk ergens een fout op lijn 45, ben aant zien wat daar fout is)

-edit-
op lijn 44 zijt ge een ')' vergeten
dan 2 lijnen eronder een ';' achter de print statement

PHP:
<?php 
$name            = $_POST['name']; 
$EMail            = $_POST['E-Mail']; 
$message        = $_POST['msg']; 
$paginanaam        = $_POST['paginanaam']; 
$ip                = $_POST['ip']; 
$browser        = $_POST['browser']; 
$referer        = $_POST['referer']; 
$scriptname        = $_POST['scriptname']; 

$ip2            = $_SERVER["REMOTE_ADDR"]; 
$browser2        = $_SERVER['HTTP_USER_AGENT']; 
$referer2        = $_SERVER['HTTP_REFERER']; 
$scriptname2    = $_SERVER['SCRIPT_NAME']; 

$jaar = date("Y"); 
$maand = date("m"); 
$dag = date("d"); 
$datum = $dag . " " . $maand . " " . $jaar; 
$tijd = time("t"); 

$mijnadres = "[email protected]"; 

$mijnsite = "www.fotoboek-elslapere.be"; 

$xmail = array 
("@cepk.info", "@ceprk.info", "@gawab.com", "@mail.ru", "@yandex.com", "@gates.com"); 
$xmaildomein = ""; 

function is_substr($needle, $haystack){ 
        $pos = strpos($haystack, $needle); 
         
          if ($spos === false) { 
                 return false; 
        } else { 
                 return true; 
          } 
          } 

          if ( ( !$E-Mail ) || 
                  ( strlen($_POST['E-Mail']) > 200 ) || 
             ( !preg_match ("#^[A-Za-z0-9](([_\.\-]? 
[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*) 
\.([A-Za-z] {2,})$#", $EMail) )) 
           { 
                      print "Fout: Ongeldig E-Mail Adres";
                    exit; 
           } 
            
           foreach ($xmail as $xmaildomein) { 
           if ( is_substr 
                    ($xmaildomein,$EMail)) 
             { 
                       print "Fout: Ongewenst E-Mail Adres"; 
                    exit; 
           } 
           } 
          
           if ( is_substr("http",$message)) 
           { 
                     print "Fout: gebruik geen http in je bericht"; 
                    exit; 
           } 
           
           if ( $referer !="") 
           { 
           if ( !eregi("^http:",$referer ) ) 
           { 
                     print "Fout: Ongeldige referer"; 
                    exit; 
           } 
           if ( is_substr(" ",$referer)) 
           { 
                    print "Fout: Ongeldige referer"; 
                    exit; 
           } 
           } 
            
           if ( ( !$name ) || 
           ( strlen($name) > 100 ) || 
              ( preg_match("/[:=@\<\>]/", $name) )  
           ) 
           {  
                    print "Fout: Ongeldige Naam";  
                    exit;  
           } 
           if ( preg_match("#cc:#i", $message, $matches) ) 
           { 
                       print "Fout: Ongeldig Header Field gevonden"; 
                    exit; 
           } 
           if ( !$message ) 
           { 
                       print "Fout: Geen bericht"; 
                    exit; 
           } 
           if ( !$scriptname ) 
           { 
                       print "Fout: Ongeldige toegang"; 
                    exit; 
           } 
           if ( !$browser ) 
           { 
                       print "Fout: Ongeldige toegang"; 
                    exit; 
           } 
           if ( $browser != $browser2 ) 
           { 
                       print "Fout: Ongeldige toegang"; 
                    exit; 
           } 
           if ( $ip != $ip2 ) 
           { 
                       print "Fout: Ongeldige toegang"; 
                    exit; 
           } 
           if (eregi("\r", $EMail) || eregi("\n", $EMail)) 
           { 
                       print "Fout: Ongeldig E-Mail Adres"; 
           } 
           if (FALSE) { 
                       print "Fout: Je kunt geen bericht sturen naar een adres op het zelfde domein."; 
                    exit; 
           } 
           $headers = "Content-Type: text/plain; harset=iso-8859-1\n"; 
           $headers .= "Van: bezoeker [email protected]>\n"; 
           $recipient            = $mijnadres; 
           $subject = "Contact via $mijnsite $datum $tijd"; 
           $mssg = "Via: $paginanaam $scriptname $referer2\n"; 
           $mssg     .= "Browser: $browser\n"; 
           $mssg    .= "Referer: $referer\n"; 
           $mssg    .= "Verwerking: $scriptname2\n"; 
           $mssg    .= "=== AFZENDER ========\n"; 
           $mssg    .= "$name <$E-Mail> IP-adres: $ip\n"; 
           $mssg .= "=== BEGIN BERICHT ======\n\n"; 
           $mssg .= "$message\n\n"; 
           $mssg .= "=== EINDE BERICHT ======\n"; 
           $message = $mssg; 
           mail($recipient, $subject, $message, $headers); 
           header("location: http://www.startspace.nl/dankjewelvoorjebericht.php"); 
?>

die code krijgt geen errors meer hier (kweet wel niet of ze werkt gelijk ge wilt, maar het geeft al geen errors meer)

Zijt ge in kladblok aant werken toevallig?
Ik zou een betere IDE zoeken, deze (typ)fouten kunt ge makkelijk vermijden.

Tyfius

Legacy Member
Er staat al minstens 1 fout in:
PHP:
$E-Mail            = $_POST['E-Mail'];
Je mag geen '-' teken in de naam van een variabele gebruiken, maak daar dus al eens gewoon het volgende van:
PHP:
$Email            = $_POST['E-Mail'];
Vergeet dit ook niet aan te passen in de rest van het script.

citrofenwick

Legacy Member
ik heb zonet even snel die code vervangen door de code die tha_rippa1be voorstelde en nu geeft ze geen fouten meer, maar het mailtje wordt nog niet verstuurd. Hij zegt dat het emailadres ongeldig is.
Fout: Ongeldig E-Mail Adres
Als ik dan dit delete:
PHP:
          if ( ( !$EMail ) || 
                  ( strlen($_POST['E-Mail']) > 200 ) || 
             ( !preg_match ("#^[A-Za-z0-9](([_\.\-]? 
[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*) 
\.([A-Za-z] {2,})$#", $EMail) )) 
           { 
                      print "Fout: Ongeldig E-Mail Adres";
                    exit; 
           }
Dan geeft hij de fout op de controle eronder:

PHP:
  foreach ($xmail as $xmaildomein) { 
           if ( is_substr 
                    ($xmaildomein,$EMail)) 
             { 
                       print "Fout: Ongewenst E-Mail Adres"; 
                    exit; 
           } 
           }

Telkens als ik dus een controle verwijder, geeft hij de fout op de controle eronder.

Naar mijn weten had ze het script overgetypt in DW cs4.

tha_rippa1be

Legacy Member
citrofenwick zei:
ik heb zonet even snel die code vervangen door de code die tha_rippa1be voorstelde en nu geeft ze geen fouten meer, maar het mailtje wordt nog niet verstuurd. Hij zegt dat het emailadres ongeldig is.

Als ik dan dit delete:
PHP:
          if ( ( !$EMail ) || 
                  ( strlen($_POST['E-Mail']) > 200 ) || 
             ( !preg_match ("#^[A-Za-z0-9](([_\.\-]? 
[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*) 
\.([A-Za-z] {2,})$#", $EMail) )) 
           { 
                      print "Fout: Ongeldig E-Mail Adres";
                    exit; 
           }
Dan geeft hij de fout op de controle eronder:

PHP:
  foreach ($xmail as $xmaildomein) { 
           if ( is_substr 
                    ($xmaildomein,$EMail)) 
             { 
                       print "Fout: Ongewenst E-Mail Adres"; 
                    exit; 
           } 
           }

Telkens als ik dus een controle verwijder, geeft hij de fout op de controle eronder.

Naar mijn weten had ze het script overgetypt in DW cs4.

foutje in de functie is_substr
if ($spos === false) {
moet zijn:
if ($pos === false) {

Elsje1986

Legacy Member
Bedankt voor alle tips tot noch toe!
Heb een nieuw script geprobeerd en dat lukt! ;)
Alleen is het er eentje zonder spamcontrole. Mr 't zou toch wel handig zijn als er wel spamcontrole op zat. Dus heb ik geprobeerd om de spam-controle uit het vorige script over te nemen. Maar zonder succes. Ik krijg opnieuw foutmelding: "Fout: ongeldig e-mailadres." En als ik de spamcontrole er terug uithaal lukt het mailen vanuit de site opnieuw perfect!


PHP:
// ongewenste emaildomeinen in een array:
$xmail = array("@cepk.info", "ceprk.info", "@gawab.com", "@mail.ru", "@yandex.com", "@gates.com");
$xmaildomein = "";

function is_substr($needle, $haystack){ 
        $pos = strpos($haystack, $needle); 
 
        if ($pos === false) { 
                return false; 
        } else { 
                return true; 
        } 
}

	// Fouten en veiligheidscontroles
	if ( ( !$email ) ||
		 ( strlen($_POST['email']) > 200 ) ||
	     ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) )
       ) 
	{ 
		print "Fout: Ongeldig E-Mail Adres"; 
		exit; 
	} 
	
	// ongewenste emaildomeinen filteren
	foreach ($xmail as $xmaildomein) {
		if ( is_substr($xmaildomein,$email))
		{
			print "Fout: Ongewenst E-Mail Adres";
			exit;
		}	
	}
	
	// filteren op http 
	if ( is_substr("http",$message))
	{
		print "Fout: Gebruik geen http in je bericht";
		exit;
	}	

	// referer controleren op geldigheid
	if  ( $referer != "")
	{
		if ( !eregi("^http:",$referer ) )
		{
			print "Fout: Ongeldige referer";
			exit;
		}
		if ( is_substr(" ",$referer))
		{
			print "Fout: Ongeldige referer";
			exit;
		}
	}

	if ( ( !$name ) ||
		 ( strlen($name) > 100 ) ||
		 ( preg_match("/[:=@\<\>]/", $name) ) 
	   )
	{ 
		print "Fout: Ongeldige Naam"; 
		exit; 
	} 
	if ( preg_match("#cc:#i", $message, $matches) )
	{ 
		print "Fout: Ongeldig Header Field Gevonden"; 
		exit; 
	} 
	if ( !$message )
	{
		print "Fout: Geen Bericht"; 
		exit; 
	} 
	if ( !$scriptname )
	{
		print "Fout: Ongeldige toegang"; 
		exit; 
	} 
	if ( !$browser )
	{
		print "Fout: Ongeldige toegang"; 
		exit; 
	} 
	if ( $browser != $browser2 )
	{
		print "Fout: Ongeldige toegang"; 
		exit; 
	} 
	if ( $ip != $ip2 )
	{
		print "Fout: Ongeldige toegang"; 
		exit; 
	} 
	
	if (eregi("\r",$email) || eregi("\n",$email)){ 
		print "Fout: Ongeldig E-Mail Adres"; 
		exit; 
	} 
	if (FALSE) { 
		print "Fout: Je kunt geen bericht sturen naar een adres op hetzelfde domein."; 
		exit; 
	}

Dit is wat ik overnam uit het vorige script? Kan iemand mij helpen om hier een goeie en degelijke spamcontrole van te maken? Of kent iemand een betere spamcontrole of weet waar ik die moet halen ofzo?

Alvast hartelijk dank!

tha_rippa1be

Legacy Member
in u formulier:
Code:
<input type="text" name="E-Mail" size="40" maxlength="100" />
in u script:
Code:
if ( ( !$email ) || 
         ( strlen($_POST['email']) > 200 ) || 
         ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) ) 
       )  
    {  
        print "Fout: Ongeldig E-Mail Adres";  
        exit;  
    }

Als ge echt php probeert te leren probeer dan effe zelf de fout te zoeken, maar als ge gewoon eenmalig een scriptje wilt laten werken kunt ge de spoiler tag openen.
verander $_POST['email'] met $_POST['E-Mail']
waarom? U formulier slaagt de waarde van het email adres op in "E-Mail", niet "email"
Code:
<input type="text" [b]name="E-Mail"[/b] size="40" maxlength="100" />

if ( ( !$email ) || 
         ( strlen([b]$_POST['email'][/b]) > 200 ) || 
         ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) ) 
       )  
    {  
        print "Fout: Ongeldig E-Mail Adres";  
        exit;  
    }

Elsje1986

Legacy Member
tha_rippa1be zei:
in u formulier:
Code:
<input type="text" name="E-Mail" size="40" maxlength="100" />
in u script:
Code:
if ( ( !$email ) || 
         ( strlen($_POST['email']) > 200 ) || 
         ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) ) 
       )  
    {  
        print "Fout: Ongeldig E-Mail Adres";  
        exit;  
    }

Als ge echt php probeert te leren probeer dan effe zelf de fout te zoeken, maar als ge gewoon eenmalig een scriptje wilt laten werken kunt ge de spoiler tag openen.
verander $_POST['email'] met $_POST['E-Mail']
waarom? U formulier slaagt de waarde van het email adres op in "E-Mail", niet "email"
Code:
<input type="text" [b]name="E-Mail"[/b] size="40" maxlength="100" />

if ( ( !$email ) || 
         ( strlen([b]$_POST['email'][/b]) > 200 ) || 
         ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) ) 
       )  
    {  
        print "Fout: Ongeldig E-Mail Adres";  
        exit;  
    }

Die fouten zijn al weggewerkt. Misschien vergat ik het erbij te vermelden. Dat in BEIDE bestanden de scripts zijn gewijzigd.

Formulier ziet er als volgt uit:
HTML:
<FORM METHOD='POST' ACTION='verwerking.php'>
Naam: <br /><input type='text' name='naam' size='35'><br /><br />
Emailadres: <br /><input type='text' name='email' size="35"><br /><br />
Onderwerp: <br /><input type='text' name='onderwerp' size="35"><br /><br />
Bericht: <br /><textarea name='bericht' cols=65 rows=7></textarea><br /><br />
<input class="pointer" type="submit" name="Submit" value="Send" />
<input class="pointer" type="reset" name="Reset" value="Reset" />
</FORM>

en m'n php-code:
PHP:
<?php
$zender_email = $_POST['email'];
$zender_naam = $_POST['naam'];
$onderwerp = $_POST['onderwerp'];
$bericht = $zender_naam . ' stuurde u hetvolgende bericht: ' . $_POST['bericht'];
$bestemmeling = '[email protected]';

if(mail($bestemmeling,$onderwerp, $bericht,
     'From: Fotoboek - Els Lapere' .
     'X-Mailer: PHP/' . phpversion()))
{ echo 'Uw email werd succesvol verzonden.'; }
else
{ echo 'Er is een fout opgetreden bij het verzenden van de email'; }
?>

Kort en goed. EN ze werken. Alleen van 't moment ik er de spamcontrole van m'n vorig script (zie laatste bericht van mij) er tussenzet zit 'k weer met die foutmelding.

Alvast bedankt voor de hulp!

tha_rippa1be

Legacy Member
Elsje1986 zei:
Die fouten zijn al weggewerkt. Misschien vergat ik het erbij te vermelden. Dat in BEIDE bestanden de scripts zijn gewijzigd.

Formulier ziet er als volgt uit:
HTML:
<FORM METHOD='POST' ACTION='verwerking.php'>
Naam: <br /><input type='text' name='naam' size='35'><br /><br />
Emailadres: <br /><input type='text' name='email' size="35"><br /><br />
Onderwerp: <br /><input type='text' name='onderwerp' size="35"><br /><br />
Bericht: <br /><textarea name='bericht' cols=65 rows=7></textarea><br /><br />
<input class="pointer" type="submit" name="Submit" value="Send" />
<input class="pointer" type="reset" name="Reset" value="Reset" />
</FORM>

en m'n php-code:
PHP:
<?php
$zender_email = $_POST['email'];
$zender_naam = $_POST['naam'];
$onderwerp = $_POST['onderwerp'];
$bericht = $zender_naam . ' stuurde u hetvolgende bericht: ' . $_POST['bericht'];
$bestemmeling = '[email protected]';

if(mail($bestemmeling,$onderwerp, $bericht,
     'From: Fotoboek - Els Lapere' .
     'X-Mailer: PHP/' . phpversion()))
{ echo 'Uw email werd succesvol verzonden.'; }
else
{ echo 'Er is een fout opgetreden bij het verzenden van de email'; }
?>

Kort en goed. EN ze werken. Alleen van 't moment ik er de spamcontrole van m'n vorig script (zie laatste bericht van mij) er tussenzet zit 'k weer met die foutmelding.

Alvast bedankt voor de hulp!

Ge steekt de email variabele die ge aankrijgt in $zender_email:
$zender_email = $_POST['email'];

maar ge gaat controleren op $email:
if ( ( !$email ) ...


zelfde voor nog een paar variabelen die ge hebt veranderd in het begin maar niet in de spamcontrole.
zender_naam -> name
bericht -> message

en in de controle zaten ook nog een paar controles die gedaan werden op variabelen waar geen waarde was aan toegekend ( if($ip == $ip2) ) ..
enz, die heb ik er effe tussenuit gelaten.

HTML:
<FORM METHOD='POST' ACTION='verwerking.php'>
Naam: <br /><input type='text' name='naam' size='35'><br /><br />
Emailadres: <br /><input type='text' name='email' size="35"><br /><br />
Onderwerp: <br /><input type='text' name='onderwerp' size="35"><br /><br />
Bericht: <br /><textarea name='bericht' cols=65 rows=7></textarea><br /><br />
<input class="pointer" type="submit" name="Submit" value="Send" />
<input class="pointer" type="reset" name="Reset" value="Reset" />
</FORM>
PHP:
<?php 
$email = $_POST['email']; 
$name = $_POST['naam']; 
$onderwerp = $_POST['onderwerp']; 
$message = $name . ' stuurde u hetvolgende bericht: ' . $_POST['bericht']; 
$bestemmeling = '[email protected]'; 
$referer = $_SERVER['HTTP_REFERER'];

// ongewenste emaildomeinen in een array: 
$xmail = array("@cepk.info", "ceprk.info", "@gawab.com", "@mail.ru", "@yandex.com", "@gates.com"); 
$xmaildomein = ""; 

function is_substr($needle, $haystack){  
        $pos = strpos($haystack, $needle);  
  
        if ($pos === false) {  
                return false;  
        } else {  
                return true;  
        }  
} 

    // Fouten en veiligheidscontroles 
    if ( ( !$email ) || 
         ( strlen($_POST['email']) > 200 ) || 
         ( !preg_match("#^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$#", $email) ) 
       )  
    {  
        print "Fout: Ongeldig E-Mail Adres";  
        exit;  
    }  
     
    // ongewenste emaildomeinen filteren 
    foreach ($xmail as $xmaildomein) { 
        if ( is_substr($xmaildomein,$email)) 
        { 
            print "Fout: Ongewenst E-Mail Adres"; 
            exit; 
        }     
    } 
     
    // filteren op http  
    if ( is_substr("http",$message)) 
    { 
        print "Fout: Gebruik geen http in je bericht"; 
        exit; 
    }     

    // referer controleren op geldigheid 
    if  ( $referer != "") 
    { 
        if ( !eregi("^http:",$referer ) ) 
        { 
            print "Fout: Ongeldige referer"; 
            exit; 
        } 
        if ( is_substr(" ",$referer)) 
        { 
            print "Fout: Ongeldige referer"; 
            exit; 
        } 
    } 

    if ( ( !$name ) || 
         ( strlen($name) > 100 ) || 
         ( preg_match("/[:=@\<\>]/", $name) )  
       ) 
    {  
        print "Fout: Ongeldige Naam";  
        exit;  
    }  
    if ( preg_match("#cc:#i", $message, $matches) ) 
    {  
        print "Fout: Ongeldig Header Field Gevonden";  
        exit;  
    }  
    if ( !$message ) 
    { 
        print "Fout: Geen Bericht";  
        exit;  
    }  
    /*if ( !$scriptname ) 
    { 
        print "Fout: Ongeldige toegang";  
        exit;  
    }
    if ( !$browser ) 
    { 
        print "Fout: Ongeldige toegang";  
        exit;  
    }  
    if ( $browser != $browser2 ) 
    { 
        print "Fout: Ongeldige toegang";  
        exit;  
    }  
    if ( $ip != $ip2 ) 
    { 
        print "Fout: Ongeldige toegang";  
        exit;  
    }*/  
     
    if (eregi("\r",$email) || eregi("\n",$email)){  
        print "Fout: Ongeldig E-Mail Adres";  
        exit;  
    }  
    if (FALSE) {  
        print "Fout: Je kunt geen bericht sturen naar een adres op hetzelfde domein.";  
        exit;  
    }


if(mail($bestemmeling, $onderwerp, $message,
	'From: Fotoboek - Els Lapere' . 
	'X-Mailer: PHP/' . phpversion())){ 
	echo 'Uw email werd succesvol verzonden.'; 
}else{
	echo 'Er is een fout opgetreden bij het verzenden van de email';
} 
?>

Dat werkte compleet bij mij.

Elsje1986

Legacy Member
Hellow,

Ik ben er in geslaagd om e-mails te verzenden vanuit m'n site! :D Maar alleen gebeurt het niet zoals het moet. Mijn e-mailscript zonder de spamcontrole werkt zoals het moet. Maar van het moment ik mijn spamcontrole toevoeg gebeurt alles averechts:

Vb, als ik een e-mail wil zenden, maar ik vergeet mijn bericht in te vullen -> dan zegt hij: "u bent vergeten uw bericht in te vullen" en zendt dan toch de mail door!
En wanneer ik alles goed doe, zegt hij ook: "uw bericht is succesvol verstuurd!" maar dan ontvang ik niets in mijn mailbox. :s
Het is maar de tijdcontrole van 3minuten tegen spammers die het goed doet.

Mijn site staat online op Fotoboek - Els Lapere > Home

Waar zit mijn fout? :help:
Dit is mijn code:

PHP:
<?php 
    $naam = $_POST['naam']; 
    $voornaam = $_POST['voornaam']; 
    $email = $_POST['email']; 
    $onderwerp = $_POST['onderwerp']; 
    $bericht = $_POST['bericht']; 

                            $recipient=("[email protected]"); 
$subject="Gestuurd via fotoboek-elslapere.be"; 

$content= "\nNaam: ".$naam. 
        "\nE-mail: ".$email. 
        "\nOnderwerp: ".$onderwerp. 
        "\nBericht: ".$bericht. 
        $message;  

ob_start(); 


header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 
header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

// Config Gedeelte 
$site = "http://www.fotoboek-elslapere.be";    // Site waarnaar je terug gaat als je een bericht hebt achtergelaten 
$wm_naam = "Els";                // Webmaster naam 
$wm_email = "[email protected]";        // Webmaster E-mail 
$Anti_Spam = "3";                    // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten ) 
$fout_text = TRUE;                    // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit ) 
$fout_vakje = TRUE;                    // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit ) 
$html = TRUE;                        // Een HTML email 


$ip = $_SERVER['REMOTE_ADDR'];      
$host = gethostbyaddr($ip);          


function checkmail($email) 
{ 
    $email_host = explode("@", $email); 
    $email_host = $email_host[1]; 
    $email_resolved = gethostbyname($email_host); 
    
    if($email_resolved == $email_host) 
    { 
        $valid = FALSE; 
    } 
    if (eregi("^[0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email)) 
    { 
        $valid = TRUE; 
    } 
    else 
    { 
        $valid = FALSE; 
    } 
    return $valid; 
} 

// kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond. 
if(!isset($_COOKIE['mailformulier'])) 
{ 
    if(isset($_POST['wis'])) 
    { 
        foreach ($_POST as $key => $value) 
        { 
            unset($value); 
        } 
        header("Location: ".$_SERVER['PHP_SELF'].""); 
    } 
    // Alles Controleren Wanneer er op Verzenden wordt gedrukt 
    if(isset($_POST['verzenden'])) 
    {        
        $naam = trim($_POST['naam']); 
        $email = trim($_POST['email']); 
        $onderwerp = trim($_POST['onderwerp']); 
        $bericht = trim($_POST['bericht']); 
        $fout = ""; 

        if($html) 
        { 
            // Headers 
            $headers = "From: \"Contact Formulier\" <".$wm_email.">\r\n"; 
            $headers .= "Reply-To: \"".$naam."\" <".$email.">\n"; 
            $headers .= "Return-Path: Mail-Error <".$wm_email.">\n"; 
            $headers .= "MIME-Version: 1.0\n"; 
            $headers .= "Content-Transfer-Encoding: 8bit\n"; 
            $headers .= "Content-type: text/html; charset=iso-8859-1\n"; 
                
            // Bericht 
            $message = " 
            <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\"> 
            <html> 
            <head> 
            <style type=\"text/css\"> 
            body { 
            border-right: 5px; 
            border-top: 5px; 
            border-left: 5px; 
            border-bottom: 5px; 
            font: 10px Verdana, Arial, Helvetica, sans-serif; 
            } 
            table { 
            font: 10px Verdana, Arial, Helvetica, sans-serif; 
            } 
            table, a:link { 
            color: #000; 
            text-decoration: none; 
            } 
            table, a:visited { 
            color: #000; 
            text-decoration: none; 
            } 
            table, a:hover { 
            color: #000; 
            font-weight: bold; 
            text-decoration: none; 
            } 
            </style> 
            </head> 
            
            <body> 
            <br /> 
            <table> 
            <tr><td>Naam:</td><td>".$naam."</td></tr> 
            <tr><td>Email:</td><td><a href=\"mailto:".$email."\">".$email."</a></td></tr> 
            <br /> 
            <tr><td>Bericht:</td><td>".$bericht."</td></tr> 
            <tr><td colspan=\"2\">&nbsp;</td></tr> 
            <br /> 
            <tr><td>Datum:</td><td>".date("d-m-Y H:i:s")."</td></tr> 
            <tr><td>IP:</td><td><a href=\"http://sunny.nic.com/cgi-bin/whois?domain=".$ip."\">".$ip."</a></td></tr> 
            <tr><td>Host:</td><td>".$host."</td></tr> 
            </table> 
            
            </body> 
            </html>"; 
            
        } 
        else 
        { 
            $bericht_wrap = wordwrap ($bericht, 40, "\n", 1); 
            // Headers 
            $headers = "From: \"Contact Formulier\" <".$wm_naam.">\n"; 
            $headers .= "MIME-Version: 1.0\n"; 
            $headers .= "Content-type: text/plain; charset='iso-8859-1'\n"; 
        
            // Bericht 
            $message = "Naam: ".$naam."        \n"; 
            $message .= "E-mail: ".$email."     \n"; 
            $message .= "Bericht:\n".$bericht_wrap."     \n "; 
            $message .= "               \n "; 
            $message .= "Datum: ".date("d-m-Y H:i:s")." \n"; 
            $message .= "------------------------------------------------------- \n "; 
            $message .= "IP: ".$ip."                    \n "; 
            $message .= "Host: ".$host."                \n "; 
        
        } 
        if((empty($naam)) OR (strlen($naam) < 3) OR (eregi("[<>]", $naam))) 
        { 
            $fout .= "U bent vergeten uw naam in te vullen! <br />"; 
            unset($naam); 
            $fout_vakje_naam = "input_fout"; 
            $fout_text_naam = "text_fout"; 
        } 
        if((empty($email)) OR (strlen($email) < 7) OR (eregi("[<>]", $email))) 
        { 
            $fout .= "U bent vergeten uw e-mail adres in te vullen! <br />"; 
            unset($email); 
            $fout_vakje_email = "input_fout"; 
            $fout_text_email = "text_fout"; 
        } 
        elseif(checkmail($email) == 0) 
        { 
            $fout .= "Vul een correct e-mail adres in! <br />"; 
            unset($email); 
            $fout_vakje_email = "input_fout"; 
            $fout_text_email = "text_fout"; 
        } 
        if((empty($onderwerp)) OR (strlen($onderwerp) < 3) OR (eregi(">", $onderwerp)) ) 
        { 
            $fout .= "U bent vergeten een onderwerp in te vullen! <br />"; 
            unset($onderwerp); 
            $fout_vakje_onderwerp = "input_fout"; 
            $fout_text_onderwerp = "text_fout"; 
        } 
        if(empty($bericht)) 
        { 
            $fout .= "U bent vergeten een bericht in te vullen! <br />"; 
            unset($bericht); 
            $fout_vakje_bericht = "input_fout"; 
            $fout_text_bericht = "text_fout"; 
        } 
        elseif(strlen($bericht) < 6) 
        { 
            $fout .= "Uw bericht is tekort! <br />"; 
            $fout_vakje_bericht = "input_fout"; 
            $fout_text_bericht = "text_fout"; 
        } 
        if(!$fout_text) 
        { 
            unset($fout_text_naam); 
            unset($fout_text_email); 
            unset($fout_text_onderwerp); 
            unset($fout_text_bericht); 
        } 
        if(!$fout_vakje) 
        { 
            unset($fout_vakje_naam); 
            unset($fout_vakje_email); 
            unset($fout_vakje_onderwerp); 
            unset($fout_vakje_bericht); 
        } 
        if(!empty($fout)) 
        { 
            echo "\n<p style=\"color:#FF0000;\">\n".$fout."<br />\n</p>\n"; // Weergeven van de fout(en) 
        } 
        else 
        { 
            mail($wm_email,$onderwerp,$message,$headers); 
    
            // Bericht als mail succesvol is verzonden 
            echo "<head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"></head>"; 
            echo "<br /><p style=\"text-align: center;\">Uw contact bericht is succesvol verzonden!<br />"; 
            echo "Ik beantwoord uw berichtje zo snel mogelijk.<br /><br />"; 
        
    
            // cookie zetten tegen spam 
            setcookie("mailformulier",1,time()+($Anti_Spam*60)); 
    
            // formulier wordt niet weer getoond 
            $Formulier = TRUE; 
    
            header("refresh:3;url=".$site.""); 
        } 
    } 
} 
else { 
    $Formulier = FALSE; 
    echo "<html><head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\" /></head><body>"; 
    echo "<p style=\"text-align: center;\"><h2> Spam Beveiliging </h2><br />"; 
    echo "U kunt maar eens in de $Anti_Spam minuten een e-mail versturen!</p></body></html>"; 
    header("refresh:3;url=".$site.""); 
} 

if(!isset($Formulier)) 

mail($recipient, $subject, $content);  

echo "Kom gerust nog eens langs!";  
?>

Alvast hartelijk dank voor de hulp! ;)

Véle groetjes, Els
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan