$_POST Email wilt niet opslaan in database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mathieu Posthumus

Mathieu Posthumus

08/03/2014 20:36:58
Quote Anchor link
Hey guys.

Ik heb nu dat mijn email niet wil opslaan

Dit staat in mijn 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
<?php
    include 'config.php';

    if($_SERVER['REQUEST_METHOD'] == "POST"){
        if($_POST['username'] == "" or $_POST['password'] == "" or $_POST['re_password'] == "" or $_POST['email'] == "" or $_POST['re_email'] == ""){
            echo '<div class="errorbox">Please fill in all fields!</div>';
        }
else{
            if($_POST['password'] != $_POST['re_password']){
                echo '<div class="errorbox">Password is is not equal!</div>';
            }
else{
                if($_POST['email'] != $_POST['re_email']){
                    echo '<div class="errorbox">Email is not equal!</div>';
                    }
else{
                        $sql = mysqli_query($connection, "
                            INSERT INTO accounts(
                                username,
                                password,
                                email
                            ) VALUES (
                                '"
.mysqli_real_escape_string($_POST[username])."',
                                '"
.md5(mysqli_real_escape_string($_POST[password]))."',
                                '"
.mysqli_real_escape_string($_POST[email])."'
                            )"
);
                        
                    }
                }
            }
        }
else{
        $con = mysqli_close($connection);
        }

?>


Toevoeging op 08/03/2014 20:40:20:

En hij geeft aan dat bij $sql = mysqli_query($connection.....

lijkt uninitialized te zijn ofzo weet niet wat dat betekent!?
Gewijzigd op 08/03/2014 20:38:29 door Mathieu Posthumus
 
PHP hulp

PHP hulp

24/04/2024 17:26:02
 
Erwin H

Erwin H

08/03/2014 20:44:24
Quote Anchor link
Dat lijkt dan te duiden op het feit dat $connection niet bestaat. Wat staat er in config.php?

Verder, weet wat je doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
md5(mysqli_real_escape_string($_POST[password]))
?>

Dit is nergens voor nodig. Door het gebruik van een hashing algoritme kan er geen sql injectie plaatsvinden omdat de uitkomst van een hashing geen karakters zal bevatten die gevaarlijk kunnen zijn (tenzij je zelf een hashing gaat schrijven die dat wel doet).
 
Mathieu Posthumus

Mathieu Posthumus

08/03/2014 20:49:33
Quote Anchor link
erwin dit staat in mijn config.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<!DOCTYPE html>
<?php
    $host
= 'localhost';
    $user = 'root';
    $pass = '123';
    $db = 'mtut';
    $connection = mysqli_connect($host, $user, $pass, $db);
    
    if(!$connection){
        echo '<div class="errorbox">Please Report this to the owner!<br>Say That there is no Database connection! Thank You:D</div>';
    }

?>


En werkt het niet dat voor het password?
 
- Ariën  -
Beheerder

- Ariën -

08/03/2014 20:50:42
Quote Anchor link
Zet password ook tussen singlequotes omdat het een string is.

Dus: $_POST['password']

mysqli_real_escape_string() kent als functie twee argumenten. En voor de database connectie, en de andere voor de data die je wilt escapen. Kijk maar op php.net.
Gewijzigd op 08/03/2014 20:54:55 door - Ariën -
 
Mathieu Posthumus

Mathieu Posthumus

08/03/2014 20:53:11
Quote Anchor link
- Aar - op 08/03/2014 20:50:42:
Zet password ook tussen singlequotes omdat het een string is.

Dus: $_POST['password']


Krijgen de quiotes daar omheen geen last van dan?
 
- Ariën  -
Beheerder

- Ariën -

08/03/2014 20:54:19
Quote Anchor link
Zolang je de variabelen buiten quotes houdt niet. Experimenteer er maar eens mee.
Gewijzigd op 08/03/2014 20:55:31 door - Ariën -
 
Mathieu Posthumus

Mathieu Posthumus

08/03/2014 21:11:52
Quote Anchor link
Nu geeft hij deze errors aan en nu slaat ie de username ook niet meer op.

Quote:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\Login\register.php on line 20

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\Login\register.php on line 21

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\Login\register.php on line 22
Gewijzigd op 08/03/2014 21:12:11 door Mathieu Posthumus
 
Dos Moonen

Dos Moonen

08/03/2014 21:29:57
Quote Anchor link
1) ga a.u.b. over op een ander hashing algoritme. Leesvoer: http://www.phphulp.nl/php/forum/topic/wachtwoorden-opslaan-anno-2014/94159/last/
2) de output van md5(password) is een 32 tekens lange string waar elk tegen voorkomt in het alfabet '01234566789abcdef', md5(mysqli_real_escape_string(password)) is dus overbodig omdat md5() de nieuwe toegevoegde tekens niet meer bevat. Plus dat je de altijd de zelfde connectie settings zal moeten hebben, anders wijzig je het algoritme. Wat GIGANTISCH STOM IS, NIET GEDOCUMENTEERD EN HEEEEEL MOEILIJK OM ACHTER TE KOMEN mocht het jou overkomen. Het is een slecht ontwerp. Denk dus a.u.b. niet "het is overbodig, maar het kan geen kwaad, dus ik laat het zo."

"nu slaat ie de username ook niet meer op"
Dat komt door die fouten, de eerste parameter voor mysqli_real_escape_string moet een database link zijn. In jouw code schijnt $connection die link te zijn.
Gewijzigd op 08/03/2014 21:32:49 door Dos Moonen
 
Nick kuijpers

nick kuijpers

08/03/2014 22:22:36
Quote Anchor link
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
<?php
    include 'config.php';

    if($_SERVER['REQUEST_METHOD'] == "POST"){
        if($_POST['username'] == "" or $_POST['password'] == "" or $_POST['re_password'] == "" or $_POST['email'] == "" or $_POST['re_email'] == ""){
            echo '<div class="errorbox">Please fill in all fields!</div>';
        }
else{
            if($_POST['password'] != $_POST['re_password']){
                echo '<div class="errorbox">Password is is not equal!</div>';
            }
else{
                if($_POST['email'] != $_POST['re_email']){
                    echo '<div class="errorbox">Email is not equal!</div>';
                    }
else{
$naam = mysqli_real_escape_string($connection, $_POST['username']);
$ww = md5($_POST['password']);
$email = mysqli_real_escape_string($_POST['email']);

                        $sql = mysqli_query($connection, "
                            INSERT INTO accounts(
                                username,
                                password,
                                email
                            ) VALUES (
                                '"
.$naam."',
                                '"
$ww."',
                                '"
.$email."'
                            )"
);
                        
                    }
                }
            }
        }
else{
        $con = mysqli_close($connection);
        }

?>


Dit is wat ik zou doen...
Ik heb de $_POST in een variable gezet en bij elke mysqli_real_escape_string een verplichte connectie met de database gemaakt.
Gewijzigd op 08/03/2014 22:24:06 door nick kuijpers
 
Obelix Idefix

Obelix Idefix

09/03/2014 08:58:39
Quote Anchor link
Nick kuijpers op 08/03/2014 22:22:36:
Ik heb de $_POST in een variable gezet en bij elke mysqli_real_escape_string een verplichte connectie met de database gemaakt.

Waarom die variabelen?
 
D B

D B

09/03/2014 09:35:47
Quote Anchor link
Regel 25 mist een . Na "
 
Mathieu Posthumus

Mathieu Posthumus

09/03/2014 17:43:57
Quote Anchor link
Nick je was ook nog vergeten een var connection bij email te zzetten maar hij doet het nu dakje allemaal:D
 
Snelle Jaap

Snelle Jaap

10/03/2014 11:17:58
Quote Anchor link
Graag gedaan.
 



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.