[CHECK] inlogsysteem voor scriptlib

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jasper DS

Jasper DS

04/01/2011 10:58:59
Quote Anchor link
Zoals beloofd een leden systeem voor in het scriptlib.
Als het goed gekeurd is zet ik het in het scriptlib.



info:
- Niet oop
- Gebruik van phpmailer
- eerste deel (ik ben nog bezig aan de uitbreiding)


Check van het eerste deel:

Update

1 tabel van de db:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS `leden` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `voornaam` varchar(32) DEFAULT NULL,
  `achternaam` varchar(32) DEFAULT NULL,
  `email` varchar(30) DEFAULT NULL,
  `wachtwoord` varchar(250) NOT NULL,
  `ip` varchar(20) NOT NULL,
  `activatiecode` varchar(10) NOT NULL,
  `datum_registratie` datetime NOT NULL,
  `activatie` int(11) NOT NULL,
  `functie` int(2) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;


config.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
###############################################
#                                             #
#        --- SILYON - CONFIG ---                  #
#                                             #
#        Author: Jasper De Smet                  #
#        Email: [email protected]        #
#        Website: www.jasperdesmet.be          #
#        Last edited: 20 November 2010         #
#        Version: 3.0                          #
#                                             #
###############################################

# Algemene info

$naam_site                         = 'inlogstysteem php-hulp';                             // titel van site
$activatiecodelengte            = 10;                                                     // lengte van de activatiecode

# DB connectie - gegevens

$mysql['host']                 = "localhost";                                // host
$mysql['gebruikersnaam']     = "";                                // gebruikersnaam
$mysql['wachtwoord']         = "";                                // wachtwoord
$mysql['database']             = "";                        // database


# errors weergeven - SQL

define('DEBUG_MODE',true);  // true == aan, false == uit

# errors weergeven - SQL - functie: error

function showSQLError($sql,$error)
{

    echo  '<pre>Error: '.$error.'<br />'.$sql.'</pre>';
}

    
# DB connectie - verbinding
if((mysql_connect($mysql['host'],$mysql['gebruikersnaam'],$mysql['wachtwoord'])) === false )
{

    echo 'Kon geen contact maken met de database! Neem aub. Contact op met de webmaster!';    
}

else
{
    if((mysql_select_db($mysql['database'])) === false)
    {

        echo 'Kon de database niet selecteren! Neem aub. Contact op met de webmaster!';
    }
}


# DB connectie - Zet tijd naar nl
$sql_set_time = "SET lc_time_names = 'nl_NL'";

# Functies
/*
**CHECK Mail functie gaat eruit
*/

    # Functies - check mail

    function checkemail($email)
    {

        // Kijk of er een @ in zit, zo nee false
        if(!stristr($email, '@'))
        {

            return false;
        }

        $email_split = explode("@", $email);
        // Er mag slecht één @ inzitten dus het array moet 2 records tellen
        if(count($email_split) != 2)
        {

            return false;
        }

        $email_user = $email_split[0];
        $email_host = $email_split[1];
        // Kijk of er MX-servers zijn, zo nee false
        if(!getmxrr($email_host, $var))
        {

            return false;
        }

        // Kijk of het usergedeelte okee is, zo nee false
        if(!preg_match("/^[0-9a-z]([-_.~]?[0-9a-z])*$/", $email_user))
        {

            return false;
        }

        return true;
    }

/*
** EINDE MAIL FUNCTIE
** - - - - - - - - -
*/

# Functies - activatiecode

function activatiecode($lengte)
{

    $activatie = "";
    mt_srand ((double) microtime() * 1000000);
    while (strlen($activatie) < $lengte)
    {

        $kiezen = chr(mt_rand (0,255));
        if (eregi("^[a-zA-Z0-9]$", $kiezen)) $activatie = $activatie.$kiezen;
    }

    return ($activatie);
}
                
?>


inloggen.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
###############################################
#                                             #
#            -- INLOGGEN  ---                  #
#                                             #
#        Author: Jasper De Smet                  #
#        Email: [email protected]        #
#        Website: www.jasperdesmet.be          #
#        Last edited:                          #
#        Version: 1.0                          #
#                                              #
#        Voor php-hulp : vrij gebruik          #
#                                             #
###############################################

# errors weergeven - algemeen

ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# include config
include 'config.php';

# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();


# Verwerking van het inlog formulier
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    # We maken het wachtwoord hiet al aan zodat we niet te lange rijen code hebben in onze query
    $wachtwoord = sha1(mysql_real_escape_string($_POST['wachtwoord']));
    
    # Dit is de query om te checken of het email adres en het wachtwoord bij elkaar horen en de gegevens uit de database halen (Query1)
    $sql_get_leden =     "SELECT  id,
                                 voornaam,
                                 wachtwoord,
                                 email,
                                 functie
                         FROM leden
                         WHERE email='"
.mysql_real_escape_string($_POST['email'])."'
                         AND wachtwoord='"
.$wachtwoord."'
                         AND activatie ='1'
                        "
;

    #  Check Query1        
    if (($result_get_leden = mysql_query($sql_get_leden)) === false)
    {

        # als de query fout is -> foutafhandeling
        $inloggen = 'Inloggen is (tijdelijk) niet mogelijk.';
                                                            
        # geef de error via de functie (de functie vind u in het config bestand)
        if (DEBUG_MODE)
        {

            showSQLError($sql_get_leden,mysql_error());
                                                              
        }
    }

    else
    {
        # Query 1 is gelukt
        
        # We tellen of er één (1) rij is met het wachtwoord EN het email adres

        if(($tel = mysql_num_rows($result_get_leden)) == 1)
        {

            # Er is 1 rij!
            
            # We sturen de gebruiker naar de beveiligde pagina

            header('Location: ingelogged/index.php ');
            
            # We fetchen de Query
            $res = mysql_fetch_assoc($result_get_leden);
            
            # We stellen de Sessions in om de gebuiker te indentificeren.
            $_SESSION['voornaam'] = $res['voornaam'];
            $_SESSION['leden_id'] = $res['id'];
        }

        else
        {
            # Er is geen (0) rij met het wachtwoord EN het email adres
            $inloggen = 'verkeerde inlog gegevens';
        }
    }
}
    
?>


<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inloggen</title>
</head>

<body>    
    <form method="post" action="" name="form1">
        Email:                        
        <br />
        <input type="text" name="email" id="email" />
        <br />
        <br />
        Wachtwoord:                        
        <br />
        <input type="password" name="wachtwoord" id="wachtwoord" />
        <br />
        <br />
        <input type="submit" name="submit" value="Login" class="button" >
    </form>
        <?php
            if(isset($inloggen))
            {

                echo $inloggen;
            }

        ?>

</body>
</html>


registreren.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
<?php

###############################################
#                                             #
#            -- REGISTREREN ---                  #
#                                             #
#        Author: Jasper De Smet                  #
#        Email: [email protected]        #
#        Website: www.jasperdesmet.be          #
#        Last edited:                          #
#        Version: 1.0                          #
#                                              #
#        Voor php-hulp : vrij gebruik          #
#                                             #
###############################################

# include config

include 'config.php';

# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>


<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>    
    <?php
        # Kijk of er gepost is
        if($_SERVER['REQUEST_METHOD'] == 'POST')
        {

            # Query om te checken of gebruikersnaam, email adres al bestaat.
            $sql_get_leden =     "SELECT id
                                 FROM leden
                                 WHERE email='"
.mysql_real_escape_string($_POST['email'])."'
                                "
;
                                                
            # Query om te checken of ip adres al bestaat.                    
            $sql_get_ip =     "SELECT id
                             FROM leden
                             WHERE ip='"
.mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."'
                            "
;
                                    
            #  Check query's        
            if (($result_get_leden = mysql_query($sql_get_leden)) === false || ($result_get_ip = mysql_query($sql_get_ip)) === false)
            {

                // als de query fout is -> foutafhandeling
                echo 'Registreren is (tijdelijk) niet mogelijk.';
                            
                // geef de error via de functie (config bestand.)
                if (DEBUG_MODE)
                {

                    showSQLError($sql_get_leden,mysql_error());
                    showSQLError($sql_get_ip,mysql_error());
                }
            }

            else
            {
                /*     
                    Deze else moet het volledige registratie formulier omvatten
                    Anders kunnen er, als er een fout is met de query dubbele mail adressen gebruikt worden!
                */
                    
                # we maken een array voor de errors.    

                $error = array();
                    
                # Tel of er al een gebruiker bestaat met email
                if(mysql_num_rows($result_get_leden) == 1)  
                {

                    $error[] = 'Er bestaat al een gebruiker met dit email adres';
                }

                                
                # Tel of er al een gebruiker bestaat met ip
                if(mysql_num_rows($result_get_ip) == 1)  
                {

                    $error[] = 'Er bestaat al een gebruiker met dit ip adres';
                }

                                
                # wachtwoord ingevuld?
                if(strlen($_POST['wachtwoord']) < 5)  
                {

                    $error[] = 'U hebt geen geldig wachtwoord ingevuld. Een wachtwoord moet minstens 5 tekens lang zijn.';
                }

                                
                # wachtwoord gelijk aan wachtwoord2?
                if($_POST['wachtwoord'] != $_POST['wachtwoord2'])  
                {

                    $error[] = 'U wachtwoorden zijn niet gelijk';
                }

                                
                # voornaam ingevuld?
                if(strlen($_POST['voornaam']) < 3)  
                {

                    $error[] = 'U hebt geen geldige voornaam ingevuld. Een voornaam moet minstens 3 tekens lang zijn';
                }

                                
                # achternaam ingevuld?
                if(strlen($_POST['achternaam']) < 3)  
                {

                    $error[] = 'U hebt geen geldige achternaam ingevuld. Een achternaam moet minstens 3 tekens lang zijn';
                }

                                
                                
                if(!checkemail($_POST['email']))
                {

                    $error[] = 'U hebt geen geldig e-mailadres ingevuld.';
                }

                                    
                # Tel de fouten en weergeef ze indien nodig
                $fouten = count($error); // aantal errors tellen
                if($fouten != 0)
                {

                    echo 'Uw account kon niet worden aangemaakt omwille van de volgende reden(en):';
                    echo '<ul>';
                    for($i = 0; $i < $fouten; $i++)
                    {

                        echo '<li>'.$error[$i].'</li>';
                    }

                    echo '</ul>';
                }

                else
                {
                    # Alles voldoet aan de voorwaarden!    
                    # Stuur een mail zodat ze hun acc kunnen activeren + gegevens in database
                    
                    # genereer een activatiecode, de lenge is te vinden in de config

                    $code = activatiecode($activatiecodelengte);
                    
                    # Query voor de gebruiker in de tabel te zetten
                    $sql_insert_leden =     "INSERT INTO leden
                                             VALUES     ( '',
                                                         '"
.mysql_real_escape_string($_POST['voornaam'])."',
                                                         '"
.mysql_real_escape_string($_POST['achternaam'])."',
                                                         '"
.mysql_real_escape_string($_POST['email'])."',
                                                         '"
.mysql_real_escape_string(sha1($_POST['wachtwoord']))."',
                                                         '"
.mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."',
                                                         '"
.$code."',
                                                         NOW(),
                                                         '0',
                                                         '1'    
                                                        )     
                                                "
;

                    //  Check query        
                    if (($result_insert_leden = mysql_query($sql_insert_leden)) === false)
                    {

                        // als de query fout is -> foutafhandeling
                        echo 'registreren is (tijdelijk) niet mogelijk.';
                                        
                        // geef de error via de functie (bovenaan script)
                        if (DEBUG_MODE)
                        {

                                showSQLError($sql_insert_leden,mysql_error());
                                          
                        }
                    }

                    else
                    {
                            # Stuur de mail
                            
                            # gegevens voor het versturen van een mail: volg de instructies

                            require("class.phpmailer.php");
                            $mail = new PHPMailer();$mail = new PHPMailer();
                            $mail->IsSMTP(); // Laat PHPMailer gebruik maken van een smtp server.
                            $mail->Host = "mail.jasperdesmet.be"; // SMTP server van uw Hosting Partner
                            $mail->SMTPAuth = true;
                            $mail->Username = ''; // Een geldig emailadres wat aangemaakt is bij uw Hosting Partner
                            $mail->Password = ''; // Het wachtwoord wat bij het emailadres hoort
                            $mail->From=""; // email adres dat moet weergeven worden
                            $mail->FromName="Inlogsysteem php hulp"; // naam dat moet worden weergeven.
                            $mail->Sender=""; // Header voor return
                            $mail->AddAddress($_POST['email']); // Het emailadres waar naar toe hij verzonden moet worden
                            $mail->Subject = "Activatie op ".$naam_site."";
                            $mail->IsHTML(true); //Opmaak van de email is in HTML
                            
                            # Html mail

                            $mail->Body =
                            "<h1>Activatie op ".$naam_site."</h1>
                             <p>Beste "
.$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
                             <br/>
                             Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
                                                        
                             Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
                             als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
                                                        
                             <table border=\"1\">
                             <tr><td>Voornaam</td><td>"
.$_POST['voornaam']."</td>
                             <tr><td>Achternaam</td><td>"
.$_POST['achternaam']."</td>
                             <tr><td>Email</td><td>"
.$_POST['email']."</td>
                             <tr><td>activatiecode</td><td>"
.$code."</td>
                             <tr><td>Passwoord</td><td>"
.$_POST['wachtwoord']."</td>
                             </table><br/>
                             <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email="
.$_POST['email']."&amp;code=".$code."\">Klik hier voor een automatische activatie</a> </p>
                             <p>Met vriendelijke groeten<br/>
                             <br/>
                             <i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
                            "
;
                            
                            # Als er geen html word ondersteund word dit weergeven        
                            $mail->AltBody =
                            "<h1>Activatie op ".$naam_site."</h1>
                             <p>Beste "
.$_POST['voornaam']." ".$_POST['achternaam'].",<br/>
                             <br/>
                             Uw gegevens voor een activatie op <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/inloggen.php\">www.inlogsysteem-phphulp.be</a>:<br/><br/>
                                                        
                             Gebruik uw email-adres en de activatie code voor de handmatige activatie van uw account,<br/>
                             als u dat heeft gedaan kan u inloggen met uw e-mail adres en passwoord.
                                                        
                             <table border=\"1\">
                             <tr><td>Voornaam</td><td>"
.$_POST['voornaam']."</td>
                             <tr><td>Achternaam</td><td>"
.$_POST['achternaam']."</td>
                             <tr><td>Email</td><td>"
.$_POST['email']."</td>
                             <tr><td>activatiecode</td><td>"
.$code."</td>
                             <tr><td>Passwoord</td><td>"
.$_POST['wachtwoord']."</td>
                             </table><br/>
                             <a href=\"http://www.jasperdesmet.be/php_hulp/inlogsysteem/activatie.php?email="
.$_POST['email']."&amp;code=".$code."\">Klik hier voor een automatische activatie</a> </p>
                             <p>Met vriendelijke groeten<br/>
                             <br/>
                             <i>(Indien u deze mail niet gewenst heeft gelieve hem dan te negeren)</i></p>
                            "
;
                            
                        # De laatste stap is de mail verzenden en controleren of het is gelukt.
                        if($mail->Send())
                        {

                            # De mail is verzonden!
                            echo 'Het bericht is verzonden';
                        }

                        else
                        {
                            # Er ging iets mis
                            echo 'er ging iets mis met het verzenden van het bericht neem contact op met de website beheerder.';
                        }    
                    }                
                }
            }    
        }

    ?>
                    
    <p>  
        <form method="post" action="" name="">
            Voornaam:<br/>
            <input type="text" name="voornaam" id="voornaam" value="<?php echo $_POST['voornaam']; ?>" />
            <br/>
            <br/>
            Achternaam:<br/>
            <input type="text" name="achternaam" id="achternaam" value="<?php echo $_POST['achternaam']; ?>" />
            <br/>
            <br/>
            Wachtwoord:                        
            <br/>
            <input type="password" name="wachtwoord" id="wachtwoord" />
            <br/>
            <br/>
            Wachtwoord Controle: <br/>
            <input type="password" name="wachtwoord2" id="wachtwoord2"  />
            <br/>
            <br/>
            E-mail:<br/>
            <input type="text" name="email" id="email" value="<?php echo $_POST['email']; ?>" />
            <br />
            <br/>
            <input type="submit" name="submit" value="registreer" class="button" >
        </form>    
    </p>
</body>
</html>


activatie.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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
<?php
###############################################
#                                             #
#            -- ACTIVEREN ---                  #
#                                             #
#        Author: Jasper De Smet                  #
#        Email: [email protected]        #
#        Website: www.jasperdesmet.be          #
#        Last edited:                          #
#        Version: 1.0                          #
#                                              #
#        Voor php-hulp : vrij gebruik          #
#                                             #
###############################################

# include config

include 'config.php';

# errors weergeven - algemeen
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

# Session start zodat we kunnen zien of een gebruiker ingelogged is.
session_start();
?>

<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Registreren</title>
</head>
<body>    
    <?php
    #  - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE MET DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
    if(isset($_GET['email']) && isset($_GET['code']))
    {

        # Query om te checken of email en code overeenkomen (tabel activatie).
        $sql_get_leden =     "SELECT id, email, wachtwoord, voornaam, achternaam, ip
                             FROM leden
                             WHERE email =     '"
.mysql_real_escape_string($_GET['email'])."'    
                             AND activatiecode = '"
.mysql_real_escape_string($_GET['code'])."'
                             AND activatie = '0'
                            "
;

        //  Check query        
        if (($result_get_leden = mysql_query($sql_get_leden)) === false)
        {

            // als de query fout is -> foutafhandeling
            echo 'Activeren is (tijdelijk) niet mogelijk.';
            
            // geef de error via de functie (bovenaan script)
            if (DEBUG_MODE)
            {

               showSQLError($sql_get_leden,mysql_error());
            }
        }

        else
        {
            if(mysql_num_rows($result_get_leden) == 1)
            {

            
                # Activatie gevens zijn correct : voer een query uit!
                
                $result_leden = mysql_fetch_assoc($result_get_leden);

                # Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
                
                #Query 1 - INSERT INTO leden

                
                $sql_update_leden =     "UPDATE leden
                                         SET activatie = '1'
                                         WHERE id= '"
.$result_leden['id']."'
                                        "
;
                
                //  Check query        
                if (($result_update_leden = mysql_query($sql_update_leden)) === false )
                {

                    // als de query fout is -> foutafhandeling
                    echo 'registreren is (tijdelijk) niet mogelijk.';
                    
                    // geef de error via de functie (bovenaan script)
                    if (DEBUG_MODE)
                    {

                       showSQLError($sql_update_leden,mysql_error());
                    }
                }

                else
                {
                    header('Location: inloggen.php');
                }
            }

            else
            {
                # Gegevens zijn niet correct, geef foutmelding
                echo 'Uw gegevens zijn niet correct';
            }
        }    
    }





    #  - - - - - - - - - - - - - - - - - - VOOR MENSEN DIE ZONDER DE LINK REGISTREREN - - - - - - - - - - - - - - - - - -
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {

        # Query om te checken of email en code overeenkomen (tabel activatie).
        $sql_get_leden =     "SELECT id, email, wachtwoord, voornaam, achternaam, ip
                             FROM leden
                             WHERE email =     '"
.mysql_real_escape_string($_POST['email'])."'    
                             AND activatiecode = '"
.mysql_real_escape_string($_POST['code'])."'
                             AND activatie = '0'
                            "
;

        //  Check query        
        if (($result_get_leden = mysql_query($sql_get_leden)) === false)
        {

            // als de query fout is -> foutafhandeling
            echo 'Activeren is (tijdelijk) niet mogelijk.';
            
            // geef de error via de functie (bovenaan script)
            if (DEBUG_MODE)
            {

               showSQLError($sql_get_leden,mysql_error());
            }
        }

        else
        {
            if(mysql_num_rows($result_get_leden) == 1)
            {

            
                # Activatie gevens zijn correct : voer een query uit!
                
                $result_leden = mysql_fetch_assoc($result_get_leden);

                # Querys om de gegevens uit de tabel activatie te verwijderen en in de tabel leden te zetten.
                
                #Query 1 - INSERT INTO leden

                
                $sql_update_leden =     "UPDATE leden
                                         SET activatie = '1'
                                         WHERE id= '"
.$result_leden['id']."'
                                        "
;
                
                //  Check query        
                if (($result_update_leden = mysql_query($sql_update_leden)) === false )
                {

                    // als de query fout is -> foutafhandeling
                    echo 'registreren is (tijdelijk) niet mogelijk.';
                    
                    // geef de error via de functie (bovenaan script)
                    if (DEBUG_MODE)
                    {

                       showSQLError($sql_update_leden,mysql_error());
                    }
                }

                else
                {
                    header('Location: inloggen.php');
                }
            }

            else
            {
                # Gegevens zijn niet correct, geef foutmelding
                echo 'Uw gegevens zijn niet correct';
            }
        }    
    }



    ?>

    <form name="form1" method="post" action="">
        Voer de activatiecode en je gebruikersnaam die je in het e-mailbericht hebt ontvangen in. Heb je geen mail ontvangen? Klik dan <a href="send_again.php">hier</a>. <br/>
        Email:<br/>
        <input name="email" type="text" id="email" size="35"><br/>
        Activatiecode:<br/>
        <input name="code" type="text" id="code" size="<?php echo $activatiecodelengte;?>" maxlength="<?php echo $activatiecodelengte;?>"><br/>
        <input type="submit" name="Submit" id="Submit" value="Activeren"><br/>
    </form>
<body>
</html>    


Update log:
de meeste fouten moeten er nu wel uit zijn?
- eregi is noh niet aangepast!


Na eventuele aanpassingen en een goedkeuring van de harde kern van php hulp (ik kijk naar karl, santhe, niels, jelmer, kris peeters,..)
Zal dit in het scriptlib komen. (dit is deel 1, deel 2 volgt)

owja nog vergeten: voorbeeld via pm omdat ik anders weer in google sta. (voorbeeld staat op mijn domein)
Gewijzigd op 04/01/2011 17:01:56 door Jasper DS
 
PHP hulp

PHP hulp

28/03/2024 21:17:58
 
Tikkes C

Tikkes C

04/01/2011 11:12:16
Quote Anchor link
hmm...ziet er goed uit maar je werkt hier met 2 tabellen (activatie en leden).
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.

Dan kan je die 4 queries vervangen door 1...

verder staat er bij Activatie.php 2 maal onder elkaar session_start()

En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()
 
- Ariën  -
Beheerder

- Ariën -

04/01/2011 11:15:45
Quote Anchor link
eregi() is oud en depricated
 
Pim -

Pim -

04/01/2011 11:22:57
Quote Anchor link
Mag ik ook commentaar geven? ;)

Ziet er op het eerste oog wel goed uit.
Een paar dingen:

- Kan ook in 1 tabel

- Bij inloggen heeft $inloggen een foute, want onduidelijke, naam, net als $sql_get_leden_a

- display_errors kan van DEBUG_MODE afhangen

- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.

- Nooit fourmeldingen boven de HTML echoën

- Mag wel wat meer abstractie, denk aan PDO, evt templating en meer gebruik van functies

- getmxrr() mag eruit. Je hebt al een goede controle dmv de activatie.

- Geen tabellen voor forms gebruiken

Een OOP had het zo veel makkelijker en mooier gemaakt dit te implementeren in een website.

Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig
Gewijzigd op 04/01/2011 11:27:35 door Pim -
 
Jasper DS

Jasper DS

04/01/2011 11:37:40
Quote Anchor link
Tikkes C op 04/01/2011 11:12:16:
hmm...ziet er goed uit maar je werkt hier met 2 tabellen (activatie en leden).
Waarom zet je dan bij activatie geen foreign key op het id en voer je een join uit bij je registratiescript.

Dan kan je die 4 queries vervangen door 1...

verder staat er bij Activatie.php 2 maal onder elkaar session_start()

En ik kan een spatie ingeven als naam geloof ik, als ik het zo bekijk.
Check je naam etc ook met strlen()


Ik zal dat aanpassen.

- Aar - op 04/01/2011 11:15:45:
eregi() is oud en depricated


Ik zal dat aanpassen.

Pim - op 04/01/2011 11:22:57:
Mag ik ook commentaar geven? ;)

Ja natuurlijk ;-)

Pim - op 04/01/2011 11:22:57:
Ziet er op het eerste oog wel goed uit.
Een paar dingen:

- Kan ook in 1 tabel

Dat zou ik persoonlijk niet doen. Nu heb je een mooi overzicht.

Pim - op 04/01/2011 11:22:57:
- Bij inloggen heeft $inloggen een foute, want onduidelijke, naam, net als $sql_get_leden_a

Dat zal ik aanpassen.

Pim - op 04/01/2011 11:22:57:
- display_errors kan van DEBUG_MODE afhangen

- Verplaats meer zaken naar het configuratiebestand, zodat aanpassen makkelijker kan.

ik zal zien wat ik nog kan verplaatsen.

Pim - op 04/01/2011 11:22:57:
- Nooit fourmeldingen boven de HTML echoën

helemaal gelijk, dat krijgt prioriteit.

Pim - op 04/01/2011 11:22:57:
- Mag wel wat meer abstractie, denk aan PDO, evt templating en meer gebruik van functies

dat zal er niet inzitten vrees ik.

Pim - op 04/01/2011 11:22:57:
- getmxrr() mag eruit. Je hebt al een goede controle dmv de activatie.

prima

Pim - op 04/01/2011 11:22:57:
- Geen tabellen voor forms gebruiken

Komt in orde.

Pim - op 04/01/2011 11:22:57:
Een OOP had het zo veel makkelijker en mooier gemaakt dit te implementeren in een website.

Mocht je ooit nog daartoe komen, denk aan classes als:
User (naw, geactiveerd, id, setNaam(), opslaan())
Autorisatie/Inloggen (isIngelogd(), login($uname, $pw), getUser(), registreer(User $user)) - Deze kan je nog opsplitsen, maar dat hoeft niet
Mailer abstractie (__construct($config), sendMail($email))
evt Sessie abstractie, niet direct nodig


Sorry dat zie ik niet zitten ;)
Gewijzigd op 04/01/2011 11:38:03 door Jasper DS
 
Tikkes C

Tikkes C

04/01/2011 11:37:56
Quote Anchor link
ik zou het in 2 tabellen houden maar dan de dingen die je 2 keer erin hebt staan weg doen en oplossen met joins in je queries.

Waarom geen tabellen voor forms dan?
 
- Mark -

- Mark -

04/01/2011 11:39:43
Quote Anchor link
- Laat maar, Verkeerd gelezen. -
Gewijzigd op 04/01/2011 11:41:18 door - Mark -
 
Jasper DS

Jasper DS

04/01/2011 11:40:14
Quote Anchor link
Tikkes C op 04/01/2011 11:37:56:
ik zou het in 2 tabellen houden maar dan de dingen die je 2 keer erin hebt staan weg doen en oplossen met joins in je queries.

Waarom geen tabellen voor forms dan?


tabellen niet gebruiken voor opmaak, maar leden komen eerst in de activatie tabel en vanaf ze geactiveerd hebben in de leden tabel, zo kan je leden die niet geactiveerd zijn mooi splitsen van wel geactiveerde leden. Je zou het ook met een extra kolom kunnen doen en eren where in de query maar dan lijkt mijn oplossing makkelijker.

edit: de volledige mail check eruit?
In welk bestand echo ik boven de html?
Gewijzigd op 04/01/2011 11:43:14 door Jasper DS
 
Pim -

Pim -

04/01/2011 11:44:52
Quote Anchor link
Het zijn toch gewoon allemaal users die soms wel, soms niet geactiveerd zijn? Dan is dat toch een eigenschap van die user en dus veld veld in de user tabel?

Activatie met code en id als veld en dan een foreign key bij user die null is als de gebruiker geactiveerd is, is natuurlijk netter, maar je kan ook gewoon het code veld bij de user invullen of null laten...

Wat je nu hebt is echt geen goed datamodel...

En waarom niet meer abstractie? Bang dat dat niet lukt?
 
Jasper DS

Jasper DS

04/01/2011 11:53:59
Quote Anchor link
Maar bij geactiveerde leden heb je dan altijd 1 nutteloze kolom, de activatie-key?
 
Gerhard l

gerhard l

04/01/2011 11:57:09
Quote Anchor link
je hebt gewoon een lege kolom voor de wel geactiveerden, en de niet geactiveerden hebben daar een activatiecode staan.
dat is in ieder geval beter dan een nutteloze tabel.
 
Jasper DS

Jasper DS

04/01/2011 12:04:57
Quote Anchor link
die tabel wordt toch gebruikt? Als je 10 nieuwe leden hebt per dag word die tabel 70 keer op 1 week gebruikt.

Ok, zoals jullie vroegen 1 tabel.
die ziet er nu zo uit:
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
--
-- Tabelstructuur voor tabel `leden`
--

CREATE TABLE IF NOT EXISTS `leden` (
  `id` int(4) NOT NULL AUTO_INCREMENT,
  `voornaam` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
  `achternaam` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
  `geslacht` varchar(32) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
  `email` varchar(64) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
  `wachtwoord` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci DEFAULT NULL,
  `functie` varchar(20) NOT NULL,
  `ip` varchar(25) NOT NULL,
  `premium` int(11) NOT NULL,
  `code` char(10) NOT NULL,
  `datum` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;


Als dit goed is zal ik dat even aanpassen.
Gewijzigd op 04/01/2011 12:07:39 door Jasper DS
 
Gerhard l

gerhard l

04/01/2011 12:09:24
Quote Anchor link
met 1 extra kolom hoef je een heel tabel niet te gebruiken, en je wilt toch alle leden in 1 tabel hebben. niet geactiveerde leden zijn ook leden?
 
Jasper DS

Jasper DS

04/01/2011 12:25:39
Quote Anchor link
Dus is het goed dat ik alles aanpas aan de tabel van mijn vorige post?
 
Tikkes C

Tikkes C

04/01/2011 12:51:36
Quote Anchor link
zoek eens normalisatie op...

ik zou activatie in een andere tabel zetten sowieso
Gewijzigd op 04/01/2011 12:52:08 door Tikkes C
 
John D

John D

04/01/2011 12:53:49
Quote Anchor link
Tikkes C op 04/01/2011 12:51:36:
ik zou activatie in een andere tabel zetten sowieso
Waarom??
 
Chris -

Chris -

04/01/2011 12:56:19
Quote Anchor link
Redelijk genormaliseerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
leden:
- id
- username
- password

leden_attributen
- id
- leden_id
- attr_naam
- attr_waarde


Alle attributen zoals e-mail, actief e.d. zet je dan in de leden_attributen tabel zodat je je tabel nooit meer hoeft te updaten als je bijvoorbeeld een extra profiel ding wilt toevoegen :-)
 
Tikkes C

Tikkes C

04/01/2011 12:58:21
Quote Anchor link
[Leden]
-id (Primary key)
-naam
-voornaam
-email
-wachtwoord
-ip

[Activatie]
-id (Foreign key naar Leden.id)
-geactiveerd

[LedenInfo]
-id (Foreign key naar Leden.id)
-premium
-andere dingen die vaker veranderen


waarom? zie chris z'n post ;-)
Gewijzigd op 04/01/2011 12:59:34 door Tikkes C
 
Chris -

Chris -

04/01/2011 13:11:59
Quote Anchor link
Maar activatie is een attribuut, dus hoef je daar niet een aparte tabel voor te maken...
 
Jasper DS

Jasper DS

04/01/2011 13:14:32
Quote Anchor link
Moet je een Foreign key gebruiken? Ik kan het aanmaken maar voor wat dient dat?
 
Tikkes C

Tikkes C

04/01/2011 13:16:04
Quote Anchor link
referenties maken hé...
zo kan je tabellen met elkaar linken...dit zorgt voor performantieverhoging in je database enzovoort...


Foreign key
Gewijzigd op 04/01/2011 13:17:17 door Tikkes C
 

Pagina: 1 2 volgende »



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.