PHP MySQL vraag...
Ik ben Marciano en ben begonnen met PHP.
Ik ben bezig met een registratie formulier, maar ik heb het volgende probleem. Ik check in het script of alles in ingevuld, en zo ja gaat hij naar de else, die dus alles in de database moet gooien. Ik heb het even gechecked met een echo, en hij gaat af, maar om een of andere reden komt er niks bij in de database.
Weet iemand een oplossing?
Bedankt alvast, Marciano
CODE:
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
44
45
46
47
48
49
50
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
44
45
46
47
48
49
50
<?php
if (isset($_POST['submit']))
{
if (empty($_POST['username']))
{
echo "you forgot your username";
}
elseif (empty($_POST['firstname']))
{
echo "you forgot your first name";
}
elseif (empty($_POST['lastname']))
{
echo "you forgot your last name";
}
elseif (empty($_POST['email']))
{
echo "you forgot your email";
}
elseif (empty($_POST['confirmemail']))
{
echo "you forgot to confirm your email";
}
elseif ($_POST['email'] != ($_POST['confirmemail']))
{
echo "email and email confirm dont match";
}
elseif (empty($_POST['pass']))
{
echo "you forgot your password";
}
elseif (empty($_POST['confirmpassword']))
{
echo "you forgot to confirm your password";
}
elseif ($_POST['pass'] != ($_POST['confirmpassword']))
{
echo "pass and pass confirm dont match";
}
else
{
mysql_query("INSERT INTO users (username, wachtwoord, email) VALUES ('".$_POST['username']."', '".$_POST['pass']."', '".$_POST['email']."')");
echo "created";
}
}
if (isset($_POST['submit']))
{
if (empty($_POST['username']))
{
echo "you forgot your username";
}
elseif (empty($_POST['firstname']))
{
echo "you forgot your first name";
}
elseif (empty($_POST['lastname']))
{
echo "you forgot your last name";
}
elseif (empty($_POST['email']))
{
echo "you forgot your email";
}
elseif (empty($_POST['confirmemail']))
{
echo "you forgot to confirm your email";
}
elseif ($_POST['email'] != ($_POST['confirmemail']))
{
echo "email and email confirm dont match";
}
elseif (empty($_POST['pass']))
{
echo "you forgot your password";
}
elseif (empty($_POST['confirmpassword']))
{
echo "you forgot to confirm your password";
}
elseif ($_POST['pass'] != ($_POST['confirmpassword']))
{
echo "pass and pass confirm dont match";
}
else
{
mysql_query("INSERT INTO users (username, wachtwoord, email) VALUES ('".$_POST['username']."', '".$_POST['pass']."', '".$_POST['email']."')");
echo "created";
}
}
Zet na de query eens:
echo mysql_error();
dit geeft eventuele foutmeldingen weer.
Meer info over foutafhandeling: hier
Gewijzigd op 22/09/2011 20:28:27 door Tobias Tobias
Je maakt geen database-verbinding?
@Jacco
Die heb ik niet gekopieerd!
Toevoeging op 22/09/2011 20:32:12:
Oke dit is wat ik dus krijg:
Unknown column 'wachtwoord' in 'field list'
echt geen idee wat dit kan zijn.
M s op 22/09/2011 20:30:30:
Unknown column 'wachtwoord' in 'field list'
echt geen idee wat dit kan zijn.
echt geen idee wat dit kan zijn.
Geen Engels gehad? Het veld wachtwoord bestaat niet in je database.
Script is lek => SQL-Injection.
Nee daar heeft hij veel aan. Verwijs hem dan naar een manier of artikel om het op te lossen of wees wat uitgebreider. Anders kun je net zo goed niet posten.
Het veld wachtwoord bestaat wel in mijn database. Ik had zelf ook kunnen bedenken dat dat het probleem zou kunnen zijn, maar gek genoeg is dat het niet.
@ SanThe
Ik ben net met PHP begonnen en weet dat het niet optimaal is. Geef me dan informatie die ik wel kan gebruiken aub.
Gewijzigd op 23/09/2011 12:01:22 door Marciano Schildmeijer
Maar @M S
alle informatie die je naar je database stuurt moet je beveiligen, omdat anders mensen van buitenaf je database kunnen infecteren.
In php kan je dan gebruik van mysql_real_escape_string(), in jou voorbeeld wordt dat dus:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
mysql_query(
"INSERT INTO
users (
username,
wachtwoord,
email
)
VALUES (
'".mysql_real_escape_string($_POST['username'])."',
'".mysql_real_escape_string($_POST['pass'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
"
);
?>
mysql_query(
"INSERT INTO
users (
username,
wachtwoord,
)
VALUES (
'".mysql_real_escape_string($_POST['username'])."',
'".mysql_real_escape_string($_POST['pass'])."',
'".mysql_real_escape_string($_POST['email'])."'
)
"
);
?>
Bedankt voor de snelle reacties. Ik ga hier wat mee doen!
maar
if($_SERVER['REQUEST_METHOD']=="POST"){
is beter;)
Wat is het verschil? Isset is toch hetzelfde als initialize? Dus doe wat als er wat is.
Gerhard l op 23/09/2011 12:04:49:
@Kees sorry, maar jou post voegt dan eigenlijk ook niets toe ;)
Dat klopt, mijn post voegt voor de starter ook weinig toe, wel voor -SanThe- hopelijk. En als hij er dan iets mee doet voegt het voor de start weer wel wat toe, snap je het cirkeltje? ;-)
M s op 23/09/2011 14:14:37:
Wat is het verschil? Isset is toch hetzelfde als initialize? Dus doe wat als er wat is.
Het verschil is dat de $_SERVER['REQUEST_METHOD'] variabele altijd 'POST' is als je wat post met een formulier bijvoorbeeld. Stel dat je van je submit button ooit een afbeelding maakt krijg je submit_x en submit_y en dan werkt je isset($_POST['submit'] niet meer.
Gewijzigd op 23/09/2011 14:18:03 door kees Schepers
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
if($_SERVER['REQUEST_METHOD']=="POST"){
if(!$_POST['username'] || (!$_POST['firstname'])){//en zo verder gaan
echo'alle velden in vullen alstublieft';
return;
}
if(!$_POST['username'] || (!$_POST['firstname'])){//en zo verder gaan
echo'alle velden in vullen alstublieft';
return;
}
maarja dat zal ik doen
Kan ik ook een soort ID meegeven met elke fout die de gebruiker maakt? Bijvoorbeeld om te weten of ze hun password niet hebben in gevuld, met: Vul uw password in.
niet op de manier waarop ik het doe dan controleer je gelijk alles in 1 keer zonder wat jy wilt een ID mee geven als er iets niet in gevuld is krijg je alleen tezien "alle velden invullen alstublieft" en niet appart voor elke ding wat ze niet hebben in gevuld
Ik kan de fout niet vinden!
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
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
<?php
if ($_SERVER['REQUEST_METHOD']=="POST")
{
if (empty($_POST['username']) || empty($_POST['email']) || empty($_POST['confirmemail']) || empty($_POST['pass']) || empty($_POST['confirmpass']))
{
echo "you forgot to fill in some fields";
}
elseif ($_POST['email'] != ($_POST['confirmemail']))
{
echo "email and email confirm dont match";
}
elseif ($_POST['pass'] != ($_POST['confirmpassword']))
{
echo "pass and pass confirm dont match";
}
else
{
mysql_query("INSERT INTO users (username, wachtwoord, email) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['pass'])."', '".mysql_real_escape_string($_POST['email'])."')");
echo "created";
echo mysql_error();
}
}
?>
if ($_SERVER['REQUEST_METHOD']=="POST")
{
if (empty($_POST['username']) || empty($_POST['email']) || empty($_POST['confirmemail']) || empty($_POST['pass']) || empty($_POST['confirmpass']))
{
echo "you forgot to fill in some fields";
}
elseif ($_POST['email'] != ($_POST['confirmemail']))
{
echo "email and email confirm dont match";
}
elseif ($_POST['pass'] != ($_POST['confirmpassword']))
{
echo "pass and pass confirm dont match";
}
else
{
mysql_query("INSERT INTO users (username, wachtwoord, email) VALUES ('".mysql_real_escape_string($_POST['username'])."', '".mysql_real_escape_string($_POST['pass'])."', '".mysql_real_escape_string($_POST['email'])."')");
echo "created";
echo mysql_error();
}
}
?>
PS: Let op foutafhandeling, deze ontbreekt bij je query. Zelf maar bedenken of het gelukt is, is niet handig om te doen.
Wat krijg je dan op het scherm te zien?
Hij komt bij het if statement terecht, dus echo'd ie : you forgot some fields. Ookal vul ik alle velden in, wat natuurlijk niet zo moeten.