Verschillende code (activatie mail)

Gestart doorSanderc6 reacties19 weergaven

7 berichten · pagina 1 van 1

Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Hallo,

Voor mijn kleine CMS ben ik nu bezig met het activatie-mail systeem.
Ik maak dus een random code aan, die code steekt hij in de database, en (zou hij moeten) stuurt hij op naar de database.
Nu zit ik met het probleem dat ik steeds met 2 verschillende codes zit.

Zo genereer ik de code;

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

function code($length = 6)
{
$validCharacters = "ABCDEFGHIKLMOPQRSTUVWXYZ1234567890";
$validCharNumber = strlen($validCharacters);

$result = "";

for ($i = 0; $i < $length; $i++) {
$index = mt_rand(0, $validCharNumber - 1);
$result .= $validCharacters[$index];
}

return $result;
}

$_SESSION[code] = code();
$code = $_SESSION[code];

Helemaal vanachter zie je de ID die word opgestuurd naar de database;
Afbeelding

En dat stuur ik dan zo op;

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

$aanmeld = "
INSERT INTO leden
(
naam,
wachtwoord,
email,
kladblok,
rang,
ac_mail
)
VALUES
(
".$naam.",
".sha1($pass).",
".$email.",
Leeg,
1,
".$code."
)
";

Hier zie je de mail, met een andere code.
Afbeelding

En de mail verstuur ik zo;

Codeblok (voorbeeld.php):

1
2
3
4
5
6
7
8
9

$mail = $email;
$subject = "Activatiemail CMSander";
$datum .= date(d/m/Y H:i:s);
$inhoud .= "Surf naar http://www.sander.freux.nl/cms/activeer_mail.php en vul er de code ".$code." in";
$inhoud .= "Verstuurd op ".$datum." via het IP-Adress ".$_SERVER[REMOTE_ADDR]."

";
mail($mail, $subject, $inhoud);

echo Er is een activatiemail verstuurd naar het volgende email adress:.$email;
$aan->free_result();

Heel de code;
Spoiler tonen
Codeblok (aanmelden.php):
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


require_once layout_boven.php;
require_once config.php;
function
code($length = 6)
{

$validCharacters = "ABCDEFGHIKLMOPQRSTUVWXYZ1234567890";
$validCharNumber = strlen($validCharacters);

$result = "";

for ($i = 0; $i < $length; $i++) {
$index = mt_rand(0, $validCharNumber - 1);
$result .= $validCharacters[$index];
}


return $result;
}


$_SESSION[code] = code();
$code = $_SESSION[code];

if($_SESSION[login])
{

header(Refresh: 1; url=menu.php);
echoJe bent al ingelogd;
exit;
}

else
{
}


if ($_SERVER[REQUEST_METHOD] == "POST")
{

if(isset($_POST[naam]))
{

if(isset($_POST[pass]))
{

if(isset($_POST[email]))
{

$naam = $connect->real_escape_string($_POST[naam]);
$pass = $connect->real_escape_string($_POST[pass]);
$email = $connect->real_escape_string($_POST[email]);

$aanmeld = "
INSERT INTO leden
(
naam,
wachtwoord,
email,
kladblok,
rang,
ac_mail
)
VALUES
(
"
.$naam.",
"
.sha1($pass).",
"
.$email.",
Leeg,
1,
"
.$code."
)
"
;

$aan = $connect->prepare($aanmeld);

if($result = $aan->execute())
{

$mail = $email;
$subject = "Activatiemail CMSander";
$datum .= date(d/m/Y H:i:s);
$inhoud .= "Surf naar http://www.sander.freux.nl/cms/activeer_mail.php en vul er de code ".$code." in";
$inhoud .= "Verstuurd op ".$datum." via het IP-Adress ".$_SERVER[REMOTE_ADDR]."

"
;
mail($mail, $subject, $inhoud);

echo Er is een activatiemail verstuurd naar het volgende email adress:.$email;
$aan->free_result();
}

else
{
echoAanmelden mislukt wegens een probleem met de SQL;
}
}

else
{
echoHet veld voor de e-mail is niet correct ingevuld!;
}
}

else
{
echoHet veld voor het wachtwoord is niet correct ingevuld!;
}
}

else
{
echoHet veld voor de gebruikersnaam is niet correct ingevuld!;
}
}

else
{
?>

Aanmelden



}
require_once layout_onder.php;
?>

ja ik weet dat dit een niet zeer veilige mannier is van activatie code, het systeem is nog niet af dus ik wil eerst dit opgelost krijgen...

Bedankt
0
Berichten
10.409
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik denk dat je bij de mail de functie oproept en ook bij je query. Zo roep je dus 2x de functie op en krijg je 2 verschillende codes. Roep de functie eens 1x op en sla de inhoud op in een variabel en gebruik ze in je query en in je mail. Het kan zijn dat ik het mis heb want ik heb niet veel tijd om je code te bekijken.
0
Berichten
6.144
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Is het niet makkelijker om gewoon [func]microtime()[/func] te gebruiken?
0
Berichten
4.451
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Ik zou zoals JPonson microtime gebruiken, dan heb je bijna altijd dat iedereen een andere code heeft. En dan dat van kingunit gebruiken.

Dus:

[COLOR= #0000BB]<?php
$code[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/microtime"]microtime[/URL][COLOR= #007700]();[/COLOR]
?>


Dit is de aanmeld query: (is hetzelfde gebleven)

$aanmeld = "
                    INSERT INTO leden
                    (
                        naam,
                        wachtwoord,
                        email,
                        kladblok,
                        rang,
                        ac_mail
                    )
                    VALUES
                    (
                        ".$naam.",
                        ".sha1($pass).",
                        ".$email.",
                        Leeg,
                        1,
                        ".$code."
                    )
                ";
?>


Dit is de mail: (die is zo te zien ook hetzelfde gebleven)

$mail = $email; 
                    $subject = "Activatiemail CMSander"; 
                    $datum .= date(d/m/Y H:i:s);
                    $inhoud .= "Surf naar http://www.sander.freux.nl/cms/activeer_mail.php en vul er de code ".$code." in";
                    $inhoud .= "Verstuurd op ".$datum." via het IP-Adress ".$_SERVER[REMOTE_ADDR]."nn";
                    mail($mail, $subject, $inhoud);
                    
                    echo Er is een activatiemail verstuurd naar het volgende email adress:.$email;
                    $aan->free_result();


toevoeging op 25 augustus 2013, 16:05:50:
En dan kan je de $_SESSION[code] wel weghalen van boven en de $code en gewoon gebruiken wat ik zei, het zou moeten werken als ik zo snel kijk
0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Kingunit schreef:
Ik denk dat je bij de mail de functie oproept en ook bij je query. Zo roep je dus 2x de functie op en krijg je 2 verschillende codes. Roep de functie eens 1x op en sla de inhoud op in een variabel en gebruik ze in je query en in je mail. Het kan zijn dat ik het mis heb want ik heb niet veel tijd om je code te bekijken.
Ik roep de functie toch maar 1 keer op?
0
Berichten
14.025
Reputatie
1
Punten
0,01
Lid sinds
Laatst gezien
je hebt geen session_start();

Of staat die in de config?
0
Sanderc

Lid · Topicstarter

Berichten
11.263
Reputatie
0
Punten
0,00
Lid sinds
Laatst gezien
Dylanh schreef:
je hebt geen session_start();

Of staat die in de config?
Oh nee, vergeet ik altijd emo
Bedankt
0

Jouw reactie

Deel je idee, stel een vraag of help een ander verder.

Editor laden…

Praat mee met de One2xs-community.

Inloggen om te reageren