beste manier voor benodigde velden registratie form

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tim Ouwerkerk

Tim Ouwerkerk

16/02/2011 00:19:21
Quote Anchor link
Hallo phphulpers,

ik ben bezig met een registratie script, en ik heb velden die niet benodigd zijn zoals bijvoorbeeld woonplaats,telefoonnummer etc en benodigde velden zoals username, password etc.

Ik ben opzoek naar de beste manier om aan te geven wanneer een benodigd veld niet is ingevuld, en daarbij ook nog eens te checken of bijvoorbeeld string lenght van username tussen de 6,en 16 karakters ligt.

Ik kwam zelf met dit stukje code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$velden
=array();
$velden['naam'] = $_POST['naam'];
$velden['wachtwoord'] = md5 ($_POST['wachtwoord']);
$velden['wachtwoord_nogmaals'] = md5 ($_POST['wachtwoord_nogmaals']);
$velden['email'] = $_POST['email'];

foreach($velden as $key => $inhoud){
if($inhoud=='')
{

    echo $key." is onjuist ingevuld";
}
}

?>


Is dit een goede manier voor het uitvinden of iets niet is ingevuld?,
en wat is de beste manier, om zoals bovenstaand genoemd te checken of bijvoorbeeld username tussen de 6-16 chars ligt en password tussen de 8-20?
Gewijzigd op 16/02/2011 00:19:48 door Tim Ouwerkerk
 
PHP hulp

PHP hulp

23/04/2024 20:13:38
 
Sander de Vos

Sander de Vos

16/02/2011 00:27:28
Quote Anchor link
Om te controleren of een veld is ingevuld gebruik je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (!empty($velden[NAAM])) {

}

?>


Om te kijken of een veld 6 tot 16 karakters bevat gebruik je:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (strlen($velden[NAAM]) > 5 && strlen($velden[NAAM]) < 17) {

}

?>
 
Wouter J

Wouter J

16/02/2011 08:01:26
Quote Anchor link
Sander de Vos op 16/02/2011 00:27:28:
if (!empty($velden[NAAM])) {

Dan kan je net zo goed
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($velden['naam'])) {
?>

Gebruiken. Isset betekend is set, dus of er iets in zit en empty betekend leeg, dus of de var leeg is. !empty is dus hetzelfde als isset.
 
Jelmer -

Jelmer -

16/02/2011 08:15:45
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$test
= '';

var_dump(
    isset($test),    // true
    !empty($test) // false
);
?>

Ze zijn niet hetzelfde, zie de handleiding voor wat empty en isset precies doen.
Gewijzigd op 16/02/2011 08:16:07 door Jelmer -
 

16/02/2011 09:10:06
Quote Anchor link
Wouter J op 16/02/2011 08:01:26:
(...)
!empty is dus hetzelfde als isset.


Zoals Jelmer al laat zien zijn isset en (!)empty niet hetzelfde. Als je niet precies weet wat de functie doet kan je ook nog beredeneren dat het niet logisch zou zijn om een extra functie te hebben die een inverse is van een andere functie. Want dat kan immers met !, dus zou één van de functies nutteloos zijn.
 
Milo S

Milo S

16/02/2011 14:20:57
Quote Anchor link
Ik zelf doe altijd zo iets bij meerdere velden...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
$formErrors
= array();

$checks = array(
                'veldnaam',
                'veldnaam',
                'veldnaam',
                'veldnaam',
                'veldnaam'
                );
                
foreach( $checks as $field )
{

    $formErrors[] = 'U bent vergeten een '.$field.' in te vullen.';
}


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

    # VERDERE HANDElINGEN HIER
}
else
{
    foreach( $formErrors as $error )
    {

        echo $error.'<br />';
    }
}

?>


En dan kan je nog een ifje met Sander zijn voorbeeld er in gooien, die doe je dan zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if( strlen( $_POST['username'] ) < 6 || strlen( $_POST['username'] ) > 16 )
{

    $formErrors[] = 'Uw username is incorrect ingevoerd.';
}

?>


Worden dit ook meer dan 2 items zou ik ook hier een array voor maken welke items dat zijn en dit apart laten doorlopen. Gooi alle errors gewoon in de formError array dan word het keurig weergegeven.
Gewijzigd op 16/02/2011 14:24:13 door Milo S
 
Kris Peeters

Kris Peeters

16/02/2011 17:01:37
Quote Anchor link
Zie eens of je hier iets mee bent

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
if (!empty($_POST)) {
  $errors = required_fields_errors (
      array ('nick', 'password', 'email'),
      $_POST
  );
  // zien of de bevestiging van het paswoord overeen komt
  if ($_POST['password'] !== $_POST['password_confirm']) {
    $errors['password_confirm_matches'] = 1;
  }
  
  echo 'errors: '. print_r($errors, 1);
  echo '<p><a href="?">Terug naar formulier</a></p>';
}

else {
  echo '
  <style>.red{color: #ff0000;}</style>
  <form action="" method="post">
  <input name="nick"/> <span class="red">*</span> Nickname<br/>
  <input type="password" name="password"/> <span class="red">*</span> Passwoord<br/>
  <input type="password" name="password_confirm"/> <span class="red">*</span> bevestig Passwoord<br/>
  <input name="email"/> <span class="red">*</span> e-mail adres<br/>
  <input name="signature"/> Signature<br/>
  <input name="company"/> Company<br/>
  <input type="submit" value="GO!"/>
</form>
<p>(<span class="red">*</span> required fields)</p>
'
;
}


  /**
  * @param $fields:     array met de naam van de te controleren velden.  Velden die leeg mogen blijven, moet je niet
  * @param $post:       assoc.  array met de geposte waarden
  * @return:            array met errors
  */

function required_fields_errors ($fields, $post ) {
    $errors = array();
    foreach ($post as $key => $field) {
      if (!in_array($key, $fields)) {
        continue;
      }

      $value = trim($field);
      if (empty($value)) {
        $errors[$key] = 1;
      }
    }

    return $errors;
}

?>
 
Milo S

Milo S

16/02/2011 17:13:09
Quote Anchor link
Nee? Wat ben je nou moelijk aan het doen met dat wachtwoord vergelijken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
$formErrors
= array();

$checks = array(
                'veldnaam',
                'veldnaam',
                'veldnaam',
                'veldnaam',
                'veldnaam'
                );

# Mits gesubmit
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
    
    # Input velden checken
    foreach( $checks as $field )
    {

        $formErrors[] = 'U bent vergeten een '.$field.' in te vullen.';
    }

    
    # Wachtwoord gelijk
    if( isset( $_POST['password'] ) !== isset( $_POST['password_confirm'] ) )
    {

        $formErrors[] = 'De ingevoerde wachtwoorden komen niet overeen.';
    }


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

        # VERDERE HANDElINGEN HIER
        # INSERT QUERY + check daarvan etc...

    }
    else
    {
        # Errors
        foreach( $formErrors as $error )
        {

            echo $error.'<br />';
        }
    }
}

else
{
    # Formulier
}
?>
Gewijzigd op 16/02/2011 19:15:26 door Milo S
 
- Mark -

- Mark -

16/02/2011 17:16:04
Quote Anchor link
@Milo

hoort het wachtwoord gelijk gedeelte niet ter hoogte van

# VERDERE HANDElINGEN HIER

Je gaat nu een fout melding krijgen als $_POST['password'] niet bestaat.
 
Milo S

Milo S

16/02/2011 19:14:38
Quote Anchor link
Ja daar heb je gelijk in, al zou ik die foutmelding verhelpen met een isset, omdat ik ook gewoon zou willen weergeven dat het niet overeen komt.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.