Waar controleer je of $_POST['name'] en $_POST['password'] wel bestaan?
Volgens mij zou je code al minimaal dit moeten hebben:
<?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";
}
}
Link gekopieerd
Ariën
18-07-2014 11:05
gewijzigd op 18-07-2014 11:05
Zo is het nog beter....
<?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";
}
}
}
?>
Verder is het nog niet gereed voor publicatie, want je wachtwoorden moet je ook encrypten.
In platte tekst opslaan is een absolute NO-GO.
Link gekopieerd
jeps en dan hoef je $password niet meer te escapen
<?php
$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.
Link gekopieerd
$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.
Link gekopieerd
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
[size=xsmall]Toevoeging op 18/07/2014 11:26:27: [/size]
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
Link gekopieerd
Maar de vraag is: Werkt het nu wel beter? ZO nee, wat gaat er fout, wat gebeurt er, wat doe je precies?
Link gekopieerd