Register page wat is er fout?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 4 volgende »

Mathieu Posthumus

Mathieu Posthumus

09/02/2014 12:22:37
Quote Anchor link
Hallo

nu ben ik zelf gewoon een website aan het maken...
maar mijn register page doet het niet ik kan het zelf niet vinden
hopelijk kunnen jullie me ermee helpen:D

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php
<!DOCTYPE html>
<
html>
    <
head>
        <
title>Register</title>
        <
link type="text/css" rel="stylesheet" href="style/register.css">
    <
/head>
    <
body>
        <
form action="index.php" method="post">
            <
div id="bg">
                <
div id="top"></div>
                <
div id="left"></div>
                <
a id="username">Choose you'r username!</a>
                <div id="username"></div>
                <input id="username" type="text" name="username" />
                <a id="password">Choose you'
r password!</a>
                <
div id="password"></div>
                <
input id="password" type="password" name="password" />
                <
a id="cpassword">Confirm you'r password!</a>
                <div id="cpassword"></div>
                <input id="cpassword" type="password" name="cpassword" />
                <a id="email">Fill in you'
r E-Mail!</a>
                <
div id="email"></div>
                <
input id="email" type="email" name="email" />
                <
a id="cemail">Confirm you'r E-Mail!</a>
                <div id="cemail"></div>
                <input id="cemail" type="email" name="cemail" />
                <a id="name">Fill in you'
r name!</a>
                <
div id="name"></div>
                <
input id="name" type="text" name="name" />
                <
a id="age">Fill in you'r age!</a>
                <div id="age"></div>
                <input id="age" type="text" name="age" />
                <input id="submitregister" type="submit" value="Register" />
                <div id="right"></div>
                <div id="bottom"></div>
            </div>
        </form>
        <?php
            $connection = null;
            
            if(isset($_POST['
username']) and isset($_POST['password']) and isset($_POST['cpassword']) and isset($_POST['email']) and isset($_POST['cemail']) and isset($_POST['name']) and isset($_POST['age'])){
                dbConnect();
                dbSave();
                mysql_close($GLOBALS['
connection']);
            }
            
            function dbConnect(){
                $host = '
localhost';
                $user = '
root';
                $password = '
123';
                $db = '
website';
                $GLOBALS['
connection'] = mysql_connect($host, $user, $password);
                $db = mysql_select_db($db);
                if(!$GLOBALS['
connection']){
                    die ("Could not connect: " . mysql_error());
                }
            }
            
            function dbSave(){
                $username = mysql_real_escape_string($_POST['
username']);
                $password = mysql_real_escape_string($_POST['
password']);
                $email = $_POST['
email'];
                $cemail = $_POST['
cemail'];
                $name = mysql_real_escape_string($_POST['
name']);
                $age = is_numeric($_POST['
age']);
                $save = "
                    INSERT INTO website
                        (
                            username,
                            password,
                            email,
                            name,
                            age
                        )
                    VALUES
                        (
                            '
$username',
                            '
$password',
                            '
$email',
                            '
$name',
                            '
$age',
                        )
                ";
                if(!$res = mysql_query($save)){
                    trigger_error(mysql_error().'
<br>In Query: '.$save);
                }
            }

        ?>

    </body>
</html>
?>
 
PHP hulp

PHP hulp

25/04/2024 22:12:25
 
D B

D B

09/02/2014 12:29:37
Quote Anchor link
Wat doet hij niet? (foutmelding?)

Ook open je bovenaan boven je html < ? php , weet niet of je dat alleen hier doet of ook in je script, maar die mag je weghalen
Gewijzigd op 09/02/2014 12:30:16 door D B
 
Mathieu Posthumus

Mathieu Posthumus

09/02/2014 12:40:40
Quote Anchor link
ja dat < ? php open ik hier en hij gaat gwn naar de volgende pagina en doet niks
 
D B

D B

09/02/2014 12:44:13
Quote Anchor link
zet dit eens bovenaan je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
?>


En kijk eens wat hij dan aangeeft
 
Obelix Idefix

Obelix Idefix

09/02/2014 12:48:45
Quote Anchor link
Heb je helemaal bovenaan je code ook die < ? php staan of alleen hier op het forum?

Zet error-reporting aan (helemaal boven in je script).

Waarom de functie dbSave? Je kunt deze maar op 1 manier aanroepen.
Waarom in die functie nieuwe variabelen aanmaken?
Je controleert nergens of de waarden voldoen aan criteria, maar 'ploft' alles in de database.
Waarom een leeftijd invullen? Die kan morgen alweer achterhaalt zijn.
Waarom die mysql_real_escape_string niet gewoon in de query?

Verder is het doorgaans logischer om in een script te beginnen met controle / verwerken (php / mysql) en dan pas output.

Zou afstappen van mysql maar overstappen op mysqli of pdo.
 
Mathieu Posthumus

Mathieu Posthumus

09/02/2014 12:51:30
Quote Anchor link
hij slaat nogsteeds niks op want ik heb nu dit gedaan
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
<?php
            ini_set('display_errors', 1);
            error_reporting(E_ALL | E_STRICT);
            $connection = null;
            
            if(isset($_POST['username']) and isset($_POST['password']) and isset($_POST['cpassword']) and isset($_POST['email']) and isset($_POST['cemail']) and isset($_POST['name']) and isset($_POST['age'])){
                dbConnect();
                dbSave();
                mysql_close($GLOBALS['connection']);
            }
else{
                echo 'All fields have to be filled in!';
            }
            
            function
dbConnect(){
                $host = 'localhost';
                $user = 'root';
                $password = '123';
                $db = 'website';
                $GLOBALS['connection'] = mysql_connect($host, $user, $password);
                $db = mysql_select_db($db);
                if(!$GLOBALS['connection']){
                    die ("Could not connect: " . mysql_error());
                }
            }
            
            function
dbSave(){
                $username = mysql_real_escape_string($_POST['username']);
                $password = mysql_real_escape_string($_POST['password']);
                $email = $_POST['email'];
                $cemail = $_POST['cemail'];
                $name = mysql_real_escape_string($_POST['name']);
                $age = is_numeric($_POST['age']);
                $save = ("
                    INSERT INTO website
                        (
                            username,
                            password,
                            email,
                            name,
                            age
                        )
                    VALUES
                        (
                            '$username',
                            '$password',
                            '$email',
                            '$name',
                            '$age',
                        )
                "
);
                if(!$res = mysql_query($save)){
                    trigger_error(mysql_error().'<br>In Query: '.$save);
                }
            }

        ?>

Ik heb dus ook een else statement aangemaakt na het 1e if statement! wat nu?

Toevoeging op 09/02/2014 12:52:25:

en als ik nu dus niet alles heb ingevuld dan geeft ie dus aan van dat niet alles is ingevuld
 
D B

D B

09/02/2014 12:53:41
Quote Anchor link
In dat else statement zou ik dan heel je html code opnemen.

Functions zou ik nog boven het if-statement plaatsen.

Krijg je ondertussen al een foutmelding?



Dus eigenlijk werkt het script nu, alleen schrijft hij niet weg?

Toevoeging op 09/02/2014 12:56:24:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?
                VALUES
                        (
                            '$username',
                            '$password',
                            '$email',
                            '$name',
                            '$age',
                        )

?>

achter $age staat een komma die daar niet hoort,
Gewijzigd op 09/02/2014 12:56:59 door D B
 
Obelix Idefix

Obelix Idefix

09/02/2014 12:59:00
Quote Anchor link
D B op 09/02/2014 12:53:41:
achter $age staat een komma die daar niet hoort,

Dat zou een foutmelding moeten geven...
 
D B

D B

09/02/2014 13:06:43
Quote Anchor link
Dat dacht ik dus ook :)
 
Mathieu Posthumus

Mathieu Posthumus

09/02/2014 13:07:41
Quote Anchor link
Obelix ehm dat was het dus die komma moest weg maar hij gaf daarvoor geen foutmelding aan:P maar dankje:D
 
D B

D B

09/02/2014 13:10:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?
                if(!$res = mysql_query($save)){
                    trigger_error(mysql_error().'<br>In Query: '.$save);
                }
            }

?>


Dit is de foutafhandeling van je Query, waarschijnlijk mist daar dus iets.... Bijvoorbeeld echo
Ik weet niet zo goed wat trigger_error(mysql_error().'<br>In Query: '.$save); doet....

maar als je daar gewoon neer zet (om te testen) echo 'Fout';

Zou je wel degelijk een melding moeten krijgen.
 
Mathieu Posthumus

Mathieu Posthumus

09/02/2014 13:31:21
Quote Anchor link
trigger zoekt de fout op en dat daarnaast zeg wat voor melding het is!

Toevoeging op 09/02/2014 13:32:51:

maar ik had zelf ook nog een fout gemaakt en dat was in het stukje van MySQL want ik zei dus INSERT INTO website maar het was INTO accounts xD

Toevoeging op 09/02/2014 13:33:43:

oke nu doet het wel maar hij checkt dus niet of het is ingevult bij het stukje
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php $connection = null;
            if($_POST['password'] == $_POST['cpassword'] and $_POST['email'] == $_POST['cemail']){
                if(isset($_POST['username']) and isset($_POST['password']) and isset($_POST['cpassword']) and isset($_POST['email']) and isset($_POST['cemail']) and isset($_POST['name']) and isset($_POST['age'])){
                    dbConnect();
                    dbSave();
                    mysql_close($GLOBALS['connection']);
                }
else{
                    echo '<div id="error"><br>All fields have to be filled in!</div>';
                }
            }
?>


Toevoeging op 09/02/2014 13:34:33:

en het checken of password en cpassword en/of email en cemail gelijk zijn
 
D B

D B

09/02/2014 13:36:13
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
if (!empty($_POST['username']).........) { }
?>


Maar eigenlijk moet je daar verder uitgewerkte controles op uitvoeren.... bijvoorbeeld een lengte of bepaalde tekens die er wel en niet in voor mogen komen.
 
Erwin H

Erwin H

09/02/2014 13:42:42
Quote Anchor link
Even een paar opmerkingen:
- isset kan meerdere argumenten tegelijk aan, je hele isset check kan dus een stuk overzichtelijker:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_POST['username'], $_POST['password'], $_POST['cpassword'], $_POST['email'], $_POST['cemail'], $_POST['name'], $_POST['age'])){
?>

- je beschermt wel username, password en name, maar niet email. Waarom niet?
- je slaat het password niet encrypted op, dat is een slechte gewoonte, want bij een hack liggen alle passwords op straat
- is_numeric geeft een boolean terug. Bij iedereen zal de leeftijd nu dus 0 of 1 worden.
- om integers in een query hoef hoef je geen quotes te plaatsen. Als je er dus voor zorgt dat $age altijd een integer is kunnen die quotes weg.
 
Mathieu Posthumus

Mathieu Posthumus

09/02/2014 13:55:50
Quote Anchor link
Parse error: syntax error, unexpected '{' in C:\xampp\htdocs\php\page_register.php on line 41

wat is er dan fout?

dit is lijn 41:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(isset($_POST['username'], $_POST['password'], $_POST['cpassword'], $_POST['email'], $_POST['cemail'], $_POST['name'], $_POST['age']){
?>
 
Erwin H

Erwin H

09/02/2014 13:57:18
Quote Anchor link
Je mist een )
 
Mathieu Posthumus

Mathieu Posthumus

09/02/2014 13:59:43
Quote Anchor link
ohja hahaha

Toevoeging op 09/02/2014 14:12:23:

oke wanneer ik niets of niet alles heb ingevuld registreert ie alsnog
hoezo dat dit is mijn hele php code!

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
<?php
            $connection
= null;
            
            if(!isset($_POST['username'], $_POST['password'], $_POST['cpassword'], $_POST['email'], $_POST['cemail'], $_POST['name'], $_POST['age'])){
                echo '<div id="error"><br>All fields have to be filled in!</div>';
            }
else{
                dbConnect();
                dbSave();
                mysql_close($GLOBALS['connection']);
            }
            
            function
dbConnect(){
                $host = 'localhost';
                $user = 'root';
                $password = '123';
                $db = 'website';
                $GLOBALS['connection'] = mysql_connect($host, $user, $password);
                $db = mysql_select_db($db);
                if(!$GLOBALS['connection']){
                    die ("Could not connect: " . mysql_error());
                }
            }
            
            function
dbSave(){
                $username = mysql_real_escape_string($_POST['username']);
                $password = mysql_real_escape_string($_POST['password']);
                $email = $_POST['email'];
                $cemail = $_POST['cemail'];
                $name = mysql_real_escape_string($_POST['name']);
                $age = is_numeric($_POST['age']);
                $save = ("
                    INSERT INTO accounts
                        (
                            username,
                            password,
                            email,
                            name,
                            age
                        )
                    VALUES
                        (
                            '$username',
                            '$password',
                            '$email',
                            '$name',
                            '$age'
                        )
                "
);
                if(!$res = mysql_query($save)){
                    trigger_error(mysql_error().'<br>In Query: '.$save);
                }
            }

        ?>
 
- Ariën  -
Beheerder

- Ariën -

09/02/2014 14:24:56
Quote Anchor link
Ik controlleer zo op het niet-ingevuld van velden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if(trim($_POST['veld'])=='') {
// leeg
}
Gewijzigd op 09/02/2014 14:26:17 door - Ariën -
 
- SanThe -

- SanThe -

09/02/2014 14:28:37
Quote Anchor link
Waarom beveilig je niet alle input?
Zo blijft je script lek.
 
Obelix Idefix

Obelix Idefix

09/02/2014 14:36:41
Quote Anchor link
Mathieu Posthumus op 09/02/2014 13:59:43:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!isset($_POST['username'], $_POST['password'], $_POST['cpassword'], $_POST['email'], $_POST['cemail'], $_POST['name'], $_POST['age']))
?>

Hiermee controleer je toch alleen maar of de genoemde velden worden doorgegeven vanuit het formulier. Er vindt geen enkele check plaats of er ook een waarde in die velden zit.
 
Erwin H

Erwin H

09/02/2014 14:43:16
Quote Anchor link
- SanThe - op 09/02/2014 14:28:37:
Waarom beveilig je niet alle input?
Zo blijft je script lek.

Tsja, dat had ik in mijn vorige post ook al gezet, maar verder dan de eerste regel is de TS blijkbaar niet gekomen. Net als dat iedereen nog steeds 0 of 1 jaar oud blijft.
Geeft weinig motivatie om nog verdere tips te geven....
 

Pagina: 1 2 3 4 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.