Beste iedereen,

Ik heb zelf een website en wil daarin een registreer/login systeem maken.
Maar nu liep ik bij het registreer script tegen een probleem.

Als ik op mijn website mijzelf registreer dan krijg ik de melding dat ik geregistreerd ben dus de connectie met de sql database doet het volgens mij wel, maar als ik dan in mijn database kijk dan staan de ingevulde gegevens er niet.

Wat is het probleem?

hier onder vind je het php script en het formulier:
php script
<?php
$con=mysqli_connect("*****","*****","*****","*****");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$sql="INSERT INTO Persons (Email, Firstname, Wachtwoord)
VALUES
('$_POST[Email]','$_POST[Firstname]','$_POST[Wachtwoord]')";

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

mysqli_close($con);
?>

formulier

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<form action="insert.php" method="post">
Firstname: <input type="text" name="firstname"><br>
Email:<input type="text" name="email"><br>
Wachtwoord: <input type="password" name="wachtwoord"><br>
<input type="submit" value="Registreren">
</form>

</html>
Welke foutmelding zie je?
Uhm... waar te beginnen.

1. Geen [php]mysqli_real_escape_string()[/php] gebruikt! Dus zeer gevoelig voor SQL Injectie.
2. Geen database connectie gegevens in je scipt zettne, bij voorkeur in een config file buiten de root.
3. [php]die()[/php] moet je niet gebruiken, vang de fout op en maak er een nette niet specifieke foutmelding van.
4. de variabelen buiten de string plaatsen en er niet zo in plakken.
5. Wachtwoord nooit in plain text opslaan.
- Aar - op 20/08/2013 13:17:26

Welke foutmelding zie je?


Als ik gegistreer zie ik geen foutmelding maar het staat daarna ook niet in mijn database
Tevens voer je nergens je query uit!

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


Uitroepteken ! betekend als mysqli_query niet gebeurd en/of fout gaat, vervolgens voor je geen normale query uit.

Doe het eens zo
<?php
if (mysqli_query($con,$sql))
  {
  echo 'U bent geregistreerd';
  }
?>

Chris NVT op 20/08/2013 13:17:42

Uhm... waar te beginnen.

1. Geen [php]mysqli_real_escape_string()[/php] gebruikt! Dus zeer gevoelig voor SQL Injectie.
2. Geen database connectie gegevens in je scipt zettne, bij voorkeur in een config file buiten de root.
3. [php]die()[/php] moet je niet gebruiken, vang de fout op en maak er een nette niet specifieke foutmelding van.
4. de variabelen buiten de string plaatsen en er niet zo in plakken.
5. Wachtwoord nooit in plain text opslaan.


hoe moet ik de fouten opvangen dan? (ben niet zo goed in php)
I.p.v. de [php]die()[/php] te gebruiken gewoon een [php]echo[/php] 'Een algemene melding hier' doen, zodat potentionele hackers geen specifieke informatie op het scherm krijgen.
bedoel je zoiets?

<?php
if (mysqli_query($con,$sql))
{
echo 'Er is een fout opgetreden;
}

echo 'U bent geregistreerd;
?>
Dat is toch niet mijn voorbeeld? Als je het nu uitvuld krijg je Er is een fout opgetreden op het scherm maar je DB is wel gevult.

if kijkt standaard of iets goed gaat, dus dan moet je in de if op deze manier geen error melding geven.
oke, ik heb het weggehaalt maar hoe kan ik mijn script werkende krijgen. Ik heb nog niet zoveel ervaring met php en al helemaal niet veel met sql. maar is dit script werkende te krijgen?
Ik raad het je niet aan om dit zo live te gebruiken! Maar zo zou je script moeten werken.

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

$sql="INSERT INTO Persons (Email, Firstname, Wachtwoord)
VALUES
('".$_POST[Email]."','".$_POST[Firstname]."','".$_POST[Wachtwoord]."')";

if (mysqli_query($con,$sql)) {
echo 'U bent geregistreerd';
} else { echo 'Er is iets fout gegaan'; }

mysqli_close($con);
?> 

Reageren