Getallen veranderen, hoe kan ik ze gelijk houden?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Stefan

stefan

26/09/2009 11:29:00
Quote Anchor link
Hallo,

Ik probeer een wachtwoord opvraagscript te maken met een validatiecode. Het probleem is alleen, de validatiecode die hij in de database zet is anders dan die ik in de mail staat, die je ontvangt. Terwijl het wachtwoord wel gewoon goed blijft.

Wat doe ik verkeerd?

Alvast bedankt voor je hulp.

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

        function randomwachtwoord($length)
        {

            $tekens = "1234567890aBcDeFgHiJkLmNoPqRsTuVwXyZ";
            $key  = $tekens{rand(0,35)};
            for($i=1;$i<$length;$i++)
            {

                $key .= $tekens{rand(0,35)};
            }

            return $key;
        }
        
        function
validationkey($length)
        {

            $tekens = "1234567890";
            $key = $tekens{rand(0,9)};
            for($i=1;$i<$length;$i++)
            {

                $key .= $tekens{rand(0,9)};
            }

            return $key;
        }

        
echo ubb('[box=Ohjee, Gegevens vergeten?]');
    // Wachtwoord verkrijgen bij gebruikersnaam en emailadres
    echo ubb('[subtitle]1) Alleen je wachtwoord vergeten?[/subtitle]');
        echo '<p>Laten we het niet te lastig voor je maken. Om een nieuw wachtwoord op te vragen hoef je alleen je gebruikersnaam en je emailadres in te vullen. Je krijgt dan automatisch een mailje, waarin stappen en een speciale code staat om je wachtwoord te verandreren. Gebruikersnaam kwijt? Kijk dan onder optie 2.';

        if (isset($_POST['submit']) && !empty($_POST['gebruikersnaam']) && !empty($_POST['email']))
         {

 
             $gebruikersnaam = mysql_real_escape_string(substr($_POST['gebruikersnaam'],0,255));
            $email = mysql_real_escape_string(substr($_POST['email'],0,955));
            $valkey = validationkey(10);
            $wachtwoord = randomwachtwoord(10);
            $wachtwoordmd5 = hash('sha512', $wachtwoord);
    
            $sql2 = "SELECT * FROM users WHERE username='".$gebruikersnaam."' AND email='".$email."'";
            $res2 = mysql_query($sql2)or die(mysql_error());
            if(mysql_num_rows($res2) < 1) {
                echo "De gegevens kunnen niet gevonden worden. Je hebt waarschijnlijk één van de twee ingevulde velden fout getypt. Refresh de pagina (F5) of als je het niet weet, ga naar optie 2.";
                }
else{
                    $row = mysql_fetch_assoc($res2);
                    mysql_query("UPDATE users SET password='".$wachtwoordmd5."' WHERE username='".$gebruikersnaam."'");
                    mysql_query("INSERT INTO pass_request (query, email, username, password, date, ip) VALUES ('".$valkey."','".$row['email']."','".$row['username']."','".$wachtwoord."',NOW(),'".$_SERVER['REMOTE_ADDR']."')");
                $headers  = "Content-Type: text/html; charset=iso-8859-1\n";
                       $headers .= "MIME-Version: 1.0\r\n";
                       $headers .= "From: Habbowereld.nl Support <[email protected]>";
                    mail($row['email'],"Habbowereld.nl - Nieuw wachtwoord","
            
                    Beste <b>"
.$row['username']."</b>,<br>
                    <br>
                    Wij hebben vernomen dat jij een nieuw wachtwoord aanwil vragen. Omdat wij zeker willen weten dat jij dit daadwerkelijk wilt doen, hebben we deze mail gestuurd. Als je op de onderstaande link klikt dan wordt er automatisch opnieuw een email gestuurd met het daarin nieuwe wachtwoord.<br>
                    <br>
                    <a href='http://www.habbowereld.nl/newpass/"
.$valkey."'>http://www.habbowereld.nl/newpass/".$valkey."</a><br>
                    <i>Klik op bovenstaande link, als hij niet klikbaar is, kopieer dan de URL naar je adresbalk.</i><br>
                    Als je de pagina hebt geopend, en hij ook is uitgeladen. Dan ontvang je zometeen een email met je nieuwe wachtwoord.<br>
                    <br>
                    Hopelijk hebben wij jou voldoende kunnen informeren.<br>
                    <br>
                    <br>
                    Met vriendelijke groet,<br>
                    <br>
                    :: Habbowereld Support<br>
                    :: [email protected]<br>
                    :: www.habbowereld.nl"
,$headers);  // stuur de email
                    echo "<br><br><b>De mail is succesvol verstuurd, volg de stappen in je mailbox. Als dit is gebeurd ontvang je daarna je nieuwe wachtwoord.</b>"; // leuk uitlegje
                    }
            }
else{
        
        echo '<br><br><form action="/leden/wwvergeten/" method="post">';
        echo '<table cellspacing="0" cellpadding="0" width="100%" border="0">
                <tr>
                    <td>Gebruikersnaam</td>
                    <td><input type="text" name="gebruikersnaam" maxlength="255" />'
;
                    if(isset($_POST['submit']) && empty($_POST['naam'])) {
                    echo "<br> Vul een gebruikersnaam in."; }
                    echo '</td>
                </tr>
                <tr>
                    <td>E-mailadres</td>
                    <td><input type="text" name="email" maxlength="755" />'
;
                    if(isset($_POST['submit']) && empty($_POST['email'])) {
                    echo "<br> Vul een emailadres in."; }
                    echo '</td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name="submit" value="Verstuur" /></td>
                </tr>
              </table></form><br></p>'
;
                      
                }

                
    // Wachtwoord verkrijgen bij emailadres en opvraagwoord
    echo ubb('[subtitle]2) Gebruikersnaam en wachtwoord kwijt?[/subtitle]');
        echo '<p>Zo, dus jij bent je gebruikersnaam kwijt. Om via deze manier aan je wachtwoord te komen is natuurlijk wel wat lastiger. Je hebt bij het registreren op opvraagwoord in moeten vullen. Dit woord moet je hier ook intypen. Weetje dat ook niet meer? Ga dan verder bij optie 3.';

        if (isset($_POST['submit']) && !empty($_POST['woord']) && !empty($_POST['email']))
         {

 
             $gebruikersnaam = mysql_real_escape_string(substr($_POST['gebruikersnaam'],0,255));
            $email = mysql_real_escape_string(substr($_POST['email'],0,955));
            $valkey = validationkey(10);
            $wachtwoord = randomwachtwoord(10);
            $wachtwoordmd5 = hash('sha512', $wachtwoord);
    
            $sql2 = "SELECT * FROM users WHERE username='".$gebruikersnaam."' AND email='".$email."'";
            $res2 = mysql_query($sql2)or die(mysql_error());
            if(mysql_num_rows($res2) < 1) {
                echo "De gegevens kunnen niet gevonden worden. Je hebt waarschijnlijk één van de twee ingevulde velden fout getypt. Refresh de pagina (F5) of als je het niet weet, ga naar optie 2.";
                }
else{
                    $row = mysql_fetch_assoc($res2);
                    mysql_query("UPDATE users SET password='".$wachtwoordmd5."' WHERE username='".$gebruikersnaam."'");
                    mysql_query("INSERT INTO pass_request (query, email, username, password, date, ip) VALUES ('".$valkey."','".$row['email']."','".$row['username']."','".$row['md5_pass']."',NOW(),'".$_SERVER['REMOTE_ADDR']."')");
                    $keyGET = mysql_query("SELECT * FROM pass_request WHERE password='".$wachtwoord."'");
                    $getKey = mysql_fetch_array($keyGET);
                    $headers  = "Content-Type: text/html; charset=iso-8859-1\n";
                       $headers .= "MIME-Version: 1.0\r\n";
                       $headers .= "From: Habbowereld.nl Support <[email protected]>";
                    mail($row['email'],"Habbowereld.nl - Nieuw wachtwoord","
            
                    Beste <b>"
.$row['username']."</b>,<br>
                    <br>
                    Wij hebben vernomen dat jij een nieuw wachtwoord aanwil vragen. Omdat wij zeker willen weten dat jij dit daadwerkelijk wilt doen, hebben we deze mail gestuurd. Als je op de onderstaande link klikt dan wordt er automatisch opnieuw een email gestuurd met het daarin nieuwe wachtwoord.<br>
                    <br>
                    <a href='http://www.habbowereld.nl/newpass/"
.$valkey."'>http://www.habbowereld.nl/newpass/".$valkey."</a><br>
                    <i>Klik op bovenstaande link, als hij niet klikbaar is, kopieer dan de URL naar je adresbalk.</i><br>
                    Als je de pagina hebt geopend, en hij ook is uitgeladen. Dan ontvang je zometeen een email met je nieuwe wachtwoord.<br>
                    <br>
                    Hopelijk hebben wij jou voldoende kunnen informeren.<br>
                    <br>
                    <br>
                    Met vriendelijke groet,<br>
                    <br>
                    :: Habbowereld Support<br>
                    :: [email protected]<br>
                    :: www.habbowereld.nl"
,$headers);  // stuur de email
                    echo "<br><br><b>De mail is succesvol verstuurd, volg de stappen in je mailbox. Als dit is gebeurd ontvang je daarna je nieuwe wachtwoord.</b>"; // leuk uitlegje
                    }
            }
else{
        
        echo '<br><br><form action="/leden/wwvergeten/" method="post">';
        echo '<table cellspacing="0" cellpadding="0" width="100%" border="0">
                <tr>
                    <td>Gebruikersnaam</td>
                    <td><input type="text" name="gebruikersnaam" maxlength="255" />'
;
                    if(isset($_POST['submit2']) && empty($_POST['naam'])) {
                    echo "<br> Vul een gebruikersnaam in."; }
                    echo '</td>
                </tr>
                <tr>
                    <td>Opvraagwoord</td>
                    <td><input type="text" name="woord" maxlength="755" />'
;
                    if(isset($_POST['submit2']) && empty($_POST['woord'])) {
                    echo "<br> Vul een emailadres in."; }
                    echo '</td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" name="submit2" value="Verstuur" /></td>
                </tr>
              </table></form><br></p>'
;
              
                }

        
    // Wachtwoord niet verkrijgen, contact stappen
    echo ubb('[subtitle]3) Niets lukt? Dan helpen wij handmatig mee![/subtitle]');
        echo '<p>Helaas, omdat je alles bent vergeten kun je niet automatisch een nieuw wachtwoord aanvragen. Hiervoor moet je naar het contactformulier. Klik als onderwerp aan \'Wachtwoord kwijt\'. Vul een correcte emailadres in en habbonaam. In het tekstvak moet je een verklaring zetten dat het account echt van jou is. De mogelijke gebruikersnamen en emailadressen vermelden, hoe je account zou kunnen heten. Mocht je het account aangemaakt hebben op het zelfde netwerk dan dat je nu zit. Dan kunnen wij jou account snel traceren, en anders gaan we onze uiterste best doen om jou account bij jou terecht te laten komen.</p>';

echo ubb('[/box]');
?>
 
PHP hulp

PHP hulp

06/11/2024 00:52:19
 
Whatever Whatever

Whatever Whatever

26/09/2009 12:21:00
Quote Anchor link
Kan je even alle overbodige code eruit halen? Dit is echt veel te lang om te lezen en door te kijken.

Ik vermoed dat je misschien ergens opnieuw de valkey aanmaakt?
 
Stefan

stefan

26/09/2009 13:04:00
Quote Anchor link
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
<?

        function randomwachtwoord($length)
        {

            $tekens = "1234567890aBcDeFgHiJkLmNoPqRsTuVwXyZ";
            $key  = $tekens{rand(0,35)};
            for($i=1;$i<$length;$i++)
            {

                $key .= $tekens{rand(0,35)};
            }

            return $key;
        }
        
        function
validationkey($length)
        {

            $tekens = "1234567890";
            $key = $tekens{rand(0,9)};
            for($i=1;$i<$length;$i++)
            {

                $key .= $tekens{rand(0,9)};
            }

            return $key;
        }


        if (isset($_POST['submit']) && !empty($_POST['gebruikersnaam']) && !empty($_POST['email']))
         {

 
             $gebruikersnaam = mysql_real_escape_string(substr($_POST['gebruikersnaam'],0,255));
            $email = mysql_real_escape_string(substr($_POST['email'],0,955));
            $valkey = validationkey(10);
            $wachtwoord = randomwachtwoord(10);
            $wachtwoordmd5 = hash('sha512', $wachtwoord);
    
            $sql2 = "SELECT * FROM users WHERE username='".$gebruikersnaam."' AND email='".$email."'";
            $res2 = mysql_query($sql2)or die(mysql_error());
            if(mysql_num_rows($res2) < 1) {
                echo "De gegevens kunnen niet gevonden worden. Je hebt waarschijnlijk één van de twee ingevulde velden fout getypt. Refresh de pagina (F5) of als je het niet weet, ga naar optie 2.";
                }
else{
                    $row = mysql_fetch_assoc($res2);
                    mysql_query("UPDATE users SET password='".$wachtwoordmd5."' WHERE username='".$gebruikersnaam."'");
                    mysql_query("INSERT INTO pass_request (query, email, username, password, date, ip) VALUES ('".$valkey."','".$row['email']."','".$row['username']."','".$wachtwoord."',NOW(),'".$_SERVER['REMOTE_ADDR']."')");
                $headers  = "Content-Type: text/html; charset=iso-8859-1\n";
                       $headers .= "MIME-Version: 1.0\r\n";
                       $headers .= "From: Habbowereld.nl Support <[email protected]>";
                    mail($row['email'],"Habbowereld.nl - Nieuw wachtwoord","
            
                    Beste <b>"
.$row['username']."</b>,<br>
                    <br>
                    Wij hebben vernomen dat jij een nieuw wachtwoord aanwil vragen. Omdat wij zeker willen weten dat jij dit daadwerkelijk wilt doen, hebben we deze mail gestuurd. Als je op de onderstaande link klikt dan wordt er automatisch opnieuw een email gestuurd met het daarin nieuwe wachtwoord.<br>
                    <br>
                    <a href='http://www.habbowereld.nl/newpass/"
.$valkey."'>http://www.habbowereld.nl/newpass/".$valkey."</a><br>
                    <i>Klik op bovenstaande link, als hij niet klikbaar is, kopieer dan de URL naar je adresbalk.</i><br>
                    Als je de pagina hebt geopend, en hij ook is uitgeladen. Dan ontvang je zometeen een email met je nieuwe wachtwoord.<br>
                    <br>
                    Hopelijk hebben wij jou voldoende kunnen informeren.<br>
                    <br>
                    <br>
                    Met vriendelijke groet,<br>
                    <br>
                    :: Habbowereld Support<br>
                    :: [email protected]<br>
                    :: www.habbowereld.nl"
,$headers);  // stuur de email
                    echo "<br><br><b>De mail is succesvol verstuurd, volg de stappen in je mailbox. Als dit is gebeurd ontvang je daarna je nieuwe wachtwoord.</b>"; // leuk uitlegje
                    }
            }
else{

// FORM
                      
                }

echo ubb('[/box]');
?>


Is het zo duidelijker?
Gewijzigd op 01/01/1970 01:00:00 door stefan
 
Jan Willem van der Veer

Jan Willem van der Veer

26/09/2009 14:58:00
Quote Anchor link
Ja, het is zo duidelijker...

Maar hier blijkt niet uit dat jij via de e-mail een andere code krijgt dan in je database staat. Heb je zelf al handmatig de code in de mail vergeleken met de code die in de database staat? (Vraag maar even voor de zekerheid).

Zit er niet gewoon per ongeluk een fout in de verwerkingspagina? Of dat je met een .htaccess het geheel herschrijft, maar dat er iets niet helemaal goed gaat?
 
Jesper Diovo

Jesper Diovo

26/09/2009 16:15:00
Quote Anchor link
Gebruik wat meer foutafhandeling. Controleer bijv. of de insert en update queries gelukt zijn, en of de mail daadwerkelijke verstuurd wordt.
 
Stefan

stefan

26/09/2009 23:40:00
Quote Anchor link
Ik heb hem zelf getest
- ik ontvang mail (met andere validatiecode)
- wachtwoord wordt in users geupdate
- gegevens worden aangemaakt in pass_request.
- Als je code uit database vergelijkt met mail, dan doet die van de mail het niet. Maar die in de database staat wel.
 
- SanThe -

- SanThe -

27/09/2009 08:04:00
Quote Anchor link
Je hebt de database gecontroleerd na bovenstaand script uitgevoerd te hebben en vóórdat je op je link in de mail hebt geklikt? En in de databasetabel pass_request in het veld query staat dan een andere code dan in de mail?
 
Stefan

stefan

27/09/2009 08:41:00
Quote Anchor link
Ja, dat is precies het probleem.
 
Eddy E

Eddy E

27/09/2009 08:44:00
Quote Anchor link
En als je de functie die de random code genereert nou eventjes gewoon een statisch getalletje laat teruggeven (de return wegcommentareren en iets anders returnen)....
Is het dan wel hetzelfde, dan roep je de functie dus 2x aan.
 
Stefan

stefan

27/09/2009 08:45:00
Quote Anchor link
Kun je daar een voorbeeld van geven? Ik snap je niet helemaal.
 
- SanThe -

- SanThe -

27/09/2009 08:46:00
Quote Anchor link
Lijkt mij geheel onmogelijk. Dus denk ik dat je het ergens anders moet gaan zoeken. Wordt er niets tussendoor gewijzigd door andere pages?
 
Stefan

stefan

27/09/2009 08:53:00
Quote Anchor link
Nee, hij werkt prima. Alleen die validatiecode wijzigt op onverklaarbare wijze. Terwijl het wachtwoord wel gewoon hetzelfde blijft.

Het is zeg maar onderdeel van een pagina.

je hebt het bestand index.php
die include
- setup.php
daarin staan stylesheets, verbinding naar databases enz.
en dan heb je het gewone bestand waar het layout in staat.
menu en linkermenu haalt hij uit de database.
en dan de hoofdpagina wordt geinclude via pages.php. Dit is apart omdat je hem dan ook kunt printen.

Maar volgens mij ligt het daar niet aan.
 
- SanThe -

- SanThe -

27/09/2009 09:11:00
Quote Anchor link
Doe eens wat Eddy Erkelens voorstelt.
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
function validationkey($length)
        {

            $tekens = "1234567890";
            $key = $tekens{rand(0,9)};
            for($i=1;$i<$length;$i++)
            {

                $key .= $tekens{rand(0,9)};
            }

  //          return $key;
  // onderstaand moet dus in de database en in de mail staan.

              return '12345';
        }

?>
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
 
Boris Mattijssen

Boris Mattijssen

27/09/2009 10:04:00
Quote Anchor link
klopt je database veld wel?
heb je bijv. niet varchar(20) oid.
dan wordt ie namelijk na het 20e teken afgekapt.

gr
 
Mark L

Mark L

27/09/2009 10:27:00
Quote Anchor link
Staat er überhaupt wel iets in je database? Bestaat de DB-cel 'query' wel? Zo ja, als je het gaat controleren, haalt hij het dan ook uit deze DB-cel?
 
- SanThe -

- SanThe -

27/09/2009 10:32:00
Quote Anchor link
Ook nog een vraagje: Is in de tabel users de username wel UNIQUE?
 
Stefan

stefan

27/09/2009 11:06:00
Quote Anchor link
ja, dat ook
 
Jan Koehoorn

Jan Koehoorn

27/09/2009 11:10:00
Quote Anchor link
Je code is erg slecht te lezen omdat je niet netjes inspringt. Verder controleer je niet of je query's wel lukken. En waarom gebruik je twee verschillende tabellen? Maak gewoon een veld "active", type TINYINT. Standaard zet je die op 0, totdat iemand om de validatielink heeft geklikt. Daarna zet je hem op 1.
 
Stefan

stefan

27/09/2009 11:51:00
Quote Anchor link
Heel raar, maar het werkt nu.
Het enige wat ik heb gedaan is dit gewijzigd:

$valkey = validationkey(10);

en daar heb ik van gemaakt:

$valkey2 = validationkey(10);
$valkey = $valkey2;

en toen deed hij het wel.
 
Jesper Diovo

Jesper Diovo

27/09/2009 11:54:00
Quote Anchor link
stefan schreef op 26.09.2009 23:40:
Ik heb hem zelf getest
- ik ontvang mail (met andere validatiecode)
- wachtwoord wordt in users geupdate
- gegevens worden aangemaakt in pass_request.
- Als je code uit database vergelijkt met mail, dan doet die van de mail het niet. Maar die in de database staat wel.

Zou jij na iedere keer dat er een wachtwoord is vergeten de database willen gaan checken of het allemaal gelukt is? Ik denk dat daar veel makkelijkere manieren voor zijn...
 



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.