foutafhandeling form werkt niet, record in database
Ik heb een registratie formulier gemaakt. Ik heb twee velden (naam en wachtwoord)en een captcha.
Als je de twee velden wel invuld en de captcha niet dat krijg je de pagina: register_failed.php te zien en kun je nog een keer proberen. Maar er wordt wel een record aangemaakt in de database met de zojuist ingevoerde gebruikersnaam en wachtwoord, maar dit wil ik natuurlijk niet. Ik heb een sql query gemaakt die dit zal moeten verwijderen, maar dit werkt niet.
Kan iemand mij vertellen hoe ik dit zou kunnen maken?
alvast bedankt.
De php code is van de captcha:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$image = new Securimage();
if ($image->check($_POST['captcha_code']) == true) {
echo "Correct!";
} else {
header('Location: register_failed.php');die();
$query = "DELETE LAST(username) FROM users";//Dit is de query die de record zou moeten verwijderen
$result = mysqli_query($query) or die(mysqli_error());
}
?>
$image = new Securimage();
if ($image->check($_POST['captcha_code']) == true) {
echo "Correct!";
} else {
header('Location: register_failed.php');die();
$query = "DELETE LAST(username) FROM users";//Dit is de query die de record zou moeten verwijderen
$result = mysqli_query($query) or die(mysqli_error());
}
?>
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 12/01/2016 19:22:53 door - Ariën -
Je query wordt nooit uitgevoerd, omdat je het script laat stoppen met die().
maar dan blijft hij een record aanmaken in de database
hoe kan dit?
Als de captcha fout is, dan plaatst je die location-headers met de die(); erachteraan.
Verder is de foutafhandeling op de query niet netjes. Lees eens deze tutorial eens door. Let er wel op dat deze tut de oude MySQL-functies beschrijft, dus moet je deze wel zelf nog omzetten naar MySQLi.
Quote:
hoe kan dit?
Mogelijk omdat je geen exit; na je header('Location: ...') zet?
Het is een wijdverbreid misverstand dat header('Location: ...') je meteen automagisch transporteert naar de nieuwe locatie, dit gebeurt pas aan het einde van je script, dus ook pas na uitvoering van alle van toepasbaar zijnde code tot het einde van dit script.