MNelding alle velden niet ingevuld

Status
Niet open voor verdere reacties.

Tinustya

Gebruiker
Lid geworden
20 jan 2008
Berichten
32
Hallo ,


Ik heb een aanmeldingsform proberen te maken voor een site .
Maar nu krijg ik ( als ik op de knop versturen klik) constant de melding dat niet alle velden zijn ingevuld.

Kan iemand de fout ergens vinden. Ik ben nu ff de draad kwijt.



PHP:
<?php


$mail_ontv = "";


function checkmail($mail) 
{ 
    $email_host = explode("@", $mail); 
    $email_host = $email_host['1']; 
    $email_resolved = gethostbyname($email_host); 

    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail)) 
        $valid = 1; 

    return $valid; 
} 


if (!$_POST['submit'] || $_POST['submit'] && (!$_POST['naam'] || !$_POST['mail'] || !checkmail($_POST['Naam']) || !$_POST['Postc'] || !$_POST['Opm'] || !$_POST['Straat+'] || !$_POST['Plaats'] || !$_POST['Gb'])) 
{ 
    if ($_POST['submit'] && (!$_POST['naam'] || !$_POST['Straat+'] || !checkmail($_POST['Straat+']) || !$_POST['Opm'] || !$_POST['Postc'] || !$_POST['Gb'] || !$_POST['Plaats']))   
    { 
        echo "Je bent iets vergeten in te vullen. Ook als je geen opmerking hebt, vul hier dan in"; 
        echo " 'geen dieet', of 'geen opmerking  <p>"; 
    } 
      
    // form + tabel 
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">"; 
    echo "<form method=\"POST\" ACTION=\"" . $_SERVER['PHP_SELF'] . "\">"; 
      
    // naam 
    echo "<tr><td>Naam (Voornaam & Achternaam):</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>"; 
      

    echo "<tr><td>&nbsp;</td></tr>"; 
      
 
    echo "<tr><td>Straat + Nr:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"Straat+\" value=\"" . $_POST['Straat+'] . "\"></td></tr>"; 
      
 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
  
    echo "<tr><td>Postcode:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"Postc\" value=\"" . $_POST['Postc'] . "\"></td></tr>"; 

    echo "<tr><td>&nbsp;</td></tr>"; 
      
  
    echo "<tr><td>Plaats:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"Plaats\" value=\"" . $_POST['Plaats'] . "\"></td></tr>";      
 
    echo "<tr><td>&nbsp;</td></tr>"; 
    
        echo "<tr><td>Geboortedatum:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"Gb\" value=\"" . $_POST['GB'] . "\"></td></tr>"; 
      
 
    echo "<tr><td>&nbsp;</td></tr>"; 
    
        echo "<tr><td>Telefoonnummer:</td></tr>"; 
    echo "<tr><td><input type=\"text\" name=\"Tel\" value=\"" . $_POST['Tel'] . "\"></td></tr>"; 
      
 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
 
    echo "<tr><td>Opmerking/dieet:</td></tr>"; 
    echo "<tr><td><TEXTAREA name=\"Opm\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>"; 
      
 
    echo "<tr><td>&nbsp;</td></tr>"; 
      
 
    echo "<tr><td>&nbsp;</td></tr>"; 
    echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>"; 
      
 
    echo "</form>"; 
    echo "</table>"; 
} 
 
else 
{      
  
    $datum = date("d.m.Y H:i"); 
      
  
    $ip = $_SERVER['REMOTE_ADDR']; 
      
    $inhoud_mail = "===================================================\n"; 
    $inhoud_mail .= "Ingevulde contact formulier\n"; 
    $inhoud_mail .= "===================================================\n\n"; 
    
    $inhoud_mail .= $_SERVER['SCRIPT_URI'] . "\n\n";

    $inhoud_mail .= "Naam: " . $_POST['naam'] . "\n"; 
    	$inhoud_mail .= "Straat + Nr: " . $_POST['Straat+'] . "\n"; 
        	$inhoud_mail .= "Postcode: " . $_POST['Postc'] . "\n"; 
            	$inhoud_mail .= "Plaats: " . $_POST['Plaats'] . "\n";
					$inhoud_mail .= "Geboortedatum: " . $_POST['Gb'] . "\n"; 
             	   		$inhoud_mail .= "Telefoonnummer: " . $_POST['Tel'] . "\n"; 
                     
    $inhoud_mail .= "Opmerking:\n"; 
    $inhoud_mail .= $_POST['Opm'] . "\n\n"; 
      
    $inhoud_mail .= "Verstuurd op " . $datum . " via het ip " . $ip . "\n\n"; 
      
    $inhoud_mail .= "===================================================\n\n"; 
    
    
    $headers = "From: " . $_POST['naam'] . " <" . $_POST['mail'] . ">";
    
    $headers = stripslashes($headers);
    $headers = str_replace("\n", "", $headers); 
    $headers = str_replace("\r", "", $headers);
    $headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); 
    
    $_POST['onderwerp'] = str_replace("", "", $_POST['onderwerp']); 
    $_POST['onderwerp'] = str_replace("", "", $_POST['onderwerp']);
    $_POST['onderwerp'] = str_replace("", "\\\"", str_replace("", "\\\\", $_POST['onderwerp']));
     
    mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers); 
     
     "<h1>Je e-mail is verstuurd</h1>";
    
    echo "<p>Bedankt voor het aanmelden voor de Summerschool. Je aanmelding is pas compleet als "; 
    echo "de betaling voltooid is .</p>"; 
     
    echo "<p>De betalings gegevens kun je vinden op <a>http://www.focolare.nl/summerschool</a> "; 
    echo "Tot GAUW</p>"; 
    }
?>
Mod: Graag PHP-tags om je code heen zetten.
 
Laatst bewerkt door een moderator:
Ten eerste: gebruik enkele quotes voor echo's en andere php functie, en dubbele quotes voor html. Dan hoef je niet te escapen (let hierbij wel op dat een variabele $hoi bij een echo niet geparsed worden met enkele quotes, en je output dus $hoi zal zijn, en niet de inhoud van hoi.)

Zo dus:
PHP:
<?php
echo '<a href = "www.bla.nl">Link</a>';
?>

Ten tweede, je haalt alle variabelen weer terug naar de input fields als niet alles ingevuld is. Zeker netjes om te doen, scheelt een hoop gestress bij veel mensen.
Echter, je bent bij Gb niet consistent met hoofdletters, zie regel 59. Dit is sowieso een goede reden om bij variabelen en POST en dat soort dingen altijd met kleine letters te werken, dan heb je zulke foutjes niet.
Opmerkingen wordt ook niet goed teruggehaald. Je doet POST['mssgs'] terwijl de textarea 'Opm' heet (regel 72).

Ten derde, je doet een checkmail() op Naam en op Straat... Dat geeft natuurlijk altijd een invalid mailadres terug, aangezien je helemaal geen mail invult...

Ten vierde, je wilt een From header versturen door een POST['mail'] te doen. Je vraagt de gebruiker echter nergens om een mailadres. Maar ik neem aan dat je aan dat gedeelte nog niet toe was, want je stelt ook nergens een mailadres in om het naar toe te sturen.

Ten vijfde, $_POST['onderwerp'] = str_replace("", "", $_POST['onderwerp']);. Het is niet heel netjes om een $_POST[] variabele te bewerken en daar weer in op te slaan. Het werkt, maar mooier is het om een nieuwe variabele te maken. Voor regel 128 zou ik nog even een echo zetten.

Zo, ik vind het gezegend. Succes ermee. =)
 
Hier is een stukje code, ik ga niet alles voordoen, maar nu kun je al een stukje op weg.
Hij zal nu controleren of alles is ingevuld. Als er nog vragen zijn hoor ik het graag.
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Form</title>
</head>
<body>
<?
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(empty($_POST['naam']) || empty($_POST['Straat']) || empty($_POST['Postc']) || empty($_POST['Plaats']) || empty($_POST['Gb']) || empty($_POST['Tel']) || empty($_POST['Opm']) || empty($_POST['email'])){
?>
<b>Je bent een waarde verkeerd of vergeten in te vullen. Vul deze alsnog juist in.</b>
<table border="0" cellspacing="0" cellpadding="0"><form method="POST" ACTION="<?= $_SERVER['PHP_SELF'] ?>"><tr><td>Naam (Voornaam & Achternaam):</td></tr><tr><td><input type="text" name="naam" value="<?= $_POST['naam'] ?>"></td></tr><tr><td>Email:</td></tr><tr><td><input type="text" name="email" value="<?= $_POST['email'] ?>"></td></tr><tr><td>&nbsp;</td></tr><tr><td>Straat + Nr:</td></tr><tr><td><input type="text" name="Straat" value="<?= $_POST['Straat'] ?>"></td></tr><tr><td>&nbsp;</td></tr><tr><td>Postcode:</td></tr><tr><td><input type="text" name="Postc" value="<?= $_POST['Postc'] ?>"></td></tr><tr><td>&nbsp;</td></tr><tr><td>Plaats:</td></tr><tr><td><input type="text" name="Plaats" value="<?= $_POST['Plaats'] ?>"></td></tr><tr><td>&nbsp;</td></tr><tr><td>Geboortedatum:</td></tr><tr><td><input type="text" name="Gb" value="<?= $_POST['Gb'] ?>"></td></tr><tr><td>&nbsp;</td></tr><tr><td>Telefoonnummer:</td></tr><tr><td><input type="text" name="Tel" value="<?= $_POST['Tel'] ?>"></td></tr><tr><td>&nbsp;</td></tr><tr><td>Opmerking/dieet:</td></tr><tr><td><TEXTAREA name="Opm" ROWS="6" COLS="45"><?= $_POST['Opm'] ?></TEXTAREA></td></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr><tr><td><input type="submit" name="submit" value="Versturen"></td></tr></form></table>
<?
}else{
// Hier moet alles komen als de waarden zijn ingevuld
// Email check zou ik ook doen op het moment dat alles op waardes wordt gecontroleerd
}
}else{
?>
<table border="0" cellspacing="0" cellpadding="0"><form method="POST" ACTION="<?= $_SERVER['PHP_SELF'] ?>"><tr><td>Naam (Voornaam & Achternaam):</td></tr><tr><td><input type="text" name="naam" value=""></td></tr><tr><td>Email:</td></tr><tr><td><input type="text" name="email" value=""></td></tr><tr><td>&nbsp;</td></tr><tr><td>Straat + Nr:</td></tr><tr><td><input type="text" name="Straat" value=""></td></tr><tr><td>&nbsp;</td></tr><tr><td>Postcode:</td></tr><tr><td><input type="text" name="Postc" value=""></td></tr><tr><td>&nbsp;</td></tr><tr><td>Plaats:</td></tr><tr><td><input type="text" name="Plaats" value=""></td></tr><tr><td>&nbsp;</td></tr><tr><td>Geboortedatum:</td></tr><tr><td><input type="text" name="Gb" value=""></td></tr><tr><td>&nbsp;</td></tr><tr><td>Telefoonnummer:</td></tr><tr><td><input type="text" name="Tel" value=""></td></tr><tr><td>&nbsp;</td></tr><tr><td>Opmerking/dieet:</td></tr><tr><td><TEXTAREA name="Opm" ROWS="6" COLS="45"></TEXTAREA></td></tr><tr><td>&nbsp;</td></tr><tr><td>&nbsp;</td></tr><tr><td><input type="submit" name="submit" value="Versturen"></td></tr></form></table>
<?
}
?>
</body>
</html>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan