Registreer script wekt niet goed
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?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);
?>
$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>
Gewijzigd op 20/08/2013 13:15:39 door Tom Stock
Welke foutmelding zie je?
1. Geen mysqli_real_escape_string() 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. die() 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.
Gewijzigd op 20/08/2013 13:19:01 door Chris PHP
- 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
Code (php)
Uitroepteken ! betekend als mysqli_query niet gebeurd en/of fout gaat, vervolgens voor je geen normale query uit.
Doe het eens zo
Gewijzigd op 20/08/2013 13:22:55 door Chris PHP
Chris NVT op 20/08/2013 13:17:42:
Uhm... waar te beginnen.
1. Geen mysqli_real_escape_string() 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. die() 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.
1. Geen mysqli_real_escape_string() 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. die() 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)
die() te gebruiken gewoon een echo 'Een algemene melding hier' doen, zodat potentionele hackers geen specifieke informatie op het scherm krijgen.
I.p.v. de 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?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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);
?>
$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);
?>
Gewijzigd op 20/08/2013 13:43:28 door Chris PHP
maar je zij dat dit een slecht script is, zou je me dan kunnen vertellen hoe ik een betere kan maken?
het komt waarschijnlijk ook omdat ik er niet zoveel verstand van heb maar ik wilde gewoon een registreer inlog functie op mijn website.
Plaats de error, zonder error kan ik niet veel. Hieronder een beveiliging erin.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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
('".mysqli_real_escape_string($_POST['Email'])."','".mysqli_real_escape_string($_POST['Firstname'])."','".mysqli_real_escape_string($_POST['Wachtwoord'])."')";
if (mysqli_query($con,$sql)) {
echo 'U bent geregistreerd';
} else { echo 'Er is iets fout gegaan'; }
mysqli_close($con);
?>
$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
('".mysqli_real_escape_string($_POST['Email'])."','".mysqli_real_escape_string($_POST['Firstname'])."','".mysqli_real_escape_string($_POST['Wachtwoord'])."')";
if (mysqli_query($con,$sql)) {
echo 'U bent geregistreerd';
} else { echo 'Er is iets fout gegaan'; }
mysqli_close($con);
?>
EDIT: Zag dat je de '' vergeten was in de $_POST waardes. Deze zijn nu aangepast.
Gewijzigd op 20/08/2013 14:09:32 door Chris PHP