registratie formulier valideert niet correct
wat er gebeurt is dat feedback altijd op 'alle velden invullen' blijft staan
ik denk dat ik iets over het hoofd gezien heb
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
session_start();
$feedback = "";
//als alle velden zijn ingevuld
include('classes/User.php');
if(!empty($_POST['UserName'])&& !empty($_POST['Password'])&& !empty($_POST['Confirmpassword'])&& !empty($_POST['FirstName'])
&& !empty($_POST['LastName'])&& !empty($_POST['Email'])&& !empty($_POST['Gender'])){
$feedback = "alle velden invullen";
}
else if($_POST["Password"]==$_POST["Confirmpassword"]){
$feedback = "wachtwoorden incorrect";
}
else if(!preg_match("/^([a-zA-Z0-9])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/", $_POST['email'])){
$feedback = "incorrect email adres";
}
else{
try
{
//nieuwe user aanmaken en naar de homepage gaan
$oUser = new User();
$oUser->Username = $_POST['UserName'];
$oUser->Password = $_POST['Password'];
$oUser->Confirmpassword = $_POST['Confirmpassword'];
$oUser->Firstname = $_POST['FirstName'];
$oUser->Lastname = $_POST['LastName'];
$oUser->Email = $_POST['Email'];
$oUser->Gender = $_POST['Gender'];
$oUser->Save();
header("location:home.php");
}
catch (Exception $e)
{
$feedback = $e->getMessage();
header("location:registration.php");
}
}
?>
session_start();
$feedback = "";
//als alle velden zijn ingevuld
include('classes/User.php');
if(!empty($_POST['UserName'])&& !empty($_POST['Password'])&& !empty($_POST['Confirmpassword'])&& !empty($_POST['FirstName'])
&& !empty($_POST['LastName'])&& !empty($_POST['Email'])&& !empty($_POST['Gender'])){
$feedback = "alle velden invullen";
}
else if($_POST["Password"]==$_POST["Confirmpassword"]){
$feedback = "wachtwoorden incorrect";
}
else if(!preg_match("/^([a-zA-Z0-9])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+/", $_POST['email'])){
$feedback = "incorrect email adres";
}
else{
try
{
//nieuwe user aanmaken en naar de homepage gaan
$oUser = new User();
$oUser->Username = $_POST['UserName'];
$oUser->Password = $_POST['Password'];
$oUser->Confirmpassword = $_POST['Confirmpassword'];
$oUser->Firstname = $_POST['FirstName'];
$oUser->Lastname = $_POST['LastName'];
$oUser->Email = $_POST['Email'];
$oUser->Gender = $_POST['Gender'];
$oUser->Save();
header("location:home.php");
}
catch (Exception $e)
{
$feedback = $e->getMessage();
header("location:registration.php");
}
}
?>
moet het niet zijn if(empty()) idpv if(!empty()) ?
en ook || ipv &&
http://php.net/manual/en/language.operators.comparison.php
en dan hebben we ook nog:
http://www.php.net/isset
http://www.php.net/ctype
http://www.php.net/pcre
en uiteraard de string functions:
http://www.php.net/trim
http://www.php.net/strlen
enz
Na een header() dien je een exit() te plaatsen
Het is overigens ook nog zo, dat het niet header('location:bla.php') is maar:
header('Location: bla.php')
Toevoeging op 22/05/2011 20:57:56:
hmm toch nog een gek probleem
mijn formulier wordt correct gevalideert, maar het emailadres komt niet in de databank en al de rest wel
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
session_start();
$feedback = "";
//als alle velden zijn ingevuld
include('classes/User.php');
if(empty($_POST['UserName'])|| empty($_POST['Password'])||empty($_POST['Confirmpassword'])||empty($_POST['FirstName'])
||empty($_POST['LastName'])||empty($_POST['Email'])||empty($_POST['Gender'])){
$feedback = "alle velden invullen";
}
else if($_POST["Password"]!=$_POST["Confirmpassword"]){
$feedback = "wachtwoorden incorrect";
}
else if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)", $_POST['Email'])){
$feedback = "incorrect email adres";
}
else{
try
{
//nieuwe user aanmaken en naar de homepage gaan
$oUser = new User();
$oUser->Username = $_POST['UserName'];
$oUser->Password = $_POST['Password'];
$oUser->Confirmpassword = $_POST['Confirmpassword'];
$oUser->Firstname = $_POST['FirstName'];
$oUser->Lastname = $_POST['LastName'];
$oUser->Email = $_POST['Email'];
$oUser->Gender = $_POST['Gender'];
$oUser->Save();
header("location:home.php");
}
catch (Exception $e)
{
$feedback = $e->getMessage();
header("location:registration.php");
}
}
?>
session_start();
$feedback = "";
//als alle velden zijn ingevuld
include('classes/User.php');
if(empty($_POST['UserName'])|| empty($_POST['Password'])||empty($_POST['Confirmpassword'])||empty($_POST['FirstName'])
||empty($_POST['LastName'])||empty($_POST['Email'])||empty($_POST['Gender'])){
$feedback = "alle velden invullen";
}
else if($_POST["Password"]!=$_POST["Confirmpassword"]){
$feedback = "wachtwoorden incorrect";
}
else if(!ereg("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)", $_POST['Email'])){
$feedback = "incorrect email adres";
}
else{
try
{
//nieuwe user aanmaken en naar de homepage gaan
$oUser = new User();
$oUser->Username = $_POST['UserName'];
$oUser->Password = $_POST['Password'];
$oUser->Confirmpassword = $_POST['Confirmpassword'];
$oUser->Firstname = $_POST['FirstName'];
$oUser->Lastname = $_POST['LastName'];
$oUser->Email = $_POST['Email'];
$oUser->Gender = $_POST['Gender'];
$oUser->Save();
header("location:home.php");
}
catch (Exception $e)
{
$feedback = $e->getMessage();
header("location:registration.php");
}
}
?>
Code (php) 123 <?phpheader(Location: registration.php);?>
wezen. PHP kun je inderdaad loosly in programmeren, alleen is dit een HTTP header, die zitten dus wel aan een paar 'regeltjes' vast. Vandaar dat dit gezegd werd.
En om in te gaan op je probleem, kan dit niet weg komen van je ereg? Comment die er eens uit? En kijk dan nog eens of je hem dan wel in de database ziet verschijnen?
En allicht is er in je script User.php iets verkeerd? Dat kan ik zo niet zien, maar dit script ziet er aardig goed uit.
Dus het kan zijn dat de problemen uit User.php komen nu.
De functie ereg() is antiek en moet je niet meer gebruiken. Gebruik preg_match().