aanmeld systeem verandert maar if gaat verkeerd
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
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
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
<?
if ( !@include('_config.php') )
{
die('Fatal Error: Please contact admin if you keep getting this error.');
}
$msg1 = '';
if(getenv('REQUEST_METHOD') == 'POST')
{
if ( isset($_POST['aanmelden_y']) )
{
if ( isset($_POST['signup_akkoord']) )
{
if ( !empty($_POST['signup_login']) && !empty($_POST['signup_email']) && !empty($_POST['signup_wachtwoord']) )
{
$result = mysql_query('SELECT id FROM users WHERE ip=\''. $clientIP.'\'');
if ( mysql_num_rows($result) == 0 )
{
$wachtwoord = $_POST['signup_wachtwoord'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $wachtwoord) )
{
$email = $_POST['signup_email'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $email) )
{
$result = mysql_query('SELECT user_id FROM newsletter WHERE email=\''.$email.'\'');
if ( mysql_num_rows($result) == 0 )
{
$login = $_POST['signup_login'];
if ( preg_match('/^[a-zA-Z0-9_-]{3,16}$/', $login) )
{
$result = mysql_query('SELECT id FROM users WHERE login=\''.$login.'\'');
if ( mysql_num_rows($result) == 0 )
{
$refferal_id = 0;
$refferal = ( isset($_GET['crimineeltje']) ) ? trim($_GET['crimineeltje']) : '' ;
if ( preg_match('/^[a-zA-Z0-9_-]{3,16}$/', $refferal) )
{
$result = mysql_query('SELECT id FROM users WHERE login=\''.$refferal.'\'');
if ( $row = mysql_fetch_assoc($result) )
{
$refferal_id = $row['id'];
}
}
mysql_query('');
$user_id = mysql_insert_id();
mysql_query('INSERT INTO users_login (user_id,pass)VALUES(' . $user_id . ',\''.md5($wachtwoord).'\')')OR die(mysql_error());
sms(1,$user_id, "Welkom", "Welkom $login<br>
$msg1 = 'Je bent zojuist aangemeld op de website<br><br>Hieronder vind u de login gegevens <br><br><b><font color="#00ff00">Login: '.$login.'<br>Wachtwoord: '.$wachtwoord.'</font></b>';
}
else
{
$msg1 = 'Er is al iemand met deze login.';
}
}
else
{
$msg1 = 'Je login mag alleen letters, nummers, _ en - bevatten.';
}
}
else
{
$msg1 = 'Dit email adres is al gebruikt.';
}
}
else
{
$msg1 = 'Je moet je geldig email adres geven.';
}
}
else
{
$msg1 = 'Er is al iemand geregistreerd op dit ip.';
}
//nieuwe else controle voor ww
}
else
{
$msg1 = 'Wachtwoord niet goed.';
}
// einde nieuwe controle voor ww
}
else
{
$msg1 = 'Je hebt niet alles ingevoerd.';
}
}
else
{
$msg1 = 'Je hebt de regels niet geaccepteerd.';
}
}
}
?>
if ( !@include('_config.php') )
{
die('Fatal Error: Please contact admin if you keep getting this error.');
}
$msg1 = '';
if(getenv('REQUEST_METHOD') == 'POST')
{
if ( isset($_POST['aanmelden_y']) )
{
if ( isset($_POST['signup_akkoord']) )
{
if ( !empty($_POST['signup_login']) && !empty($_POST['signup_email']) && !empty($_POST['signup_wachtwoord']) )
{
$result = mysql_query('SELECT id FROM users WHERE ip=\''. $clientIP.'\'');
if ( mysql_num_rows($result) == 0 )
{
$wachtwoord = $_POST['signup_wachtwoord'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $wachtwoord) )
{
$email = $_POST['signup_email'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $email) )
{
$result = mysql_query('SELECT user_id FROM newsletter WHERE email=\''.$email.'\'');
if ( mysql_num_rows($result) == 0 )
{
$login = $_POST['signup_login'];
if ( preg_match('/^[a-zA-Z0-9_-]{3,16}$/', $login) )
{
$result = mysql_query('SELECT id FROM users WHERE login=\''.$login.'\'');
if ( mysql_num_rows($result) == 0 )
{
$refferal_id = 0;
$refferal = ( isset($_GET['crimineeltje']) ) ? trim($_GET['crimineeltje']) : '' ;
if ( preg_match('/^[a-zA-Z0-9_-]{3,16}$/', $refferal) )
{
$result = mysql_query('SELECT id FROM users WHERE login=\''.$refferal.'\'');
if ( $row = mysql_fetch_assoc($result) )
{
$refferal_id = $row['id'];
}
}
mysql_query('');
$user_id = mysql_insert_id();
mysql_query('INSERT INTO users_login (user_id,pass)VALUES(' . $user_id . ',\''.md5($wachtwoord).'\')')OR die(mysql_error());
sms(1,$user_id, "Welkom", "Welkom $login<br>
$msg1 = 'Je bent zojuist aangemeld op de website<br><br>Hieronder vind u de login gegevens <br><br><b><font color="#00ff00">Login: '.$login.'<br>Wachtwoord: '.$wachtwoord.'</font></b>';
}
else
{
$msg1 = 'Er is al iemand met deze login.';
}
}
else
{
$msg1 = 'Je login mag alleen letters, nummers, _ en - bevatten.';
}
}
else
{
$msg1 = 'Dit email adres is al gebruikt.';
}
}
else
{
$msg1 = 'Je moet je geldig email adres geven.';
}
}
else
{
$msg1 = 'Er is al iemand geregistreerd op dit ip.';
}
//nieuwe else controle voor ww
}
else
{
$msg1 = 'Wachtwoord niet goed.';
}
// einde nieuwe controle voor ww
}
else
{
$msg1 = 'Je hebt niet alles ingevoerd.';
}
}
else
{
$msg1 = 'Je hebt de regels niet geaccepteerd.';
}
}
}
?>
Michael Visser op 19/09/2017 07:59:59:
.. nu kom ik er dus achter dat er iets niet goed gaat met de mailing ..
.. maar heb ik een if{ else} verkeerd geplaatst vermoed ik ..
.. maar heb ik een if{ else} verkeerd geplaatst vermoed ik ..
Niet echt duidelijk.
En wat is nou het probleem?
ik heb het script omgebouwd dat men zelf een wachtwoord kan invullen maar blijkbaar heb ik een if{else} niet goed staan want hij geeft aan er is al een account op dit ip wat onmogelijk is want mijn ip staat niet in het systeem
Waarom een beperking op IP-adressen als ik vragen mag? Een IP is vaak gebonden aan een netwerk, en niet aan een computer.
Verder ben ik benieuwd waarom je nog mysql-functies gebruikt. In PHP 7 moet je mysqli of PDO gebruiken.
Regel 71 en 77 wisselen.
$client komt vd config
Ga verder...
maar dat is het probleem niet , uhmm ik heb de regels omgedraaid nu geeft hij aan wachtwoord niet goed , lijkt me toch wel goed te gaan of zie ik het nu verkeerd ?
$wachtwoord = $_POST['signup_wachtwoord'];
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $wachtwoord) )
{
html gedeelte heb ik
<label>Wachtwoord:</label><input type="text" name="signup_wachtwoord" />
als wachtwoord heb ik gebruikt qwerty123789
Gewijzigd op 19/09/2017 08:53:16 door Michael Visser
Met andere woorden: Je staat alleen wachtwoorden toe in de vorm van een e-mailadres. En dat klopt niet.
Gewijzigd op 19/09/2017 08:57:04 door - Ariën -
nee idd dat klopt niet nu zie ik het ook haha , maar je zegt (verouderde) reguliere expressie voor e-mail kan je dat nader omschrijven ? misschien dat dat mijn probleem met mailen wel is ?
Wat is je mailscript?
[email protected]' is bijv. niet mogelijk.
'mail($email,'Website',$bericht,'MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\nFrom: website<[email protected]>\r\n');
Toevoeging op 19/09/2017 09:13:38:
- Ariën - op 19/09/2017 09:12:34:
'[email protected]' is bijv. niet mogelijk.
hoe kan ik dit oplossen want dit is natuurlijk wel essentieel
thx ga het gelijk doorlezen :)
filter_var om je e-mailadressen te valideren, en zorg dat je een recente PHP-versie draait.
Bij zeer sterke voorkeur raad ik aan om je eens te verdiepen in de functies van mysqli en deze te gebruiken. In PHP 7 zijn de mysql-functies niet meer beschikbaar, en zal je script direct vastlopen.
Gebruik Bij zeer sterke voorkeur raad ik aan om je eens te verdiepen in de functies van mysqli en deze te gebruiken. In PHP 7 zijn de mysql-functies niet meer beschikbaar, en zal je script direct vastlopen.
Gewijzigd op 19/09/2017 09:19:57 door - Ariën -
Toevoeging op 19/09/2017 09:22:40:
dus
if ( preg_match('/^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]{2,6}$/', $email) )
{
word gewoon enkel
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
en dan natuurlijk de if etc aanpassen
FILTER_VALIDATE_EMAIL. En dit geheel moet in plaats van de reguliere-expressie.
Nog wat tips:
- Ik zie een hoop queries die gevoelig zijn voor SQL-injection. Dus escape deze POST/GET waardes met mysqli_real_escape_string()
- md5() als hashing voor passworden is niet meer van deze tijd en eenvoudig te kraken. Gebruik password_hash() en password_verify(). Uiteraard moet je alle huidige wachtwoorden resetten.
Gewijzigd op 19/09/2017 09:29:39 door - Ariën -
Toevoeging op 19/09/2017 10:11:47:
ik zag het tik foutje haha
Toevoeging op 19/09/2017 10:11:47:
ik zag het tik foutje haha
Als ik meer dan drie if's in elkaar zie staan dan ga ik het niet meer lezen. Lang leve de functies ;-)
Als er geen foutmeldingen in de array staan, dan is alles goed, en kan de afhandeling van je script beginnen.
Zoiets is niet alleen een stuk beter onderhoudbaar, maar ook eens gebruiksvriendelijker omdat de gebruiker meteen ziet wat er fout is ingevuld.