Ik ben nu al even aan klooien om MD5 goed werkend te krijgen in mijn registratie formulier maar het lukt mij op 1 of andere manier niet. Ik heb al verschillende dingen geprobeerd.
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.
<?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>
?
Onbekende gebruiker
21-01-2011 19:18
- Controleren of een formulier gepost is doe je met if($_SERVER['REQUEST_METHOD'] == 'POST') niet met isset($_POST['reg']).
- 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 [php]mysql_query[/php] terug geeft.
- Zie ook bijvoorbeeld [php]trim[/php].
- Variabelen buiten quotes voorkomt veel fouten.
- [google]sql injections[/google] mogelijk, zie [php]mysql_real_escape_string[/php].
- 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.
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 [google]salt[/google].
uhm waarom gooi je wachtwoord EN je controle van het wachtwoord in de database
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]
Bedankt voor jullie reacties ik ga wat klooien met de bovenstaande reacties.
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.
<?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;
}
}
?>