mail met leeg document bij openen pagina

Status
Niet open voor verdere reacties.

sakamink

Gebruiker
Lid geworden
10 mei 2010
Berichten
15
Ik krijg bij het openen van de pagina in mijn browser al een e-mail met lege velden, zonder dat de gebruiker ook maar iets doet:

===================================================
***
Contactformulier
===================================================

Identificatienummer meubel:
Naam:
Straat:
Huisnummer:
Postcode:
Land:
Telefoonnummer:
G.S.M.:
E-mail:
Fax:

Naam groothandel:
Contactpersoon groothandel:
E-mail groothandel:

Naam installateur:
Contactpersoon installateur:
Omschrijving:


Verstuurd op 21.05.2010

Mijn code start met:
HTML:
<script type="text/javascript">
function MM_validateForm() { //v4.0
  if (document.getElementById){
    var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
    for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
      if (val) { nm=val.name; if ((val=val.value)!="") 
	  { if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@'); if (p<1 || p==(val.length-1)) errors+='- '+nm+' moet een e-mail adres bevatten.\n'; } 
		else if (test!='R') { num = parseFloat(val);
          if (isNaN(val)) errors+='- '+nm+' moet een nummer bevatten.\n';
          if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
            min=test.substring(8,p); max=test.substring(p+1);
            if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
      } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' ontbreekt.\n'; }
    } if (errors) alert('U dient volgende gegevens in te vullen alvorens u uw aangifte kan versturen:\n'+errors);
    document.MM_returnValue = (errors == '');
} }
function MM_popupMsg(msg) { //v1.0
  alert(msg);
}
</script>

</head>

Daarna maak ik mijn layout:

HTML:
<form action="" method="post">
<input type="text" name="ID" id="ID">
//enz enz

//met mijn knop die ervoor moet zorgen dat na klikken de mail verzonden wordt met de ingevulde gegevens
<input name="verzend" type="submit" onClick="MM_validateForm('ID','','R','naam','','R','straat','','R','huisnummer','','RisNum','postcode','','RisNum','gemeente','','R','gsm','','NisNum','email','','NisEmail','fax','','NisNum','emailgg','','NisEmail','Omschrijving','','R')" value="Verzend">
          	
            </span></p>
       	</td>
   	</tr>
</table>
  
</form>

En dan komt de php die ervoor zorgt dat de mail verzonden wordt, ik krijg na het verzenden ook geen bericht dat de mail goed verzonden is. Wanneer ik met een popupmessage werk als behavor dan krijg ik de popup ook wanneer de mail niet verzonden is...

PHP:
<?php 
    // set datum 
    $datum = date("d.m.Y H:i"); 
      
    // set ip 
    //$ip = $_SERVER['***.be'];


$mail_ontv = "***@gmail.com"; 


    $inhoud_mail = "===================================================\n"; 
    $inhoud_mail .= "***\n"; 
	$inhoud_mail .= "Contactformulier\n"; 
    $inhoud_mail .= "===================================================\n\n"; 
    
   // $inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";

    $inhoud_mail .= "Identificatienummer meubel: " . $_POST['ID'] . "\n"; 
    $inhoud_mail .= "Naam: " . $_POST['naam'] . "\n"; 
    $inhoud_mail .= "Straat: " . $_POST['straat'] . "\n"; 
    $inhoud_mail .= "Huisnummer: " . $_POST['huisnummer'] . "\n";
	$inhoud_mail .= "Postcode: " . $_POST['postcode'] . "\n";
	$inhoud_mail .= "Land: " . $_POST['land'] . "\n";
	$inhoud_mail .= "Telefoonnummer: " . $_POST['telefoonnummer'] . "\n"; 
	$inhoud_mail .= "G.S.M.: " . $_POST['gsm'] . "\n";
	$inhoud_mail .= "E-mail: " . $_POST['email'] . "\n";
	$inhoud_mail .= "Fax: " . $_POST['fax'] . "\n\n";
	$inhoud_mail .= "Naam groothandel: " . $_POST['naamgg'] . "\n";
	$inhoud_mail .= "Contactpersoon groothandel: " . $_POST['contactgg'] . "\n";
	$inhoud_mail .= "E-mail groothandel: " . $_POST['emailgg'] . "\n\n";
	$inhoud_mail .= "Naam installateur: " . $_POST['naaminstal'] . "\n";
	$inhoud_mail .= "Contactpersoon installateur: " . $_POST['contactinstal'] . "\n";
	$inhoud_mail .= "Omschrijving: " . $_POST['Omschrijving'] . "\n\n\n";
      
    $inhoud_mail .= "Verstuurd op " . $datum . " via www.***.be \n\n"; 
      
    $inhoud_mail .= "===================================================\n\n"; 

mail($mail_ontv,"Contactformulier klachtmelding",$inhoud_mail);
echo "mail correct verzonden";

?>


2 problemen dus:

- leeg formulier in inbox bij het openen van de pagina in de browser
- geen bevestiging wanneer mail goed verzonden is.


Wie kan mij nu helpen? Alle hulp is welkom:confused:...
 
Je controleert nergens of de gebruiker wel een formulier heeft ingezonden, dus het mailtje wordt altijd verzonden, maar als de gebruiker niets invult, staat er ook geen nuttige info in. Je moet eerst een controle doen of er wel iets te verzenden is:

PHP:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { }
 
Je controleert nergens of de gebruiker wel een formulier heeft ingezonden, dus het mailtje wordt altijd verzonden, maar als de gebruiker niets invult, staat er ook geen nuttige info in. Je moet eerst een controle doen of er wel iets te verzenden is:

PHP:
if ( $_SERVER['REQUEST_METHOD'] == 'POST' ) { }

Frats,
Dank voor de hint, logisch eigenlijk.
Dit werkt prima zo:
PHP:
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{ 
mail($mail_ontv,"Contactformulier klachtmelding",$inhoud_mail);
echo "mail correct verzonden";
}

Alleen komt de mail wel nog binnen als 1 van de verplichte velden niet ingevuld wordt.
De gebruiker krijgt wel een waarschuwing, en keert terug naar de pagina (alles wat hij reeds ingevuld heeft wordt terug blank)
Hoe moet ik programmeren dat niets mag verzonden worden zolang niet alle velden ingevuld zijn?

Ik heb volgende geschreven, maar het werkt niet...
PHP:
if( $_SERVER['REQUEST_METHOD'] == 'POST' &&
   	isset($_POST['ID'], $_POST['naam'], $_POST['straat'], $_POST['huisnummer'], $_POST['postcode'], $_POST['gemeente'], $_POST['land'], $_POST['Omschrijving']))
		{
			echo"Enkele velden zijn niet ingevuld";
		}
	else
		{ 
			mail($mail_ontv,"Contactformulier klachtmelding",$inhoud_mail);
			echo "mail correct verzonden";
		}

Groetjes.
 
Laatst bewerkt:
Twee dingen:

Ten eerste zeg je nu "als veld A, B, C en D bestaan, zeg dan dat je iets vergeten bent in te vullen"

Je kunt een statement omdraaien met een !, dus:

PHP:
if ( isset ( $a ) ) {
  // bestaat
}
else {
  // bestaat niet
}

En:

PHP:
if ( !isset( $a ) ) {
  // bestaat niet
}
else {
  // bestaat
}

Ten tweede controleer je alleen of PHP de namen kent, maar die zijn bekend want ze staan in je formulier. Wat je eigenlijk wil, is controleren of ze ingevuld zijn, en dat doe je zo:

PHP:
if ( !empty( $_POST['veld'] ) && !empty( $_POST['ander_veld'] ) ) {
  // ze zijn niet leeg
}
else {
  // minstens 1 veld is wel leeg
}

Succes :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan