Versio

Register Test

Overzicht Reageren

CB2thephp

CB2thephp

28/08/2006 22:44:00
Quote Anchor link
Hallo iedereen,

Het is weer een lange tijd geleden dat ik online ben geweest hier bij phphulp. Hier heb ik de volgende vraag.

Ik ben bezig geweest met mijn loginsysteem vandaag en heb de registersysteem af. Nu wou ik vragen of mensen de codes kunnen bekijken. Omdat het misschien niet fijn is om alles te copieren heb ik het in 2 zipbestanden staan. De ene is met commentaar en de andere niet.

Ik zou het zeer leuk vinden als jullie het kunnen bekijken en testen.

#Commentaar zipje:
http://home.skyaccess.nl/d2bols01/register-com.zip

#Geen Commentaar zipje:
http://home.skyaccess.nl/d2bols01/register-nocom.zip

#Verder op staat nu ook de code...

Denk eraan het is alleen de registratiemodule, inlogmodule is voor mij van latere zorg.

Groeten,

Christian Bolster
Gewijzigd op 01/01/1970 01:00:00 door CB2thephp
 
PHP hulp

PHP hulp

25/05/2012 14:25:56
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Arend a

Arend a

28/08/2006 22:55:00
Quote Anchor link
Zou je het niet als losse php(s) bestanden kunnen posten?

OT: Waarom is een versie zonder commentaar nuttig?
 
CB2thephp

CB2thephp

28/08/2006 23:01:00
Quote Anchor link
#transact-register.php

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php

/*Om gebruik van dit script te kunnen maken moet je mysql, php hebben.
 *Bij php moet magic_qoutes_gpc uitstaan, als het aanstaat kan het grote
 *gevolgen hebben met het script.
 */


if (!isset($_POST['action']) || !isset($_POST['user']) || !isset($_POST['pass']) || !isset($_POST['rpass'])) {
  header ('location: register.php?error=01');  /*Geen geldige formulier verzonden.*/
  exit();
}
else {
  /*Haal alle tags weg en trimt daarna alle lege plekken aan de kanten weg.*/
  require_once 'functions.php';
  $strip = array();
  $strip['user'] = strip($_POST['user']);
  $strip['pass'] = strip($_POST['pass']);
  $strip['rpass'] = strip($_POST['rpass']);
  unset($_POST);

  $upregex = '^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*$';
  /*Checkt of username etc. leeg is of niet.*/
  if (empty($strip['user']) || empty($strip['pass']) || empty($strip['rpass'])) {
    header ('location: register.php?error=02');  /*Geen of niet alle velden zijn ingevuld.*/
    exit();
  /*Checkt of username etc. aan je lengte eisen voldoen.*/
  } elseif (strlen($strip['user']) > 20 || strlen($strip['pass']) > 50 || strlen($strip['rpass']) > 50 || strlen($strip['pass']) < 6 || strlen($strip['rpass']) < 6){
    header ('location: register.php?error=03');  /*Uw Wachtwoorden en/of Gebruikersnamen zijn te lang of te kort.*/
    exit();
  /*Checkt de string of het aan je regular expression eisen houdt.*/
  } elseif(!ereg($upregex, $strip['user']) || !ereg($upregex, $strip['pass']) || !ereg($upregex, $strip['rpass'])) {
    header ('location: register.php?error=04');  /*Uw Wachtwoorden en/of Gebruikersnamen houden zich niet aan onze regels.*/
    exit();
  }
else {
    $clean = array();
    $clean['user'] = $strip['user'];
    $clean['pass'] = $strip['pass'];
    $clean['rpass'] = $strip['rpass'];
    unset($strip);

    if ($clean['pass'] != $clean['rpass']) {
      header ('location: register.php?error=05');  /*Wachtwoorden matchen niet.*/
      exit();
    }
else {
      require_once 'conn.php';
      $html = array();
      $html['user'] = htmlentities($clean['user'], ENT_QUOTES);
      $html['pass'] = htmlentities($clean['pass'], ENT_QUOTES);
      unset($clean);

      $mysql = array();
      $mysql['pass'] = mysql_real_escape_string($html['pass']);
      $mysql['user'] = mysql_real_escape_string($html['user']);
      unset($html);

      $sql1 = "INSERT INTO users (username, password) " .
              "VALUES ('" . base64_encode($mysql['user']) . "','" . sha1($mysql['pass']) . "')";

      $result = mysql_query($sql1, $conn);
        switch (mysql_errno()) {
          case
1062:
            header ('location: register.php?error=06');  /*Gebruikersnaam bestaat al.*/
            exit();
            break;
          case
0:
            header ('refresh: 3; URL=register.php?error=no');
            echo ('Account Created');
        exit();
            break;
          default:

            header ('refresh: 3; URL=register.php?error=07');
            echo ('Could not create user account; ' . mysql_error());  /*Fout database*/
        exit();
            break;
        }
    }
  }
}


?>


Ik ken mensen die willen het liever zonder commentaar, omdat het dan overzichtelijker is.

#Code Edit 9:48AM,30-Augustus-2006
Gewijzigd op 01/01/1970 01:00:00 door CB2thephp
 

28/08/2006 23:37:00
Quote Anchor link
Doe na elke header("Location") een exit(). Dit voorkomt problemen met lege pagina's.
 
CB2thephp

CB2thephp

28/08/2006 23:39:00
Quote Anchor link
oke zal ik doen, ik heb trouwens nog 1 vraag is de beveiliging hoog genoeg.
 
CB2thephp

CB2thephp

29/08/2006 23:12:00
Quote Anchor link
*bump*,

Het werd een beetje leeg en ik wou toch wat meer horen wat er verbeterd kan worden.
 
Jan Koehoorn

Jan Koehoorn

30/08/2006 08:37:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$sql
= "SELECT username " .
     "FROM users " .
     "WHERE username = '" . $mysql['user'] . "'";
?>

Je checkt momenteel alleen op username. Wat gebeurt er als twee leden dezelfde username hebben?
 
CB2thephp

CB2thephp

30/08/2006 08:57:00
Quote Anchor link
Dat kan dus niet, want dit is het registratiesysteem. De select is erbij neergezet om ervoor te zorgen dat dubbele accounts niet kunnen voorkomen. Dit is ook te zien door het hele stuk te bekijken.

#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
15
16
17
18
19
<?php
      $sql
= "SELECT username " .
             "FROM users " .
             "WHERE username = '" . $mysql['user'] . "'";

      $result = mysql_query($sql, $conn)
        or die ('Could not look up user information; ' . mysql_error());

      //Kijk of de username al bestaat.
      if (mysql_fetch_array($result)) {
        header ('location: register.php?error=06');  //foutmelding
      } else {
        //Zet username etc in database.
        $sql1 = "INSERT INTO users (username, password) " .
                "VALUES ('" . $mysql['user'] . "','" . sha1($mysql['pass']) . "')";

        mysql_query($sql1, $conn)
          or die ('Could not create user account; ' . mysql_error());  //foutmelding
?>


De while naar de select kijkt of er een waarde voorkwam, zo ja foutmelding.

Foutmeldingen zijn nog niet perfect weergeven sorry voordat.

Groeten,

Christian Bolster
 
Jan Koehoorn

Jan Koehoorn

30/08/2006 09:02:00
Quote Anchor link
Je kunt ook je username UNIQUE maken, of de combinatie username/password.

In dat geval geeft je INSERT query een error 1062 als er dubbele records dreigen te ontstaan. De melding naar je gebruiker wordt dan ook iets specifieker. Het nummer van de foutmelding kun je checken met mysql_errno().
 
CB2thephp

CB2thephp

30/08/2006 09:06:00
Quote Anchor link
Hartstikke bedankt,

Ik had UNIQUE al aanstaan, maar over mysql_errno() had ik zo 1,2,3 niet van gehoord.

Bedankt weer wat geleerd.

grt.
 
CB2thephp

CB2thephp

31/08/2006 09:47:00
Quote Anchor link
*bump*

Zou graag nog wat willen weten
 
Wes

wes

31/08/2006 09:53:00
Quote Anchor link
wat wil je weten?
 
Jan Koehoorn

Jan Koehoorn

31/08/2006 10:01:00
Quote Anchor link
CB2thephp:
*bump*

Zou graag nog wat willen weten

Okee, nog een tip. Bovenaan je script doe je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if (!isset($_POST['action']) || !isset($_POST['user']) || !isset($_POST['pass']) || !isset($_POST['rpass'])) {
  header ('location: register.php?error=01');  /*Geen geldige formulier verzonden.*/
  exit();
?>

Je hoeft niet van alle waarden in je formulier te checken of ze wel gezet zijn. Het is voldoende om dit te doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        if (isset) // check hier 1 van je formuliervelden
        // als die gezet is, kun je er vanuit gaan dat de rest
        // ook gezet is

    }
?>

Stel dat je een formulier hebt met twaalf velden, dan is dit handiger.
 
CB2thephp

CB2thephp

31/08/2006 11:16:00
Quote Anchor link
weer hartstikke bedankt ik zal het snel toepassen
 
Mitch

Mitch

31/08/2006 11:39:00
Quote Anchor link
Jan:
Stel dat je een formulier hebt met twaalf velden, dan is dit handiger.

Huh?
Dus als ik een formulier heb:
Naam:
Adres:
Telnr.:
En die zijn allemaal nodig voor de registratie, kijk ik of "Naam" wel geset is.
Als dat zo is zijn de anderen het ook?

Lijkt me niet?
 



Overzicht Reageren

Get Adobe Flash player