$_POST Email wilt niet opslaan in database
Ik heb nu dat mijn email niet wil opslaan
Dit staat in mijn 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
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);
}
?>
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,
) 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
Verder, weet wat je doet:
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).
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
En werkt het niet dat voor het password?
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 -
- Aar - op 08/03/2014 20:50:42:
Zet password ook tussen singlequotes omdat het een string is.
Dus: $_POST['password']
Dus: $_POST['password']
Krijgen de quiotes daar omheen geen last van dan?
Gewijzigd op 08/03/2014 20:55:31 door - Ariën -
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
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
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.
1) ga a.u.b. over op een ander hashing algoritme. Leesvoer: 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
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
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);
}
?>
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,
) 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
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?
Regel 25 mist een . Na "
Nick je was ook nog vergeten een var connection bij email te zzetten maar hij doet het nu dakje allemaal:D
Graag gedaan.