beste iedereen,

ik ben een registreer functie aan het maken voor mijn website maar ik zou graag willen dat je het opgegeven email adres maar een keer kan gebruiken. Ik heb al gegooglet maar kon niks vinden. weet iemand hoe?

insert.php

<?php
$con=mysqli_connect("***","***","***","***");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";


if(!preg_match("/(?=.*[a-zA-Z])(?=.*[0-9]).{7}/", $_POST['lastname'])) {
echo 'Het gekozen wachtwoord bevat geen 7 karakters en/of geen getal';
} elseif($_POST['lastname'] != $_POST['age']) {
echo 'De wachtwoorden komen niet overeen';
}

if(!preg_match("/(?=.*[a-zA-Z])(?=.*[@]).{7}/", $_POST['firstname'])) {
echo 'Het gekozen e-mail adress bevat geen 7 karakters';
}

if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo 'U bent nu geregistreerd';
mysqli_close($con);
?>

formulier:
<form action="insert.php" method="post">
<em>Email: </em><BR><input type="email" id="email" name="firstname"><span class="error"></span><BR>
<em>Wachtwoord: </em><BR><input type="password" id="wachtwoord" name="lastname"><BR>
<em>Herhaal Wachtwoord: </em><BR><input type="password" name="age"><BR>

<input value="registreren" type="submit">
</form>
Kijk eens naar de UNIQUE functie in MySQL. Deze geeft in het geval van een unieke mailadres een error af.
Welke errorcode weet ik zo niet uit mijn hoofd.
Verder ben je zeer gevoelig voor SQL-injection
of gewoon een simpele SELECT query uitvoeren, kijken of dat e-mail adres al in de database staat en zoja (num_rows) een foutmelding geven
Als je het e-mailadres gebruikt als unieke of primaire sleutel, dan kun je met ON DUPLICATE KEY een INSERT en een UPDATE combineren.


INSERT
  INTO gebruikers
    (
      emailadres,
      voornaam,
      achternaam
    )
  VALUES
    (
      '[email protected]',
      'Jan',
      'Pietersen'
    )
  ON DUPLICATE KEY UPDATE
    voornaam = 'Jan',
    achternaam = 'Pietersen'
Het is soort van gelukt, je kan geen twee dezelfde email adressen invoegen maar je krijgt geen duidelijke error. wat te doen?
Zou je niet gewoon eerst controlleren met een SELECT query of dit email adres al voorkomt?
Zo ja, een foutmelding geven, zo nee doorgaan met registreren?

<?php
function email_exists($email) {
$getusersemail = mysql_query('SELECT user_id FROM users WHERE email ="'.$email.'" ORDER BY user_id DESC');
if (mysql_num_rows($getusersemail)==0)
{
return false;
}
else
{
return true;
}
}
?>
en dan
<?php
if(email_exists($email) === true){
echo "sorry maar dit emailadres is al bij ons geregistreerd";
}else{
//registreren met dit emailadres is toegestaan
}
?>
ik snap het even niet, ik moet mijn eigen gegevens invullen maar waar. Ik moet de code toch aanpassen naar mijn gegevens? (ben net begonnen met php)
Neem de code van bas de jong over en zet op de plek '//registreren met dit emailadres is toegestaan' jou code.
dan is alles goed, behalve je SQL injectie controle enz.
Dennis WhoCares op 11/10/2013 18:35:57

Neem de code van bas de jong over en zet op de plek '//registreren met dit emailadres is toegestaan' jou code.
dan is alles goed, behalve je SQL injectie controle enz.

Hoe bedoel je?
alles er achter plakken?
Kijk even logisch en probeer eens wat uit ;)

Reageren