Versio

Wachtwoord Vergeten schript werkt niet....

Overzicht Reageren

Lars Hallow

Lars Hallow

12/01/2012 14:52:42
Quote Anchor link
Beste Iedereen,

Ik ben voor school met een wachtwoord vergeten script bezig.
Ik dacht dat ik goed bezig was, maar de foutmeldingen blijven maar komen.

Telkens als ik er een heb opgelost duikt er verderop weer een ander op.
Nu is mijn vraag: loop ik nou te kloten of is dit script nog te redden ?

zo ja?, gelieve tips ter verbetering van het script:

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
<?php

    // Connectie met de database maken
    // Zet hier ook je error_reporting(E_ALL) & ini_set('display_errors', 1) in

    require_once ('config.php');
    
    // Verbinding maken met MySQL
    
    $link = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    if (!$link)
    {

        die('Could not connect: ' . mysql_error());
    }

    
    //Select database
    $db = mysql_select_db(DB_DATABASE);
    if(!$db)
    {

        die("Unable to select database");
    }


    // Error is false
    $Error = false;
    
    // Array voor de berichten
    $Message = array();
    
    // Kijken of er gepost wordt
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    
    // Kijken of email leeg is
    if(empty($_POST['email']))
    {

        // Geen email adres ingevuld
        $Message[] = 'Vul A.U.B een email adres in.';
        // Error is true
        $Error = true;
    }

    
    // Kijken of het email adres geldig is
    if(preg_match('/^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])*(\.([a-z0-9])([-a-z0-9_-])([a-z0-9])+)*$/i', $_POST['email']))
    {

        // Email adres is niet geldig
        $Message[] = 'Vul A.U.B een geldig email adres in.';
        // Error is true
        $Error = true;
    }

    
    // Kijken of error false is
    if($Error == false)
    {

        // Query uitvoeren
        $Query =
        "
            SELECT
                member_id,
                email_adres
            FROM
                members
            WHERE
                email_adres = '"
.mysql_real_escape_string(trim($_POST['email']))."'
        "
;
        
        // Resultaat van de query
        $Result = mysql_query($Query);
        
        // Kijken of de query is gelukt
        if(!$Result)
        {

            // Foutje in de query
            $Message[] = 'Er is een fout opgetreden, fout is: '.mysql_error();
        }

        else
        {
            // Kijken of het email adres voorkomt
            if(mysql_num_rows($Result) == 0)
            {

                // Email adres komt niet voor in de database
                $Message[] = 'Dit email adres komt niet voor in onze database.';
            }

            else
            {
                // Rij fetchen
                $Row = mysql_fetch_assoc($Result);
                
                // Nieuw wachtwoord aanmaken
                $password = mt_srand((double)microtime()*100000);
                                
                while(strlen($password) <= 6) // Aantal tekens/cijfers dat wordt gebruikt
                {
                    $i = chr(mt_rand(0,255));
                                                              
                    if(preg_match('/^[a-z0-9]$/', $i)) // Alleen letters en cijfers
                    {
                        $password = $password.$i;
                    }
                }

                
                    // Query uitvoeren
                $Query =
                
                "
                    UPDATE members
                    
                    SET password = MD5('"
. $password . "')
                    WHERE member_id ="
.  intval($Row['member_id']) . "
                
                "
;
            
                // Resultaat van de query
                $Result = mysql_query($Query);

                
                    // Kijken of de query is gelukt
                if(!$Result)
                
                    // Foutje in de query
                {
                    $Message[] = 'Er is een fout opgetreden, fout is: '.mysql_error();
                }

                else
                {
                    // Persoon waar het naartoe gestuurd moet worden
                    $Row = mysql_fetch_array($Result);
                    
                    // Onderwerp van de mail
                    $Subject        = 'Wachtwoord Reset';
                    
                    // Headers die we meesturen met de mail
                    $Headers        = 'From: no-reply@adres.nl' . "\r\n" .
                                      'Reply-To: no-reply@adres.nl' . "\r\n" .
                                      'MIME-Version: 1.0' . "\r\n" .
                                      'Content-Type: text/html; charset=ISO-8859-1' . "\r\n" .
                                      'X-Mailer: PHP/' . phpversion();
                                      'X-Priority: 1' . "\r\n" .
                    $Mail            = '<h3>Wachtwoord Reset</h3>
                                    <p>Beste '
.$Row['email_adres'].',</p>
                                    <p>U wachtwoord is reeds gereset door: '
.$_SERVER['REMOTE_ADDR'].'<br>U nieuwe wachtwoord: '.$password.'<br/>
                                    Komt u ip adres niet overeen met die in deze email, neem dan zo spoedig mogelijk contact met ons op.</p>
                                    <p>Met vriendelijke groet,</p>
                                    <p>Het Team !</p>'
;
                    
                    // Kijken of de mail verstuurd wordt
                    if(mail($Receiver, $Subject, $Mail, $Headers))
                    {

                        // Mail succesvol verstuurd
                        $Message[] = 'U ontvangt binnen nu en 10 minuten uw nieuwe wachtwoord op het volgende adres: '.$_POST['email_adres'];
                    }

                    else
                    {
                        // Fout met versturen email
                        $Message[] = 'Er is een fout opgetreden met het versturen van de mail, neem zo spoedig mogelijk contact met ons op.';
                    }
                }
            }
        }
    }


?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Wachtwoord Vergeten</title>
</head>

<body>
<h3>Wachtwoord Vergeten</h3>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

// Kijken of er berichten zijn
if(!empty($Message))
{

    // Berichten laten zien
    foreach($Message as $Msg)
    {

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


?>

<form id="form1" name="form1" method="post" action="">
Email adres:
<input type="text" name="email" id="email" />
<input type="submit" name="button" id="button" value="Submit" />
</form>
</body>
</html>

Alvast bedankt voor de gene die de moeite willen nemen.
 
PHP hulp

PHP hulp

25/05/2012 19:08:25
Gesponsorde koppelingen:
 
Erwin H

Erwin H

12/01/2012 14:56:28
Quote Anchor link
Zo 1-2-3 kan ik alleen maar tips geven over hoe het anders kan, maar overduidelijke fouten haal ik er niet uit. Handig zou dus zijn om je foutmeldingen hier te vermelden, dan kunnen we gerichter kijken.
 
Lars Hallow

Lars Hallow

12/01/2012 15:04:13
Quote Anchor link
Tuurlijk sorry mijn fout, als je de website voor het eerst op roept:

Notice: Undefined index: email in C:\xampp\htdocs\Password-lost.php on line 41

Notice: Undefined index: email in C:\xampp\htdocs\Password-lost.php on line 61

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Password-lost.php on line 124

Notice: Undefined variable: Receiver in C:\xampp\htdocs\Password-lost.php on line 144

Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\Password-lost.php on line 144

Wanneer je wel een e-mail adres heb ingevuld vervallen de 1e&2e foutmeldingen, echter zou het script volgens mij de eerste en de tweede foutmelding niet moeten geven, maar goed daarom ben ik ook hier :P
 
Erwin H

Erwin H

12/01/2012 15:11:51
Quote Anchor link
Fout op 41 is simpel. Je kijkt namelijk wel of email in POST zit en zoniet sla je de error op, alleen voor 41 check je niet of er al een foutmelding is. Dus of na het opslaan van de fout moet je exiten, of je moet bij elke volgende handeling kijken of er al een foutmelding gegeven is.
 
- Aar -

- Aar -

12/01/2012 15:13:39
Quote Anchor link
Quote:
Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdocs\Password-lost.php on line 144

Deze lijkt me ook duidelijk. Je hebt geen mailserver bij php bekend gemaakt.
 
Erwin H

Erwin H

12/01/2012 15:14:37
Quote Anchor link
De fout op 124 is ook redelijk simpel. Je voert een update uit. Uit een update komt geen resultaat. Je kan op 124 dus ook geen rij uit je resultaat halen.

Toevoeging op 12/01/2012 15:22:51:

En de fout op 144 over de Receiver slaat er op dat je nergens een waarde toekent aan Receiver. Die kan je op 144 dan dus ook nog niet gebruiken.
 
Lars Hallow

Lars Hallow

12/01/2012 15:26:04
Quote Anchor link
Bedankt iedereen!!, ik ga het uitproberen. En ja indd de mail server is duidelijk.
Maar dat komt omdat ik alleen de code lokaal aan het uitproberen maar.

Toevoeging op 12/01/2012 16:06:16:

Helaas,,,, me leraar adviseerde om er een "else" tussen te zetten.
Echter loopt de query dan niet meer helemaal lekker.

Verwijzend naar:

Notice: Undefined index: email in C:\xampp\htdocs\Password-lost.php on line 41

De rest vd problemen zijn wel duidelijk bedankt daarvoor in elk geval :)
 



Overzicht Reageren

Get Adobe Flash player