Registreer script wekt niet goed

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom Stock

Tom Stock

20/08/2013 13:14:03
Quote Anchor link
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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>


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
 
PHP hulp

PHP hulp

17/11/2024 14:53:21
 
- Ariën  -
Beheerder

- Ariën -

20/08/2013 13:17:26
Quote Anchor link
Welke foutmelding zie je?
 
Chris PHP

Chris PHP

20/08/2013 13:17:42
Quote Anchor link
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.
Gewijzigd op 20/08/2013 13:19:01 door Chris PHP
 
Tom Stock

Tom Stock

20/08/2013 13:18:53
Quote Anchor link
- 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
 
Chris PHP

Chris PHP

20/08/2013 13:22:15
Quote Anchor link
Tevens voer je nergens je query uit!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (mysqli_query($con,$sql))
  {

  echo 'U bent geregistreerd';
  }

?>
Gewijzigd op 20/08/2013 13:22:55 door Chris PHP
 
Tom Stock

Tom Stock

20/08/2013 13:22:43
Quote Anchor link
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.


hoe moet ik de fouten opvangen dan? (ben niet zo goed in php)
 
Chris PHP

Chris PHP

20/08/2013 13:26:53
Quote Anchor link
I.p.v. de die() te gebruiken gewoon een echo 'Een algemene melding hier' doen, zodat potentionele hackers geen specifieke informatie op het scherm krijgen.
 
Tom Stock

Tom Stock

20/08/2013 13:30:55
Quote Anchor link
bedoel je zoiets?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
if (mysqli_query($con,$sql))
  {

    echo 'Er is een fout opgetreden;
    }
    
  echo '
U bent geregistreerd;
?>
 
Chris PHP

Chris PHP

20/08/2013 13:35:50
Quote Anchor link
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.
 
Tom Stock

Tom Stock

20/08/2013 13:37:45
Quote Anchor link
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?
 
Chris PHP

Chris PHP

20/08/2013 13:41:27
Quote Anchor link
Ik raad het je niet aan om dit zo live te gebruiken! Maar zo zou je script moeten werken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
Gewijzigd op 20/08/2013 13:43:28 door Chris PHP
 
Tom Stock

Tom Stock

20/08/2013 13:46:44
Quote Anchor link
als je het zo doet krijg ik een error :/

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.
 
Chris PHP

Chris PHP

20/08/2013 13:49:38
Quote Anchor link
@Tom,
Plaats de error, zonder error kan ik niet veel. Hieronder een beveiliging erin.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>

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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.