Contactformulier met php validatie laat zich niet positioneren.

Status
Niet open voor verdere reacties.

Lunast

Gebruiker
Lid geworden
14 mrt 2015
Berichten
8
Ik probeer een contact formulier te maken dat door php gevalideerd wordt (Als ik het goed heb begrepen op het internet is dit een betere validatie dan jQuery omdat php validatie server gericht is en daardoor niet uit te schakelen is.) Maar omdat het php is loop ik tegen het volgende probleem aan. Ik heb een formulier op het internet gevonden en probeer de validatie melding die eerst alleen boven in weergegeven werden in ingave velden weer te geven. Nu ben ik zo ver dat ze boven het desbetreffende veld worden weer gegeven alleen veroorzaakt dit het probleem dat ik de velden niet kan positioneren. Ik vermoed dat doordat ik de php geplaatst heb tussen de html eea anders reageerd dan normaal waardoor ik eea niet kan uitlijnen. Is er iemand die mij kan vertellen wat ik fout doe en hoe ik dit kan oplossen.

Hierbij de desbetreffende code:

PHP:
<?php
//  We gaan de errors in een array bijhouden
$aErrors = array();

if ('POST' == $_SERVER['REQUEST_METHOD']) {
  //  Er zijn gegevens verstuurd naar deze pagina! 

  //  Een naam bevat letters en spaties (minimaal 3)
  if ( !isset($_POST['name']) or !preg_match( '~^[\w ]{3,}$~', $_POST['name'] ) ) {
    $aErrors['name'] = 'Please fill in your name';
  }

  //  Een email-adres is wat ingewikkelder
  if ( !isset($_POST['email']) or !preg_match( '~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~i', $_POST['email'] ) ) {
    $aErrors['email'] = 'Please fill in your e-mail address';
  }

  //  Een adres heeft letters, cijfers, spaties (minimaal 5)
  if ( !isset($_POST['message']) or !preg_match( '~^[\w\d ]{28,}$~', $_POST['message'] ) ) {
    $aErrors['message'] = 'What would you like to share?';
  }

  if ( count($aErrors) == 0 ) {

    //  We hebben alle gegevens

    //  Gegevens verwerken!

    //  Volgende pagina aub
    header('Location: http://www.phpfreakz.nl/someotherpage.php');
    exit();
  }

}

/************************************************************************************************************
* Hier kunnen we een hele grote streep trekken. Alles wat hierboven was, was verwerking van de data, acties *
* bepalen etc. Alles wat hieronder staat, draait alleen maar om de uitvoer en de feedback. Niets hieronder  *
* schrijft dingen naar de database, niets hierboven schrijft iets naar het scherm. Zo houden we het model   *
* van de pagina gescheiden van de weergave!                                                                 *
************************************************************************************************************/

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Forms</title>
    <style type="text/css">
      .errorlist, .error input{
        border: 1px solid #f00;
        background: #fdd;
      }
      form.cmxform fieldset {
        margin-bottom: 10px;
      }
      form.cmxform legend {
        padding: 0 2px;
        font-weight: bold;
      }
      form.cmxform label {
        display: inline-block;
        line-height: 1.8;
        vertical-align: top;
      }
      form.cmxform em {
        font-weight: bold;
        font-style: normal;
        color: #f00;
      }
      form.cmxform label {
        width: 100%; /* Width of labels */
      }
      input {
        width: 80%;
        height: 35px;
        margin-left: auto;
        margin-right: auto;
      }
      .contact {
        width: 100%;
      }
      .formfield {
        width: 80%;
        margin-left: auto;
        margin-right: auto;
      } 
    </style>
  </head>
  <body>
    <div class="contact">
      <div class="formfield">
      <form action="index.php" method="post" class="cmxform">
      
      <p>Please complete the form below. Mandatory fields marked <em>*</em></p>
      
      <fieldset>
        <div class="fieldset">
          <legend>Delivery Details</legend>
            <?php echo isset($aErrors['name']) ? '<div class="error">' : '</div>' ?>
            <?php
              if ( isset($aErrors['name']) and count($aErrors['name']) > 0 ) {
              print '<div class="errorlist">';
                if ( $aErrors['name'] ) {
                print '<div>' . $aErrors['name'] . '</div>';
                }
                print '</div>';
              }
              ?>
           
              <input id="name" name="name" placeholder="What is your name?" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '' ?>" 
              />
          
              <?php echo isset($aErrors['email']) ? '<div class="error">' : '</div>' ?>
              <?php echo isset($aErrors['email']) ? '<div class="error">' : '</div>' ?>
              <?php
              if ( isset($aErrors['email']) and count($aErrors['email']) > 0 ) {
                print '<div class="errorlist">';
                if ( $aErrors['email'] ) {
                print '<div>' . $aErrors['email'] . '</div>';
                }
                print '</div>';
              }
              ?>
          
              <input id="email" name="email" placeholder="email" value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '' ?>" />
          
            <?php echo isset($aErrors['message']) ? '<div class="error">' : '</div>' ?>
              <?php echo isset($aErrors['message']) ? '<div class="error">' : '</div>' ?>
              <?php
              if ( isset($aErrors['message']) and count($aErrors['message']) > 0 ) {
                print '<div class="errorlist">';
                if ( $aErrors['message'] ) {
                print '<div>' . $aErrors['message'] . '</div>';
                }
                print '</div>';
              }
              ?>
          
              <input id="message" name="message" placeholder="message" value="<?php echo isset($_POST['message']) ? htmlspecialchars($_POST['message']) : '' ?>" />
          
              <input type="submit" value="Verstuur" />
          </div>
        </fieldset>
      </form>
      </div>
    </div>
  </body>

</html>

Het contact formulier is te vinden op: http://main-site.nl/index.php

Dank voor de moeite
 
De fout komt omdat u echo('</div>'); doet als er geen errors zijn.

Hierbij het goede script:
PHP:
<?php
//  We gaan de errors in een array bijhouden
$aErrors = array();
 
if ('POST' == $_SERVER['REQUEST_METHOD']) {
  //  Er zijn gegevens verstuurd naar deze pagina! 
 
  //  Een naam bevat letters en spaties (minimaal 3)
  if ( !isset($_POST['name']) or !preg_match( '~^[\w ]{3,}$~', $_POST['name'] ) ) {
    $aErrors['name'] = 'Please fill in your name';
  }
 
  //  Een email-adres is wat ingewikkelder
  if ( !isset($_POST['email']) or !preg_match( '~^[a-z0-9][a-z0-9_.\-]*@([a-z0-9]+\.)*[a-z0-9][a-z0-9\-]+\.([a-z]{2,6})$~i', $_POST['email'] ) ) {
    $aErrors['email'] = 'Please fill in your e-mail address';
  }
 
  //  Een adres heeft letters, cijfers, spaties (minimaal 5)
  if ( !isset($_POST['message']) or !preg_match( '~^[\w\d ]{28,}$~', $_POST['message'] ) ) {
    $aErrors['message'] = 'What would you like to share?';
  }
 
  if ( count($aErrors) == 0 ) {
 
    //  We hebben alle gegevens
 
    //  Gegevens verwerken!
 
    //  Volgende pagina aub
    header('Location: http://www.phpfreakz.nl/someotherpage.php');
    exit();
  }
 
}
 
/************************************************************************************************************
* Hier kunnen we een hele grote streep trekken. Alles wat hierboven was, was verwerking van de data, acties *
* bepalen etc. Alles wat hieronder staat, draait alleen maar om de uitvoer en de feedback. Niets hieronder  *
* schrijft dingen naar de database, niets hierboven schrijft iets naar het scherm. Zo houden we het model   *
* van de pagina gescheiden van de weergave!                                                                 *
************************************************************************************************************/
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Forms</title>
    <style type="text/css">
      .errorlist, .error input{
        border: 1px solid #f00;
        background: #fdd;
      }
      form.cmxform fieldset {
        margin-bottom: 10px;
      }
      form.cmxform legend {
        padding: 0 2px;
        font-weight: bold;
      }
      form.cmxform label {
        display: inline-block;
        line-height: 1.8;
        vertical-align: top;
      }
      form.cmxform em {
        font-weight: bold;
        font-style: normal;
        color: #f00;
      }
      form.cmxform label {
        width: 100%; /* Width of labels */
      }
      input {
        width: 80%;
        height: 35px;
        margin-left: auto;
        margin-right: auto;
      }
      .contact {
        width: 100%;
      }
      .formfield {
        width: 80%;
        margin-left: auto;
        margin-right: auto;
      } 
    </style>
  </head>

<body>
	<div class="contact">
		<div class="formfield">

			<form action="index.php" method="post" class="cmxform">
      
				<p>Please complete the form below. Mandatory fields marked <em>*</em></p>
      
				<fieldset>

					<div class="fieldset"><legend>Delivery Details</legend></div>

					<?php echo isset($aErrors['name']) ? '<div class="error"></div>' : '' ?>
            <?php
              if ( isset($aErrors['name']) and count($aErrors['name']) > 0 ) {
              print '<div class="errorlist">';
                if ( $aErrors['name'] ) {
                print '<div>' . $aErrors['name'] . '</div>';
                }
                print '';
              }
              ?>
           
              <input id="name" name="name" placeholder="What is your name?" value="<?php echo isset($_POST['name']) ? htmlspecialchars($_POST['name']) : '' ?>" 
              />
          
              <?php echo isset($aErrors['email']) ? '<div class="error"></div>' : '' ?>
              <?php echo isset($aErrors['email']) ? '<div class="error"></div>' : '' ?>
              <?php
              if ( isset($aErrors['email']) and count($aErrors['email']) > 0 ) {
                print '<div class="errorlist">';
                if ( $aErrors['email'] ) {
                print '<div>' . $aErrors['email'] . '</div>';
                }
                print '';
              }
              ?>
          
              <input id="email" name="email" placeholder="email" value="<?php echo isset($_POST['email']) ? htmlspecialchars($_POST['email']) : '' ?>" />
          
            <?php echo isset($aErrors['message']) ? '<div class="error"></div>' : '' ?>
              <?php echo isset($aErrors['message']) ? '<div class="error"></div>' : '' ?>
              <?php
              if ( isset($aErrors['message']) and count($aErrors['message']) > 0 ) {
                print '<div class="errorlist">';
                if ( $aErrors['message'] ) {
                print '<div>' . $aErrors['message'] . '</div>';
                }
                print '';
              }
              ?>
          
              <input id="message" name="message" placeholder="message" value="<?php echo isset($_POST['message']) ? htmlspecialchars($_POST['message']) : '' ?>" />
          
              <input type="submit" value="Verstuur" />
          </div>
        </fieldset>
      </form>
      </div>
    </div>
  </body>
 
</html>

MySQL
 
Mysql, dank voor je bericht, dit loste het probleem inderdaad op. Nogmaals dank voor de moeiter

Groet
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan