Versio

registratie script

Overzicht Reageren

Pagina: « vorige 1 2

- SanThe -

- SanThe -

04/02/2012 19:47:22
Quote Anchor link
Zet dit bovenin:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
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.
 
PHP hulp

PHP hulp

17/05/2012 13:12:17
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Obelix en Idefix

Obelix en Idefix

04/02/2012 20:03:33
Quote Anchor link
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...
 
Erwin H

Erwin H

04/02/2012 20:16:57
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
INSERT INTO gebruiker (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.
 
Reshadd farid
Redacteur

reshadd farid

05/02/2012 11:30:59
Quote Anchor link
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...


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)
PHP script in nieuw venster Selecteer het PHP script
1
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


en de code die er bij hoort:

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
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";
                                           }
    
    }





?>


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?
 
Erwin H

Erwin H

05/02/2012 12:21:18
Quote Anchor link
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.
 
Reshadd farid
Redacteur

reshadd farid

05/02/2012 12:32:08
Quote Anchor link
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
 
Erwin H

Erwin H

05/02/2012 12:43:41
Quote Anchor link
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.
 
Obelix en Idefix

Obelix en Idefix

05/02/2012 13:04:58
Quote Anchor link
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)?
Gewijzigd op 05/02/2012 13:05:34 door Obelix en Idefix
 
Reshadd farid
Redacteur

reshadd farid

05/02/2012 13:42:19
Quote Anchor link
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)?


ik heb alles wat je opgesomd hebt en alles wat ik zelf dacht dat fout was veranderd en nu heb ik dit

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
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";
                                           }
    
    }





?>


maar ik krijg als fouten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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


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?
 
- SanThe -

- SanThe -

05/02/2012 13:56:21
Quote Anchor link
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.
 
Reshadd farid
Redacteur

reshadd farid

05/02/2012 14:02:22
Quote Anchor link
- 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.


hmm dus als ik het goed begrijp moet de $ weg? want mijn form ziet er zo uit.

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


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)
PHP script in nieuw venster Selecteer het PHP script
1
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!


Toevoeging op 05/02/2012 15:27:51:

ik krijg nu trouwens niets in de database, kan iemand me daarmee helpen?
 

Pagina: « vorige 1 2



Overzicht Reageren

Get Adobe Flash player