Register systeem
Er zit alleen 1 fout in, hij verstuurd namelijk de email niet met een activatie code.
Maar zonder die mail kan je ook al binnen komen, je bent dan dus gewoon geregistreed!
Het script is 120 lines lang, gewoon laten zien?!
relevante stukken
Ga zelf eens debuggen.
1) Waar wordt de code aangemaakt?
2) Waar wordt de code opgeslagen?
3) Waar wordt de code in de email gezet?
4) Waar wordt de code uitgelezen in vergeleken met de opgeslagen code?
5) Waarom sta jij toe om binnen te komen zonder (geldige) code?
Die vragen kun je zelf 1 voor 1 beantwoorden.
Code (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
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
<?PHP
if(isset($_GET['id'],$_GET['code'])) {
$id = $_GET['id'];
$code = $_GET['code'];
$dbres = mysql_query("SELECT * FROM `temp` WHERE `area`='signup' AND `id`='$id' AND `code`='$code'");
if($data = mysql_fetch_object($dbres)) {
mysql_query("UPDATE `users` SET `activated`='1',`start`=NOW() WHERE `login`='{$data->login}'");
mysql_query("DELETE FROM `temp` WHERE `id`='$id'");
if($data->forwerdedFor != ""){
mysql_query("UPDATE `users` SET `respect`=`respect`+5 WHERE `id`='{$data->forwardedFor}'");
mysql_query("INSERT INTO `logs`(`time`,`login`,`person`,`code`,`area`,`com`) values(NOW(),'{$data->login}','{$data->forwardedFor}','5','respect','ReferrerID')");}
print "De activatie is voltooid, je kunt nu inloggen.";
}
else
print "Incorrecte activatie-code...";
}
elseif(isset($_POST['submit'])) {
$gebruiker = $_POST['gebruiker'];
$pass = $_POST['pass'];
$refer = $_POST['refer'];
$passconfirm = $_POST['passconfirm'];
$email = $_POST['email'];
$ip = $_SERVER['REMOTE_ADDR'];
$geslacht = $_POST['geslacht'];
$steden = Array("Agrigento","Caltanissetta","Catania","Enna","Messina","Ragusa","Syracuse","Trapani");
$rstad = rand(0,8);
$stad = "$steden[$rstad]";
$ipexist = mysql_query("SELECT * FROM `users` WHERE `ip`='{$ip}' AND `status`='levend'");
$ipexist = mysql_num_rows($ipexist);
$ipallowed = mysql_query("SELECT * FROM `multiple` WHERE `ip`='{$ip}'");
$ipallowed = mysql_num_rows($ipallowed);
$exist = mysql_query("SELECT * FROM `users` WHERE `login`='{$gebruiker}'");
$exist = mysql_num_rows($exist);
$eexist = mysql_query("SELECT * FROM `users` WHERE `login`='{$gebruiker}' AND `status`='levend'");
$eexist = mysql_num_rows($eexist);
$rexist = mysql_query("SELECT * FROM `users` WHERE `id`='{$refer}'");
$rexists = mysql_fetch_object($rexist);
$rexist = mysql_num_rows($rexist);
$referlogin = $rexists->login;
if(preg_match('/^[a-zA-Z0-9_\-]+$/', $gebruiker) == 0) { print "De opgegeven gebruikersnaam is ongeldig, je mag enkel letters of cijfers gebruiken.\n"; }
elseif(!$pass || $pass != $passconfirm) { print "De opgegeven wachtwoorden zijn niet identiek.\n"; }
elseif(preg_match('/^.+@.+\..+$/',$email) == 0) { print "Het opgegeven e-mailadres is ongeldig.\n"; }
elseif($ipexist == 1 && $ipallowed != 1) { print "Er is al een account gemaakt op dit IP adres.\n"; }
elseif($exist == 1) { print "De opgegeven gebruikersnaam is al in gebruik.\n"; }
elseif($eexist == 1) { print "Er is al iemand aangemeld met dit e-mailadres.\n"; }
elseif($rexist != 1 && $refer!= "") { print "De opgegeven referrerID bestaat niet.\n"; }
else {
$code = rand(100000,999999);
mysql_query("INSERT INTO `users`(`start`,`login`,`pass`,`ip`,`email`,`stad`,`geslacht`,`activated`) values(NOW(),'{$gebruiker}',MD5('{$pass}'),'{$ip}','{$email}','{$stad}','{$geslacht}','1')");
mysql_query("INSERT INTO `temp`(login,ip,code,area,time,forwardedFor) values('$gebruiker','$ip',$code,'signup',NOW(),'$referlogin')");
$id = mysql_insert_id();
mail($email,"Ladro activatie-code","Hallo $gebruiker,\n\nBedankt voor het aanmelden op Ladro.\n Je gegevens zijn: $gebruiker \n Je wachtwoord: $pass
\n\nKlik hier om je account te activeren:\nhttp://www.ladro.nl/register.php?id=$id&code=$code","From: Ladro <[email protected]>\n");
//print "Je bent geregistreerd, je kan je nu aanmelden <br><a href='login.php'>Login</a>";
//mail($email,"Ladro registratie","Hallo $gebruiker,\n\nBedankt voor het aanmelden op Ladro.\n Je gebruikersnaam: $gebruiker \n Je wachtwoord: $pass","From: Ladro <[email protected]>\n");
print "Je bent geregistreerd, log nu in en speel!\n";
//officeel: Je bent geregistreerd, er is een e-mail gestuurd naar $email met een activatie-code...\n" maar deed het niet,, is vervangen.
}
}
$refer = $_GET['refer'];
?>
if(isset($_GET['id'],$_GET['code'])) {
$id = $_GET['id'];
$code = $_GET['code'];
$dbres = mysql_query("SELECT * FROM `temp` WHERE `area`='signup' AND `id`='$id' AND `code`='$code'");
if($data = mysql_fetch_object($dbres)) {
mysql_query("UPDATE `users` SET `activated`='1',`start`=NOW() WHERE `login`='{$data->login}'");
mysql_query("DELETE FROM `temp` WHERE `id`='$id'");
if($data->forwerdedFor != ""){
mysql_query("UPDATE `users` SET `respect`=`respect`+5 WHERE `id`='{$data->forwardedFor}'");
mysql_query("INSERT INTO `logs`(`time`,`login`,`person`,`code`,`area`,`com`) values(NOW(),'{$data->login}','{$data->forwardedFor}','5','respect','ReferrerID')");}
print "De activatie is voltooid, je kunt nu inloggen.";
}
else
print "Incorrecte activatie-code...";
}
elseif(isset($_POST['submit'])) {
$gebruiker = $_POST['gebruiker'];
$pass = $_POST['pass'];
$refer = $_POST['refer'];
$passconfirm = $_POST['passconfirm'];
$email = $_POST['email'];
$ip = $_SERVER['REMOTE_ADDR'];
$geslacht = $_POST['geslacht'];
$steden = Array("Agrigento","Caltanissetta","Catania","Enna","Messina","Ragusa","Syracuse","Trapani");
$rstad = rand(0,8);
$stad = "$steden[$rstad]";
$ipexist = mysql_query("SELECT * FROM `users` WHERE `ip`='{$ip}' AND `status`='levend'");
$ipexist = mysql_num_rows($ipexist);
$ipallowed = mysql_query("SELECT * FROM `multiple` WHERE `ip`='{$ip}'");
$ipallowed = mysql_num_rows($ipallowed);
$exist = mysql_query("SELECT * FROM `users` WHERE `login`='{$gebruiker}'");
$exist = mysql_num_rows($exist);
$eexist = mysql_query("SELECT * FROM `users` WHERE `login`='{$gebruiker}' AND `status`='levend'");
$eexist = mysql_num_rows($eexist);
$rexist = mysql_query("SELECT * FROM `users` WHERE `id`='{$refer}'");
$rexists = mysql_fetch_object($rexist);
$rexist = mysql_num_rows($rexist);
$referlogin = $rexists->login;
if(preg_match('/^[a-zA-Z0-9_\-]+$/', $gebruiker) == 0) { print "De opgegeven gebruikersnaam is ongeldig, je mag enkel letters of cijfers gebruiken.\n"; }
elseif(!$pass || $pass != $passconfirm) { print "De opgegeven wachtwoorden zijn niet identiek.\n"; }
elseif(preg_match('/^.+@.+\..+$/',$email) == 0) { print "Het opgegeven e-mailadres is ongeldig.\n"; }
elseif($ipexist == 1 && $ipallowed != 1) { print "Er is al een account gemaakt op dit IP adres.\n"; }
elseif($exist == 1) { print "De opgegeven gebruikersnaam is al in gebruik.\n"; }
elseif($eexist == 1) { print "Er is al iemand aangemeld met dit e-mailadres.\n"; }
elseif($rexist != 1 && $refer!= "") { print "De opgegeven referrerID bestaat niet.\n"; }
else {
$code = rand(100000,999999);
mysql_query("INSERT INTO `users`(`start`,`login`,`pass`,`ip`,`email`,`stad`,`geslacht`,`activated`) values(NOW(),'{$gebruiker}',MD5('{$pass}'),'{$ip}','{$email}','{$stad}','{$geslacht}','1')");
mysql_query("INSERT INTO `temp`(login,ip,code,area,time,forwardedFor) values('$gebruiker','$ip',$code,'signup',NOW(),'$referlogin')");
$id = mysql_insert_id();
mail($email,"Ladro activatie-code","Hallo $gebruiker,\n\nBedankt voor het aanmelden op Ladro.\n Je gegevens zijn: $gebruiker \n Je wachtwoord: $pass
\n\nKlik hier om je account te activeren:\nhttp://www.ladro.nl/register.php?id=$id&code=$code","From: Ladro <[email protected]>\n");
//print "Je bent geregistreerd, je kan je nu aanmelden <br><a href='login.php'>Login</a>";
//mail($email,"Ladro registratie","Hallo $gebruiker,\n\nBedankt voor het aanmelden op Ladro.\n Je gebruikersnaam: $gebruiker \n Je wachtwoord: $pass","From: Ladro <[email protected]>\n");
print "Je bent geregistreerd, log nu in en speel!\n";
//officeel: Je bent geregistreerd, er is een e-mail gestuurd naar $email met een activatie-code...\n" maar deed het niet,, is vervangen.
}
}
$refer = $_GET['refer'];
?>
Heb de knoppen eruit gehaald wes, zo kort mogelijk.
Ze hebben me al eerder gezegd zo min mogelijk met de * te werken, maar doe het liever zo.
Gewijzigd op 01/01/1970 01:00:00 door Chris
En dan nu de vragen van frank beantwoorden
De vragen zijn duidelijk, maar daar kom ik nou juist niet uit..
en even bovenaan de pagina error_reporting(E_ALL);
:)
Edit:
Misschien is het slim om ook nog een mail validate op de $_POST['mail'] los te laten. ;) (Geldt niet echt voor dit probleem.. maar voor als het straks open staat voor bezoekers! ;))
Misschien is het slim om ook nog een mail validate op de $_POST['mail'] los te laten. ;) (Geldt niet echt voor dit probleem.. maar voor als het straks open staat voor bezoekers! ;))
Gewijzigd op 01/01/1970 01:00:00 door Jesper Diovo
De code is een bende, dan gaat het altijd fout. Ik gok dat je zeker de helft van de queries zo kunt verwijderen en de boel netjes kunt gaan samenvoegen. Je zult in elk geval flink moeten opruimen.
Want ik heb het zo geleerd en vind het persoonlijk prettig werken zoals eerder vernoemd in een reactie hierboven..
Zo heb jij het niet geleerd, zo heb je het gekopierd. Dat is een fundementeel verschil...
idd :s snap niets van dat script ...
Mee eens, dit is een bende, gezien vanuit PHP EN SQL perspectief..