Inlog probleem
Waar controleer je of $_POST['name'] en $_POST['password'] wel bestaan?
Volgens mij zou je code al minimaal dit moeten hebben:
Volgens mij zou je code al minimaal dit moeten hebben:
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
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
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$con = mysqli_connect('host','naam','ww','DB_Naam');
if (mysqli_errno($con)) {
echo mysqli_error($con);
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$query = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$result = mysqli_query($con, $query);
if (!$result)) {
trigger_error('Er is een fout opgetreden: <BR />' . mysqli_error());
}
if (mysqli_num_rows($result) == 1) {
$_SESSION['login'] = $_POST['name'];
header('Location: pannekoek.php');
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
}
error_reporting(E_ALL);
ini_set('display_errors',1);
$con = mysqli_connect('host','naam','ww','DB_Naam');
if (mysqli_errno($con)) {
echo mysqli_error($con);
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$query = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$result = mysqli_query($con, $query);
if (!$result)) {
trigger_error('Er is een fout opgetreden: <BR />' . mysqli_error());
}
if (mysqli_num_rows($result) == 1) {
$_SESSION['login'] = $_POST['name'];
header('Location: pannekoek.php');
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
}
Gewijzigd op 18/07/2014 10:49:24 door Frank Nietbelangrijk
Zo is het nog beter....
Verder is het nog niet gereed voor publicatie, want je wachtwoorden moet je ook encrypten.
In platte tekst opslaan is een absolute NO-GO.
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
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
<?php
error_reporting(E_ALL);
ini_set('display_errors',1);
$con = mysqli_connect('host','naam','ww','DB_Naam');
if (mysqli_errno($con)) {
echo mysqli_error($con);
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$query = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$result = mysqli_query($con, $query);
if (!$result)) {
trigger_error('Er is een fout opgetreden: <BR />' . mysqli_error());
} else {
if (mysqli_num_rows($result) == 1) {
$_SESSION['login'] = $_POST['name'];
header('Location: pannekoek.php');
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
}
}
?>
error_reporting(E_ALL);
ini_set('display_errors',1);
$con = mysqli_connect('host','naam','ww','DB_Naam');
if (mysqli_errno($con)) {
echo mysqli_error($con);
}
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = mysqli_real_escape_string($con, $_POST['password']);
$query = "SELECT * FROM userscms WHERE name='".$name."' AND password='".$password."' LIMIT 1";
$result = mysqli_query($con, $query);
if (!$result)) {
trigger_error('Er is een fout opgetreden: <BR />' . mysqli_error());
} else {
if (mysqli_num_rows($result) == 1) {
$_SESSION['login'] = $_POST['name'];
header('Location: pannekoek.php');
} else {
echo "Fout wachtwoord of gebruikersnaam";
}
}
}
?>
Verder is het nog niet gereed voor publicatie, want je wachtwoorden moet je ook encrypten.
In platte tekst opslaan is een absolute NO-GO.
Gewijzigd op 18/07/2014 11:05:57 door - Ariën -
jeps en dan hoef je $password niet meer te escapen
Maar dan moet paswoord ook wel met sha1 opgeslagen zijn in de database.
Code (php)
1
2
3
4
2
3
4
<?php
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = sha1($_POST['password']);
?>
$name = mysqli_real_escape_string($con, $_POST['name']);
$password = sha1($_POST['password']);
?>
Maar dan moet paswoord ook wel met sha1 opgeslagen zijn in de database.
$name en $password zijn overbodig, die kan je ook rechtstreeks in de query zetten.
Tevens is het netter om eerste de Gebruikersnaam uit de Database te halen en daarna in een sessie te zetten in verband met hoofdletters.
Tevens is het netter om eerste de Gebruikersnaam uit de Database te halen en daarna in een sessie te zetten in verband met hoofdletters.
Ik controleer het nergens omdat dit de functie is het wordt via een andere form opgeroepen vandaar, maar dat maakt dacht ik geen verschil met de code
Toevoeging op 18/07/2014 11:26:27:
Ik controleer het nergens omdat dit de functie is het wordt via een andere form opgeroepen vandaar, maar dat maakt dacht ik geen verschil met de code
Toevoeging op 18/07/2014 11:26:27:
Ik controleer het nergens omdat dit de functie is het wordt via een andere form opgeroepen vandaar, maar dat maakt dacht ik geen verschil met de code
Maar de vraag is: Werkt het nu wel beter? ZO nee, wat gaat er fout, wat gebeurt er, wat doe je precies?




