PHP Formulier met verplichte velden foutmeldingen

Pagina: 1
Acties:
  • 535 views

Acties:
  • 0 Henk 'm!

  • Blueflame_Core
  • Registratie: Augustus 2007
  • Laatst online: 20-09 13:20
Ik wil een contact formulier in php geschreven met daarin enkele verplichte velden. Nu heb ik er een van internet geplukt en zelf aangepast, ik krijg alleen wat foutmeldingen. Hopelijk kan iemand me even corrigeren zodat het werkt.

Dit zijn de foutmeldingen:


Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 89

Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 92

Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 95

Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 98

Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 101

Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 104

Notice: Use of undefined constant FILTER_CALLBACK - assumed 'FILTER_CALLBACK' in ... on line 108

Fatal error: Call to undefined function: filter_input_array() in ... on line 116


php code
  1. <?php
  2. ini_set('display_errors', 1);
  3. error_reporting(E_ALL);
  4. session_start();
  5. if($_SERVER['REQUEST_METHOD'] == 'POST')
  6. {
  7. // Declareren van errors en input arrays
  8. $_SESSION['errors'] = array();
  9. $_SESSION['input'] = $_POST;
  10. // Verplichte velden
  11. $aVerplicht = array('voorletters', 'achternaam', 'adres', 'postcode', 'woonplaats', 'telefoonnummer', 'email');
  12. /**
  13. * Controle voorletters
  14. *
  15. * @param string $sVoorletters: de te controleren voorletters
  16. * @return: NULL als voorletters geen geldig formaat heeft, anders $sVoorletters
  17. */
  18. function checkVoorletters($sVoorletters)
  19. {
  20. return preg_match('/^[a-z]$/i', $sVoorletters) ? $sVoorletters : NULL;
  21. }
  22. /**
  23. * Controle achternaam
  24. *
  25. * @param string $sAchternaam: de te controleren achternaam
  26. * @return: NULL als achternaam geen geldig formaat heeft, anders $sAchternaam
  27. */
  28. function checkAchternaam($sAchternaam)
  29. {
  30. return preg_match('/^[a-z]$/i', $sAchternaam) ? $sAchternaam : NULL;
  31. }
  32. /**
  33. * Controle adres
  34. *
  35. * @param string $sAdres: de te controleren adres
  36. * @return: NULL als adres geen geldig formaat heeft, anders $sAdres
  37. */
  38. function checkAdres($sAdres)
  39. {
  40. return preg_match('/^[a-z][[:space:]]?[0-9]$/i', $sAdres) ? $sAdres : NULL;
  41. }
  42. /**
  43. * Postcode controle op geldig formaat
  44. *
  45. * @param string $sPostcode: de te controleren postcode
  46. * @return: NULL als postcode geen geldig formaat heeft, anders $sPostcode
  47. */
  48. function checkPostcode($sPostcode)
  49. {
  50. return preg_match('/^[1-9]{1}[0-9]{3}[[:space:]]?[a-z]{2}$/i', $sPostcode) ? $sPostcode : NULL;
  51. }
  52. /**
  53. * Controle woonplaats
  54. *
  55. * @param string $sWoonplaats: de te controleren woonplaats
  56. * @return: NULL als woonplaats geen geldig formaat heeft, anders $sWoonplaats
  57. */
  58. function checkWoonplaats($sWoonplaats)
  59. {
  60. return preg_match('/^[a-z]$/i', $sWoonplaats) ? $sWoonplaats : NULL;
  61. }
  62. /**
  63. * Controle telefoonnummer
  64. *
  65. * @param string $sTelefoonnummer: de te controleren telefoonnummer
  66. * @return: NULL als telefoonnummer geen geldig formaat heeft, anders $sTelefoonnummer
  67. */
  68. function checkTelefoonnummer($sTelefoonnummer)
  69. {
  70. return preg_match('/^[0-9]{10}$/i', $sTelefoonnummer) ? $sTelefoonnummer : NULL;
  71. }
  72. /**
  73. * Controle email
  74. *
  75. * @param string $sEmail: de te controleren email
  76. * @return: NULL als email geen geldig formaat heeft, anders $sEmail
  77. */
  78. function checkEmail($sEmail)
  79. {
  80. return preg_match('/^[@]$/i', $sEmail) ? $sEmail : NULL;
  81. }
  82. // Definieren van filters voor verschillende inputvelden.
  83. $aFilters = array (
  84. 'voorletters' => array (
  85. 'filter' => FILTER_CALLBACK,
  86. 'options' => 'checkVoorletters' ),
  87. 'achternaam' => array (
  88. 'filter' => FILTER_CALLBACK,
  89. 'options' => 'checkAchternaam' ),
  90. 'adres' => array (
  91. 'filter' => FILTER_CALLBACK,
  92. 'options' => 'checkAdres' ),
  93. 'postcode' => array (
  94. 'filter' => FILTER_CALLBACK,
  95. 'options' => 'checkPostcode' ),
  96. 'woonplaats' => array (
  97. 'filter' => FILTER_CALLBACK,
  98. 'options' => 'checkWoonplaats' ),
  99. 'telefoonnummer' => array (
  100. 'filter' => FILTER_CALLBACK,
  101. 'options' => 'checkTelefoonnummer' ),
  102. 'mobiel' => NULL,
  103. 'email' => array (
  104. 'filter' => FILTER_CALLBACK,
  105. 'options' => 'checkEmail' ),
  106. 'product' => NULL,
  107. 'contact' => NULL,
  108. 'contactpersoon' => NULL
  109. );
  110. // Uitvoeren van de filters en doorlopen van het resultaat
  111. $aResultaat = filter_input_array(INPUT_POST, $aFilters);
  112. foreach($aResultaat as $sKey => $sValue)
  113. {
  114. $sValue = trim($sValue);
  115. if(empty($sValue) && in_array($sKey, $aVerplicht))
  116. {
  117. $_SESSION['errors'][$sKey] = true;
  118. $aErrors[] = 'Je hebt geen geldige '.$sKey.' ingevuld.';
  119. }
  120. }
  121. // Verwerk het formulier als er geen fouten opgetreden zijn.
  122. if(empty($_SESSION['errors']))
  123. {
  124. // Verwerk het formulier:
  125. // vb. Schrijf gegevens naar een database
  126. // vb. Stuur een email met de gegevens
  127. // Stuur gebruiker door naar een volgende pagina.
  128. $aContent[] = '<p><b>Het resultaat, de input:</b></p>';
  129. $aContent[] = '<ul>';
  130. foreach($_SESSION['input'] as $sKey => $sValue)
  131. {
  132. $aContent[] = '<li>'.$sKey.': '.$sValue.'</li>';
  133. }
  134. $aContent[] = '</ul>';
  135. unset($_SESSION['input']);
  136. }
  137. }
  138. ?>
html code
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>stream TRAJECTEN</title>
  6. <meta name="keywords" content="reintegratie, heerenveen, coaching, mediation, activering, friesland, stream trajecten, mediation" />
  7. <link rel="stylesheet" href="/layout.css" type="text/css" />
  8. <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
  9. <style type="text/css">
  10. input.error {
  11. border: 2px solid #FF0000;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <div id="container">
  17. <?php include($_SERVER['DOCUMENT_ROOT'].'/header.php');?>
  18. <?php include($_SERVER['DOCUMENT_ROOT'].'/contactbalk.php');?>
  19. <?php include($_SERVER['DOCUMENT_ROOT'].'/contact_menu.php');?>
  20. <p>Alle velden met een * zijn verplicht.</p>
  21. <form action="contactform.php" method="post">
  22. <p>
  23. <label class="field" for="voorletters" class="naast">Voorletters:</label>
  24. <input type="text"
  25. id="voorletters"
  26. name="voorletters"
  27. value="<?php echo isset($_SESSION['input']['voorletters']) ? $_SESSION['input']['voorletters'] : ''; ?>"
  28. class="<?php echo (isset($_SESSION['errors']['voorletters']) && $_SESSION['errors']['voorletters'] == 'true') ? 'error' : ''; ?>"
  29. /> *
  30. </p>
  31. <p>
  32. <label class="field" for="achternaam" class="naast">Achternaam:</label>
  33. <input type="text"
  34. id="achternaam"
  35. name="achternaam"
  36. value="<?php echo isset($_SESSION['input']['achternaam']) ? $_SESSION['input']['achternaam'] : ''; ?>"
  37. class="<?php echo (isset($_SESSION['errors']['achternaam']) && $_SESSION['errors']['achternaam'] == 'true') ? 'error' : ''; ?>"
  38. /> *
  39. </p>
  40. <p>
  41. <label class="field" for="adres" class="naast">Adres:</label>
  42. <input type="text"
  43. id="adres"
  44. name="adres"
  45. value="<?php echo isset($_SESSION['input']['adres']) ? $_SESSION['input']['adres'] : ''; ?>"
  46. class="<?php echo (isset($_SESSION['errors']['adres']) && $_SESSION['errors']['adres'] == 'true') ? 'error' : ''; ?>"
  47. /> * (Voorbeeldstraat 2)
  48. </p>
  49. <p>
  50. <label class="field" for="postcode" class="naast">Postcode:</label>
  51. <input type="text"
  52. id="postcode"
  53. name="postcode"
  54. value="<?php echo isset($_SESSION['input']['postcode']) ? $_SESSION['input']['postcode'] : ''; ?>"
  55. class="<?php echo (isset($_SESSION['errors']['postcode']) && $_SESSION['errors']['postcode'] == 'true') ? 'error' : ''; ?>"
  56. /> * (1234 AB)
  57. </p>
  58. <p>
  59. <label class="field" for="woonplaats" class="naast">Woonplaats:</label>
  60. <input type="text"
  61. id="woonplaats"
  62. name="woonplaats"
  63. value="<?php echo isset($_SESSION['input']['woonplaats']) ? $_SESSION['input']['woonplaats'] : ''; ?>"
  64. class="<?php echo (isset($_SESSION['errors']['postcode']) && $_SESSION['errors']['postcode'] == 'true') ? 'error' : ''; ?>"
  65. /> *
  66. </p>
  67. <p>
  68. <label class="field" for="telnr" class="naast">Telefoonnummer:</label>
  69. <input type="text"
  70. id="telnr"
  71. name="telefoonnummer"
  72. value="<?php echo isset($_SESSION['input']['telefoonnummer']) ? $_SESSION['input']['telefoonnummer'] : ''; ?>"
  73. class="<?php echo (isset($_SESSION['errors']['telefoonnummer']) && $_SESSION['errors']['telefoonnummer'] == 'true') ? 'error' : ''; ?>"
  74. /> * (0201234567)
  75. </p>
  76. <p>
  77. <label class="field" for="mob" class="naast">Mobiel:</label>
  78. <input type="text"
  79. id="mob"
  80. name="mobiel"
  81. value="<?php echo isset($_SESSION['input']['telefoonnummer']) ? $_SESSION['input']['telefoonnummer'] : ''; ?>"
  82. />
  83. </p>
  84. <p>
  85. <label class="field" for="email" class="naast">Email:</label>
  86. <input type="text"
  87. id="email"
  88. name="email"
  89. value="<?php echo isset($_SESSION['input']['email']) ? $_SESSION['input']['email'] : ''; ?>"
  90. class="<?php echo (isset($_SESSION['errors']['email']) && $_SESSION['errors']['email'] == 'true') ? 'error' : ''; ?>"
  91. /> *
  92. </p>
  93. <p>
  94. <label class="field" for="product" class="naast">Selecteer product:</label>
  95. <input type="checkbox" name="product" value="<?php echo isset($_SESSION['input']['product']) ? $_SESSION['input']['product'] : ''; ?>" /><label>Supervisie/Coaching/Mediation</label>
  96. <input type="checkbox" name="product" value="<?php echo isset($_SESSION['input']['product']) ? $_SESSION['input']['product'] : ''; ?>" /><label>Trajectbegeleiding</label>
  97. <input type="checkbox" name="product" value="<?php echo isset($_SESSION['input']['product']) ? $_SESSION['input']['product'] : ''; ?>" /><label>Re-integratie</label>
  98. <input type="checkbox" name="product" value="<?php echo isset($_SESSION['input']['product']) ? $_SESSION['input']['product'] : ''; ?>" /><label>Educatie</label>
  99. <input type="checkbox" name="product" value="<?php echo isset($_SESSION['input']['product']) ? $_SESSION['input']['product'] : ''; ?>" /><label>Activering</label>
  100. <input type="checkbox" name="product" value="<?php echo isset($_SESSION['input']['product']) ? $_SESSION['input']['product'] : ''; ?>" /><label>Maatschappelijk werk</label>
  101. </p>
  102. <p>
  103. <label class="field" for="probleem" class="naast">Probleemstelling:</label>
  104. <textarea id="probleem" name="probleemstelling" rows="7" cols="26" wrap="virtual" content="anything"></textarea>
  105. </p>
  106. <p>
  107. <label class="field" for="contact" class="naast">Heeft u al eens eerder telefonisch contact met ons gehad?:</label>
  108. <input type="radio" id="contact" name="contact" value="<?php echo isset($_SESSION['input']['contact']) ? $_SESSION['input']['contact'] : ''; ?>" /><label>Ja</label>
  109. <input type="radio" id="contact" name="contact" value="<?php echo isset($_SESSION['input']['contact']) ? $_SESSION['input']['contact'] : ''; ?>" /><label>Nee</label>
  110. </p>
  111. <p>
  112. <label class="field" for="contactpersoon" class="naast">Zo ja, met wie?</label>
  113. <input type="text" id="contactpersoon" name="contactpersoon" size="34" maxlength="50" value="<?php echo isset($_SESSION['input']['contactpersoon']) ? $_SESSION['input']['contactpersoon'] : ''; ?>" />
  114. </p>
  115. <p>
  116. <input type="reset" value="Herstellen" /><input type="submit" value="Verzenden" class="lijnuit" />
  117. </p>
  118. </form>
  119. <?php
  120. // Weergeven van meldingen uit het phpscript.
  121. if(isset($aErrors))
  122. {
  123. echo '<ul>';
  124. foreach($aErrors as $sError)
  125. {
  126. echo '<li>'.$sError.'</li>';
  127. }
  128. echo '</ul>';
  129. }
  130. elseif(isset($aContent))
  131. {
  132. foreach($aContent as $sLine)
  133. {
  134. echo $sLine;
  135. }
  136. }
  137. ?>
  138. </div>
  139. </body>
  140. </html>
Wat ik me ook afvraag is hoe en waar ik mijn email adres, dus waar het naar toe moet worden verzonden, in het php script precies moet verwerken.

Het wordt wel aangegeven maar zie niet echt een mogelijk waar het moet.

Hopelijk weet iemand raad.

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Allereerst twee puntjes:
• De eerste meldingen zijn notices. Wanneer je niet veel waarde hecht aan netjes programmeren, zou ik die gewoon negeren
• Zet de code tussen [php][/php] tags, dat leest een stuk gemakkelijker.

Verder is het een extern script en daarom moeilijk om te debuggen. Ik zou regel voor regel debuggen. Kijk dus op regel 116 en kijk waar de functie wordt gedeclareerd. Als dat later is dan de specifieke regel, dan heb je de bug gevonden.

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

De meldingen zijn duidelijk. Constanten zijn niet bekend en de functie niet gedefinieerd. Dat is letterlijk uit de foutmelding te halen. Je zou daaruit kunnen concluderen dat dit helemaal niet ondersteund wordt. Ik kan uit je post niet echt opmaken dat je uberhaupt begrijpt waar je mee bezig bent en ben dan ook bang dat dit topic uit gaat lopen op een 'bij het handje neem'-topic. Dat is niet de bedoeling hier in de devschuur, vandaar dat ik dit topic op slot gooi.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Dit topic is gesloten.