md5 encryptie
Als ik bij de INSERT query van $ww het volgende maak md5($ww) dan komt het wachtwoord met md5 encryptie in de database te staan. Maar ik kan dan alleen maar getallen invoeren geen letter of tekens dan werkt de query niet.
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
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
<?php
if (isset($_POST["reg"])){
$vnaam=$_POST["voornaam"];
$anaam=$_POST["achternaam"];
$email=$_POST["emailadres"];
$ww=$_POST["wachtwoord"];
$ww2=$_POST["cwachtwoord"];
$validmail = preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email);
$query = mysql_query("SELECT emailadres FROM members WHERE emailadres = '".mysql_real_escape_string($email)."'");
$row = mysql_fetch_assoc($query);
$zoekemail = $row['emailadres'];
unset ($row, $query);
if ($email == "" || $ww == ""){
echo"Vul alle verplichte velden in";
}
elseif(!$validmail){
echo"Ongeldig emailadres";
}
elseif(strcmp($ww, $ww2)!= 0 ){
echo "Wachtwoord komt niet overeen";
}
elseif($email == $zoekemail){
echo"Emailadres is al in gebruik";
}
else{
$sql = mysql_query("INSERT INTO members (voornaam, achternaam, emailadres, wachtwoord, cwachtwoord)VALUES ('$vnaam', '$anaam', '$email', '$ww', '$ww2')") or die ("INSERT query werkt niet");
header ("Refresh: 5; url=index.php");
echo "U bent succesvol geregistreerd";
exit;
}
}
?>
</td></tr>
</table>
if (isset($_POST["reg"])){
$vnaam=$_POST["voornaam"];
$anaam=$_POST["achternaam"];
$email=$_POST["emailadres"];
$ww=$_POST["wachtwoord"];
$ww2=$_POST["cwachtwoord"];
$validmail = preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email);
$query = mysql_query("SELECT emailadres FROM members WHERE emailadres = '".mysql_real_escape_string($email)."'");
$row = mysql_fetch_assoc($query);
$zoekemail = $row['emailadres'];
unset ($row, $query);
if ($email == "" || $ww == ""){
echo"Vul alle verplichte velden in";
}
elseif(!$validmail){
echo"Ongeldig emailadres";
}
elseif(strcmp($ww, $ww2)!= 0 ){
echo "Wachtwoord komt niet overeen";
}
elseif($email == $zoekemail){
echo"Emailadres is al in gebruik";
}
else{
$sql = mysql_query("INSERT INTO members (voornaam, achternaam, emailadres, wachtwoord, cwachtwoord)VALUES ('$vnaam', '$anaam', '$email', '$ww', '$ww2')") or die ("INSERT query werkt niet");
header ("Refresh: 5; url=index.php");
echo "U bent succesvol geregistreerd";
exit;
}
}
?>
</td></tr>
</table>
- Variabelen kopieren (regel 4 t/m 8) is nergens voor nodig.
- E-mailadressen zijn moeilijk te controleren. Jou regex heeft ook niet zoveel zin.
- Foutafhandeling is niet goed. Zie wat mysql_query terug geeft.
- Zie ook bijvoorbeeld trim.
- Variabelen buiten quotes voorkomt veel fouten.
- sql injections mogelijk, zie mysql_real_escape_string.
- Gebruik geen 'or die'. Dat is geen foutafhandeling.
- Dit hoort niet midden in een tabel voor te komen.
- Let op dat je geen output hebt boven de header.
Gewijzigd op 21/01/2011 19:24:40 door Jordi Kroon
Jordi kroon op 21/01/2011 19:21:08:
(...)
- controleren of er gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST' {
- controleren of er gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST' {
Het staat er boven goed, toch doe je het nog fout.
klopt was een haakje vergeten xD
salt.
En in principe hoeft mysql_real_escape_string niet over het wachtwoord veld als je md5 gebruikt, aangezien je dan geen 'onveilige' tekens krijgt. Gebruik ook een Je kan beter 1 tabel met wachtwoord maken , en 2 velden in je form
Komt pass1 overeen met pass2 dan dan zet je pass1 in de database pass2 niet want dat is onnodig
Offtopic:
Is phphulp zo traag of ligt het aan mij
Offtopic @ Jordi
Komt omdat we een poging deden tot smiley's posten bij 't Koffiehoek topic "Wat eten jullie?" volgens mij...
Komt omdat we een poging deden tot smiley's posten bij 't Koffiehoek topic "Wat eten jullie?" volgens mij...
Gewijzigd op 21/01/2011 19:53:07 door Jurrian Nijland
Ohke
Maar ik heb nog een paar vraagjes:
Als ik de variabele weg haal dan krijg ik allemaal error meldingen. Dus ik snap niet precies wat daar mee bedoelt wordt.
En mijn vraag die ik had is ook nog niet helemaal duidelijk hoe ik md5 moet gebruiken.
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
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
<?php
$dbconn = mysql_connect("localhost","root","usbw") or die("Unable to connect to server");
$db = mysql_select_db("database", $dbconn) or die("Database not found");
?>
<script language="JavaScript">
function change (object){
var obj = document.getElementById(object);
if(obj.value == ""){
obj.value = object;
}
}
</script>
<table>
<h1>Registratie</h1>
<form action="index.php" method="post" name="register">
<input type="hidden" id="voornaam" OnChange="change('invoerveld')" id="voornaam"/>
<input type="hidden" id="achternaam" OnChange="change('invoerveld')" id="achternaam"/>
<input type="hidden" id="emailadres" OnChange="change('invoerveld')" id="emailadres"/>
<input type="hidden" id="wachtwoord" OnChange="change('invoerveld')" id="wachtwoord"/>
<tr><td>Voornaam:</td><td><input type="text" name="voornaam" /></td></tr>
<tr><td>Achternaam:</td><td><input type="text" name="achternaam" /></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" /></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord" /></td></tr>
<tr><td>Bevestig Wachtwoord:</td><td><input type="password" name="cwachtwoord" /></td></tr>
<tr><td><input type="submit" name="reg" value="registreren" /></td><td>
</form>
</td></tr>
</table>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$vnaam=$_POST["voornaam"];
$anaam=$_POST["achternaam"];
$email=$_POST["emailadres"];
$ww=$_POST["wachtwoord"];
$ww2=$_POST["cwachtwoord"];
$validmail = preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email);
$query = mysql_query("SELECT emailadres FROM members WHERE emailadres = '".mysql_real_escape_string($email)."'");
$row = mysql_fetch_assoc($query);
$zoekemail = $row['emailadres'];
unset ($row, $query);
if ($email == "" || $ww == ""){
echo"Vul alle verplichte velden in";
}
elseif(!$validmail){
echo"Ongeldig emailadres";
}
elseif(strcmp($ww, $ww2)!= 0 ){
echo "Wachtwoord komt niet overeen";
}
elseif($email == $zoekemail){
echo"Emailadres is al in gebruik";
}
else{
$sql = mysql_query("INSERT INTO members (voornaam, achternaam, emailadres, wachtwoord)VALUES ('$vnaam', '$anaam', '$email', '$ww')") or die ("INSERT query werkt niet");
header ("Refresh: 5; url=index.php");
echo "U bent succesvol geregistreerd";
exit;
}
}
?>
$dbconn = mysql_connect("localhost","root","usbw") or die("Unable to connect to server");
$db = mysql_select_db("database", $dbconn) or die("Database not found");
?>
<script language="JavaScript">
function change (object){
var obj = document.getElementById(object);
if(obj.value == ""){
obj.value = object;
}
}
</script>
<table>
<h1>Registratie</h1>
<form action="index.php" method="post" name="register">
<input type="hidden" id="voornaam" OnChange="change('invoerveld')" id="voornaam"/>
<input type="hidden" id="achternaam" OnChange="change('invoerveld')" id="achternaam"/>
<input type="hidden" id="emailadres" OnChange="change('invoerveld')" id="emailadres"/>
<input type="hidden" id="wachtwoord" OnChange="change('invoerveld')" id="wachtwoord"/>
<tr><td>Voornaam:</td><td><input type="text" name="voornaam" /></td></tr>
<tr><td>Achternaam:</td><td><input type="text" name="achternaam" /></td></tr>
<tr><td>Emailadres:</td><td><input type="text" name="emailadres" /></td></tr>
<tr><td>Wachtwoord:</td><td><input type="password" name="wachtwoord" /></td></tr>
<tr><td>Bevestig Wachtwoord:</td><td><input type="password" name="cwachtwoord" /></td></tr>
<tr><td><input type="submit" name="reg" value="registreren" /></td><td>
</form>
</td></tr>
</table>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
$vnaam=$_POST["voornaam"];
$anaam=$_POST["achternaam"];
$email=$_POST["emailadres"];
$ww=$_POST["wachtwoord"];
$ww2=$_POST["cwachtwoord"];
$validmail = preg_match('/^[^@]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/', $email);
$query = mysql_query("SELECT emailadres FROM members WHERE emailadres = '".mysql_real_escape_string($email)."'");
$row = mysql_fetch_assoc($query);
$zoekemail = $row['emailadres'];
unset ($row, $query);
if ($email == "" || $ww == ""){
echo"Vul alle verplichte velden in";
}
elseif(!$validmail){
echo"Ongeldig emailadres";
}
elseif(strcmp($ww, $ww2)!= 0 ){
echo "Wachtwoord komt niet overeen";
}
elseif($email == $zoekemail){
echo"Emailadres is al in gebruik";
}
else{
$sql = mysql_query("INSERT INTO members (voornaam, achternaam, emailadres, wachtwoord)VALUES ('$vnaam', '$anaam', '$email', '$ww')") or die ("INSERT query werkt niet");
header ("Refresh: 5; url=index.php");
echo "U bent succesvol geregistreerd";
exit;
}
}
?>
Denk eraan dat je md5 ook in raw binair op kan slaan in MySQL en daarmee wat geheugen kan besparen. md5($string, true);
vergeet niet de rest van je script waar je $vnaam $anaam etc hebt staan dan ook te veranderen naar $_POST['voornaam'] $_POST['achternaam'] etc
Marco M op 21/01/2011 20:30:03:
Weet je wat er nu in $validmail staat?
Quote:
Return Values
preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match. preg_match_all() on the contrary will continue until it reaches the end of subject. preg_match() returns FALSE if an error occurred.
preg_match() returns the number of times pattern matches. That will be either 0 times (no match) or 1 time because preg_match() will stop searching after the first match. preg_match_all() on the contrary will continue until it reaches the end of subject. preg_match() returns FALSE if an error occurred.
Pim - op 21/01/2011 21:03:28:
Denk eraan dat je md5 ook in raw binair op kan slaan in MySQL en daarmee wat geheugen kan besparen. md5($string, true);
Ik begrijp niet helemaal wat je hiermee bedoelt, kun je mij misschien een uitleg geven hierover?
Toevoeging op 21/01/2011 22:35:07:
Thomas van den Bulk op 21/01/2011 21:06:14:
vergeet niet de rest van je script waar je $vnaam $anaam etc hebt staan dan ook te veranderen naar $_POST['voornaam'] $_POST['achternaam'] etc
Code (php)
1
2
3
2
3
$sql = mysql_query("INSERT INTO members (voornaam, achternaam, emailadres, wachtwoord)VALUES ('".$_POST['voornaam'].", ".$_POST['achternaam'].", ".$_POST['emailadres'].", ".$_POST['wachtwoord']."')");
[/code/
Ik heb het gedaan bij de query, maar daar wil het niet lukken. Ik ga er vanuit dat ik iets fout doe... ;)
[/code/
Ik heb het gedaan bij de query, maar daar wil het niet lukken. Ik ga er vanuit dat ik iets fout doe... ;)
Je mist enkele quotes om de data heen en je mist de beveiliging van mysql_real_escape_string() tegen sql-injection.
Oftewel, mijn allereerste post is nog steeds van toepassing.
- SanThe - op 21/01/2011 22:39:22:
Je mist enkele quotes om de data heen en je mist de beveiliging van mysql_real_escape_string() tegen sql-injection.
Ik heb nou zo:
Code (php)
1
('".mysql_real_escape($_POST['voornaam'])."', '".mysql_real_escape($_POST['achternaam'])."', '".mysql_real_escape($_POST['emailadres'])."', '".mysql_real_escape($_POST['wachtwoord'])."')")
Maar dan krijg ik de volgende melding:
Call to undefined function mysql_real_escape() in
Je leest ook niet goed.
Lezen.
Ik heb ook gelezen alleen dan begrijp ik niet precies hoe je het bedoelt.
Marco M op 21/01/2011 22:52:31:
Ik heb ook gelezen alleen dan begrijp ik niet precies hoe je het bedoelt.
Je hebt NIET goed gelezen. Dit: mysql_real_escape() was NIET mijn antwoord.