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>
Zoiets zou het dan moeten worden...
Hoewel ik t raar vind dat je een 'firstname' als email gebruik, 'lastname' als wachtwoord en 'age' als herhaling van het wachtwoord ter controle, en deze ook nogmaals gaat invoeren in het database.
Ik heb er trouwens een simpele foutcontrole in gezet.
Vergeet geen mysqli_real_escape_string() te gebruiken


<?php
 //Maak verbinding met database
 $con=mysqli_connect('***','***','***','***');

 //Controle verbinding
 if (mysqli_connect_errno()) {
   echo 'Kon geen verbinding maken met het database!<br>SQL Error: ' . mysqli_connect_error();
 } else { //Anders als er wel een verbinding is
  $foutmelding = array();

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

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

  //Controle of email adres al bestaat. aka firstname ???
  $emailQ = mysqli_query('SELECT FirstName FROM Persons WHERE FirstName = "' . $_POST['firstname'] . '"');
  if(mysqli_num_rows($emailQ)>0) {
   $foutmelding[] = '<li>Het gekozen e-mail adress bestaat al in het database!</li>';
  }
  if(empty($foutmelding)) { //Als foutmelding nog leeg is, query uitvoeren
   $sql = 'INSERT INTO Persons (FirstName, LastName, Age) VALUES ("' . $_POST[firstname] . '","' . $_POST[lastname] . '","' . $_POST[age] . '")';
   if(!mysqli_query($con,$sql)) {
    echo 'Error: ' . $mysqli_error($con);
   } else {
    echo 'U bent nu geregistreerd';
   }
  } else { //Anders als foutmelding NIET leeg is
   echo 'Er is iets mis gegaan!<ol>' . implode($foutmelding) . '</ol>';
  }
 }
?>
Warning: mysqli_query() expects at least 2 parameters, 1 given in /home/gamersni/public_html/insert.php on line 24

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /home/gamersni/public_html/insert.php on line 25
U bent nu geregistreerd


ik krijg deze foutmelding als ik een mail adres gebruik dat al bestaat om te registreren
Mysqli_query heeft twee parameters nodig. Zie php.net/mysqli_query

Reageren