registratie script
Zet dit bovenin:
Doe de INSERT op dezelfde manier als de SELECT, inclusief foutafhandeling.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
// rest
?>
Doe de INSERT op dezelfde manier als de SELECT, inclusief foutafhandeling.
Gesponsorde koppelingen:
Heb je een link gegeven naar hoe je een insert-query moet opzetten. Heb je daar al naar gekeken?
Je toont alleen code en wacht op reacties. Vervolgens volgt er een opmerking dat je het niet begrijpt. Tips worden gegeven en anders even Google gebruiken ;-)
Je mag er echt zelf wel wat moeite voor doen...
Je toont alleen code en wacht op reacties. Vervolgens volgt er een opmerking dat je het niet begrijpt. Tips worden gegeven en anders even Google gebruiken ;-)
Je mag er echt zelf wel wat moeite voor doen...
Reshadd farid op 04/02/2012 17:47:01:
@erwin hoe moet dit dan? ik snap het even niet meer kan je het verduidelijken met een voorbeeldje?
Wat ik echt niet snap, is dat je het in je eerste script gewoon goed deed:
Code (php)
1
2
2
INSERT INTO gebruiker (naam, email, wachtwoord)
VALUES ('$naam', '$email', '$wachtwoord')
VALUES ('$naam', '$email', '$wachtwoord')
Hier staan gewoon de kolom namen zoals het hoort. Alleen ga je "fout" in de tweede regel waar je de variabele erin zet zonder beveiliging.
Obelix en Idefix op 04/02/2012 20:03:33:
Heb je een link gegeven naar hoe je een insert-query moet opzetten. Heb je daar al naar gekeken?
Je toont alleen code en wacht op reacties. Vervolgens volgt er een opmerking dat je het niet begrijpt. Tips worden gegeven en anders even Google gebruiken ;-)
Je mag er echt zelf wel wat moeite voor doen...
Je toont alleen code en wacht op reacties. Vervolgens volgt er een opmerking dat je het niet begrijpt. Tips worden gegeven en anders even Google gebruiken ;-)
Je mag er echt zelf wel wat moeite voor doen...
ehm ik heb ernaar gekeken en dat had ik in het begin toch precies hetzelfde? maar dat is toch niet beveiligd op die manier of wel?
@erwin thanks voor de voorbeeld
Toevoeging op 05/02/2012 12:08:50:
@SanThe ik heb de foutmeldingen aangezet ik krijg deze foutmeldingen
ik heb ingevuld, gebruiker 1, emailadres(die al bestaat in de db), wachtwoord, wachtwoordbevestiging
ik heb gekregen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Notice: Undefined index: $email in /Applications/MAMP/htdocs/testsite/registreer.php on line 54
Notice: Undefined index: $naam in /Applications/MAMP/htdocs/testsite/registreer.php on line 55
Notice: Undefined index: $wachtwoord in /Applications/MAMP/htdocs/testsite/registreer.php on line 56
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 65
opgegeven email is al bij ons bekend!
Notice: Undefined variable: naam in /Applications/MAMP/htdocs/testsite/registreer.php on line 80
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 80
gelukt! u bent geregistreerd
Notice: Undefined index: $naam in /Applications/MAMP/htdocs/testsite/registreer.php on line 55
Notice: Undefined index: $wachtwoord in /Applications/MAMP/htdocs/testsite/registreer.php on line 56
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 65
opgegeven email is al bij ons bekend!
Notice: Undefined variable: naam in /Applications/MAMP/htdocs/testsite/registreer.php on line 80
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 80
gelukt! u bent geregistreerd
en de code die er bij hoort:
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
51
52
53
54
55
56
57
58
59
60
61
62
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
51
52
53
54
55
56
57
58
59
60
61
62
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
include ('connect.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
// alles uit de DB halen en in variable zetten
$chekExist = ("
SELECT email, naam, wachtwoord
FROM gebruiker
WHERE email = '" . mysql_real_escape_string($_POST['$email']) . "'
AND naam = '" . mysql_real_escape_string($_POST['$naam']). "'
AND wachtwoord = '" . mysql_real_escape_string($_POST['$wachtwoord']). "'
");
// controleren of de query ok was
$controle = mysql_query($chekExist);
$row = mysql_fetch_assoc($controle);
// controleren of gebruiker al bestaat
if($row['email'] == $email) {
echo "opgegeven email is al bij ons bekend!";
}
if ($controle === false){
echo "er is iets fout gegaan in de database";
}
else {
$insert = ("
INSERT INTO gebruiker (gebruiker_id, naam, email, wachtwoord)
VALUES ('', '$naam', '$email', '$wachtwoord')
");
$registreer = mysql_query($insert);
}
if($registreer === false){
echo "er is iets fout gegaan met het registreren";
}
else {
echo"gelukt! u bent geregistreerd";
}
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
include ('connect.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
// alles uit de DB halen en in variable zetten
$chekExist = ("
SELECT email, naam, wachtwoord
FROM gebruiker
WHERE email = '" . mysql_real_escape_string($_POST['$email']) . "'
AND naam = '" . mysql_real_escape_string($_POST['$naam']). "'
AND wachtwoord = '" . mysql_real_escape_string($_POST['$wachtwoord']). "'
");
// controleren of de query ok was
$controle = mysql_query($chekExist);
$row = mysql_fetch_assoc($controle);
// controleren of gebruiker al bestaat
if($row['email'] == $email) {
echo "opgegeven email is al bij ons bekend!";
}
if ($controle === false){
echo "er is iets fout gegaan in de database";
}
else {
$insert = ("
INSERT INTO gebruiker (gebruiker_id, naam, email, wachtwoord)
VALUES ('', '$naam', '$email', '$wachtwoord')
");
$registreer = mysql_query($insert);
}
if($registreer === false){
echo "er is iets fout gegaan met het registreren";
}
else {
echo"gelukt! u bent geregistreerd";
}
}
?>
ik snap er helemaal niets van ik krijg nu in de database alleen de id en de wachtwoord van mijn database bij wachtwoord.
de email veld en gebruikersnaam blijven leeg?
Misschien is het goed om eens rustig te gaan zitten en elke regel, echt regel voor regel, door te lopen om te kijken wat je nu doet. Want nu zie ik weer dit:
$_POST['$email']
Wat wil je daar mee? Denk even na. $_POST is een array. Een array heeft keys en values. De key is gewoon een integer of een string. Wat jij nu doet is een key maken van een combinatie van een string (door de quotes) en een variabele ($email). Echt, ga zitten, denk na en bedenk waarom dat dus niet kan werken.
Volgens mij heb je alle kennis al lang in huis en kan je het script volledig correct maken. Ik denk alleen dat je je nu enigszins gek laat maken en niet meer zorgvuldig te werk gaat.
$_POST['$email']
Wat wil je daar mee? Denk even na. $_POST is een array. Een array heeft keys en values. De key is gewoon een integer of een string. Wat jij nu doet is een key maken van een combinatie van een string (door de quotes) en een variabele ($email). Echt, ga zitten, denk na en bedenk waarom dat dus niet kan werken.
Volgens mij heb je alle kennis al lang in huis en kan je het script volledig correct maken. Ik denk alleen dat je je nu enigszins gek laat maken en niet meer zorgvuldig te werk gaat.
bedoel je bij
WHERE email = '" . mysql_real_escape_string($_POST['$email']) . "'
ik wordt er idd een beetje gek van, zie door alle bomen het bos niet meer! pff
WHERE email = '" . mysql_real_escape_string($_POST['$email']) . "'
ik wordt er idd een beetje gek van, zie door alle bomen het bos niet meer! pff
Dat begrijp ik, maar juist daarom is het van belang dat je echt regel voor regel erdoorheen gaat. Zorg gewoon dat elke regel correct is. Dus haal dit soort fouten eruit en test of het doet wat je wilt. Zo ja, dan ga je door. Dat is echt de enige manier om het correct te krijgen.
Erwin heeft gelijk: doorloop stap voor stap je code en vraag je af wat je doet en waarom je het doet.
Je zult dan ook antwoorden/oplossingen vinden op:
Waarom zet je je Select-query anders op (uitlijning, beveiliging) dan de insert-query?
Waarom controleer je eerst of $row['email'] == $email) en pas daarna of $controle === false is? Omgekeerd lijkt me logischer. Eerst controleren of de query gelukt is en dan de controle op mailadres.
Waarom in je insert-query gebruiker_id opnemen? Die wordt automatisch ingevuld.
Waar komen in je insert-query '$naam', '$email', '$wachtwoord' vandaan en waarom staan ze niet buiten quotes en voer je het onbeveiligd uit (zie je select-query)?
Je zult dan ook antwoorden/oplossingen vinden op:
Waarom zet je je Select-query anders op (uitlijning, beveiliging) dan de insert-query?
Waarom controleer je eerst of $row['email'] == $email) en pas daarna of $controle === false is? Omgekeerd lijkt me logischer. Eerst controleren of de query gelukt is en dan de controle op mailadres.
Waarom in je insert-query gebruiker_id opnemen? Die wordt automatisch ingevuld.
Waar komen in je insert-query '$naam', '$email', '$wachtwoord' vandaan en waarom staan ze niet buiten quotes en voer je het onbeveiligd uit (zie je select-query)?
Gewijzigd op 05/02/2012 13:05:34 door Obelix en Idefix
Obelix en Idefix op 05/02/2012 13:04:58:
Erwin heeft gelijk: doorloop stap voor stap je code en vraag je af wat je doet en waarom je het doet.
Je zult dan ook antwoorden/oplossingen vinden op:
Waarom zet je je Select-query anders op (uitlijning, beveiliging) dan de insert-query?
Waarom controleer je eerst of $row['email'] == $email) en pas daarna of $controle === false is? Omgekeerd lijkt me logischer. Eerst controleren of de query gelukt is en dan de controle op mailadres.
Waarom in je insert-query gebruiker_id opnemen? Die wordt automatisch ingevuld.
Waar komen in je insert-query '$naam', '$email', '$wachtwoord' vandaan en waarom staan ze niet buiten quotes en voer je het onbeveiligd uit (zie je select-query)?
Je zult dan ook antwoorden/oplossingen vinden op:
Waarom zet je je Select-query anders op (uitlijning, beveiliging) dan de insert-query?
Waarom controleer je eerst of $row['email'] == $email) en pas daarna of $controle === false is? Omgekeerd lijkt me logischer. Eerst controleren of de query gelukt is en dan de controle op mailadres.
Waarom in je insert-query gebruiker_id opnemen? Die wordt automatisch ingevuld.
Waar komen in je insert-query '$naam', '$email', '$wachtwoord' vandaan en waarom staan ze niet buiten quotes en voer je het onbeveiligd uit (zie je select-query)?
ik heb alles wat je opgesomd hebt en alles wat ik zelf dacht dat fout was veranderd en nu heb ik dit
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
include ('connect.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
// alles uit de DB halen en in variable zetten
$chekExist = ("
SELECT email, naam, wachtwoord
FROM gebruiker
WHERE email = '" . mysql_real_escape_string($_POST['$email']) . "'
AND naam = '" . mysql_real_escape_string($_POST['$naam']). "'
AND wachtwoord = '" . mysql_real_escape_string($_POST['$wachtwoord']). "'
");
// controleren of de query ok was
$controle = mysql_query($chekExist);
if ($controle === false){
echo "er is iets fout gegaan in de database";
}
$row = mysql_fetch_assoc($controle);
// controleren of gebruiker al bestaat
if($row['email'] == $email) {
echo "opgegeven email is al bij ons bekend!";
}
else {
$insert = ("
INSERT INTO gebruiker (naam, email, wachtwoord)
VALUES ('" . mysql_real_escape_string($_POST['$naam'])."',
'". mysql_real_escape_string($_POST['$email']) ."',
'". mysql_real_escape_string($_POST['$wachtwoord']). "'
") or die (mysql_error());
}
if($registreer === false){
echo "er is iets fout gegaan met het registreren";
}
else {
$insert = mysql_query($insert);
echo "gelukt";
}
}
?>
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
include ('connect.php');
if ($_SERVER['REQUEST_METHOD'] == 'POST'){
// alles uit de DB halen en in variable zetten
$chekExist = ("
SELECT email, naam, wachtwoord
FROM gebruiker
WHERE email = '" . mysql_real_escape_string($_POST['$email']) . "'
AND naam = '" . mysql_real_escape_string($_POST['$naam']). "'
AND wachtwoord = '" . mysql_real_escape_string($_POST['$wachtwoord']). "'
");
// controleren of de query ok was
$controle = mysql_query($chekExist);
if ($controle === false){
echo "er is iets fout gegaan in de database";
}
$row = mysql_fetch_assoc($controle);
// controleren of gebruiker al bestaat
if($row['email'] == $email) {
echo "opgegeven email is al bij ons bekend!";
}
else {
$insert = ("
INSERT INTO gebruiker (naam, email, wachtwoord)
VALUES ('" . mysql_real_escape_string($_POST['$naam'])."',
'". mysql_real_escape_string($_POST['$email']) ."',
'". mysql_real_escape_string($_POST['$wachtwoord']). "'
") or die (mysql_error());
}
if($registreer === false){
echo "er is iets fout gegaan met het registreren";
}
else {
$insert = mysql_query($insert);
echo "gelukt";
}
}
?>
maar ik krijg als fouten:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Notice: Undefined index: $email in /Applications/MAMP/htdocs/testsite/registreer.php on line 54
Notice: Undefined index: $naam in /Applications/MAMP/htdocs/testsite/registreer.php on line 55
Notice: Undefined index: $wachtwoord in /Applications/MAMP/htdocs/testsite/registreer.php on line 56
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 70
opgegeven email is al bij ons bekend!
Notice: Undefined variable: insert in /Applications/MAMP/htdocs/testsite/registreer.php on line 87
Notice: Undefined variable: insert in /Applications/MAMP/htdocs/testsite/registreer.php on line 95
gelukt
Notice: Undefined index: $naam in /Applications/MAMP/htdocs/testsite/registreer.php on line 55
Notice: Undefined index: $wachtwoord in /Applications/MAMP/htdocs/testsite/registreer.php on line 56
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 70
opgegeven email is al bij ons bekend!
Notice: Undefined variable: insert in /Applications/MAMP/htdocs/testsite/registreer.php on line 87
Notice: Undefined variable: insert in /Applications/MAMP/htdocs/testsite/registreer.php on line 95
gelukt
hij zegt dat email bekend is terwijl dat niet zo is, en hij geeft ook aan gelukt terwijl er niks in de db komt.
volgens mij gaat het insert op het einde fout kan dit kloppen?
wat doe ik nu verder fout?
Kijk nou eens goed wat hiet staat: $_POST['$email']
Er staan enkele quotes, dat is correct, echter alles wat daartussen staat wordt NIET geparsed. In dit geval maakt dat niet uit omdat $email toch niet bestaat.
Maar al met al, je gebruikt nu de letterlijke tekst $email als key. Dat houdt in dat in jouw formulier een input o.i.d. moet zijn met name="$email" en die is er niet en dat wil je ook niet.
Er staan enkele quotes, dat is correct, echter alles wat daartussen staat wordt NIET geparsed. In dit geval maakt dat niet uit omdat $email toch niet bestaat.
Maar al met al, je gebruikt nu de letterlijke tekst $email als key. Dat houdt in dat in jouw formulier een input o.i.d. moet zijn met name="$email" en die is er niet en dat wil je ook niet.
- SanThe - op 05/02/2012 13:56:21:
Kijk nou eens goed wat hiet staat: $_POST['$email']
Er staan enkele quotes, dat is correct, echter alles wat daartussen staat wordt NIET geparsed. In dit geval maakt dat niet uit omdat $email toch niet bestaat.
Maar al met al, je gebruikt nu de letterlijke tekst $email als key. Dat houdt in dat in jouw formulier een input o.i.d. moet zijn met name="$email" en die is er niet en dat wil je ook niet.
Er staan enkele quotes, dat is correct, echter alles wat daartussen staat wordt NIET geparsed. In dit geval maakt dat niet uit omdat $email toch niet bestaat.
Maar al met al, je gebruikt nu de letterlijke tekst $email als key. Dat houdt in dat in jouw formulier een input o.i.d. moet zijn met name="$email" en die is er niet en dat wil je ook niet.
hmm dus als ik het goed begrijp moet de $ weg? want mijn form ziet er zo uit.
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<form method="post" id="customForm" action="">
<div>
<label for="name">Naam</label>
<input id="name" name="naam" type="text" />
<span id="naamInfo">Wat is uw naam?</span></div>
<div>
<label for="email">E-mail</label>
<input id="email" name="email" type="text" />
<span id="emailInfo">Voer een geldig wachtwoord in deze hebt u nodig om in te loggen...</span></div>
<div>
<label for="pass1">Wachtwoord</label>
<input id="pass1" name="wachtwoord" type="password" />
<span id="pass1Info">ten minste 5 karakters: letters, nummers en '_'</span>
</div>
<div>
<label for="pass2">Bevestig Wachtwoord</label>
<input id="pass2" name="pass2" type="password" />
<span id="pass2Info">Bevestig Wachtwoord</span>
</div>
<input id="send" name="send" type="submit" value="Verstuur" />
</div>
</form>
<div>
<label for="name">Naam</label>
<input id="name" name="naam" type="text" />
<span id="naamInfo">Wat is uw naam?</span></div>
<div>
<label for="email">E-mail</label>
<input id="email" name="email" type="text" />
<span id="emailInfo">Voer een geldig wachtwoord in deze hebt u nodig om in te loggen...</span></div>
<div>
<label for="pass1">Wachtwoord</label>
<input id="pass1" name="wachtwoord" type="password" />
<span id="pass1Info">ten minste 5 karakters: letters, nummers en '_'</span>
</div>
<div>
<label for="pass2">Bevestig Wachtwoord</label>
<input id="pass2" name="pass2" type="password" />
<span id="pass2Info">Bevestig Wachtwoord</span>
</div>
<input id="send" name="send" type="submit" value="Verstuur" />
</div>
</form>
Toevoeging op 05/02/2012 15:12:39:
@sanThe @erwin
sorry ik ben alles nagelopen en vergeleken met hoe ik eerst alles deed en ik snapte na de uitleg van @santhe dat ik de $ niet moet gebruiken omdat ik hem in 1 regel al post vroeger deed ik
$variable = $_POST['waarde'];
en hierboven deed het gelijk in de query dus maar gebruikte alsnog de $variable ik heb het even veranderd en krijg nu inderdaad de errors niet meer, enige wat ik nu nog krijg is
Code (php)
1
2
3
4
2
3
4
Notice: Undefined variable: email in /Applications/MAMP/htdocs/testsite/registreer.php on line 70
opgegeven email is al bij ons bekend!
Notice: Undefined variable: insert in /Applications/MAMP/htdocs/testsite/registreer.php on line 92
gelukt!
opgegeven email is al bij ons bekend!
Notice: Undefined variable: insert in /Applications/MAMP/htdocs/testsite/registreer.php on line 92
gelukt!
Toevoeging op 05/02/2012 15:27:51:
ik krijg nu trouwens niets in de database, kan iemand me daarmee helpen?



