Ik zal de stappen van een inlog-actie in stappen uitleggen:
- Controleer eerst of er ge-POST is met:
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
?>[/code]
- controleer of de waardes zijn ingevuld
- Zorg dat je het wachtwoord hasht met [php]password_hash[/php], deze wil je NIET open en bloot opslaan!)
- controleer met [php]password_verify[/php] of het wachtwoord klopt. Controleer tevens met mysqli_num_rows of de username klopt.
- Denk aan SQL-injection, en escape je username. Je wachtwoord is niet nodig, omdat die altijd gehashed zal zijn, en niet met een injection te forceren is.
- Profit: De ingevoerde gegevens komen overeen. Zorg ervoor dat je een sessie aanmaakt met bijvoorbeeld het ID-nummer van de gebruiker.
Verder is dit best een basaal voorbeeld, maar er zijn tal van andere dingen om het inloggen veiliger te maken, zoals [php]session_regenerate_id[/php] om tussentijds je SessionID te veranderen om het kaper ervan onmogelijk te maken.
heb dit van een tut, maar wanneer ik inlog gebeurd er niks zelfs met een extra line code voor extra check boven laat die niks zien, behalve in the url balk zegt die not secure.
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
// Vereist config
require('config.php')
// Start de sessie
session_start();
// Variablen voor error bericht
$error=''; // Variable To Store Error Message
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password']))
{
$error = "Username or Password is invalid";
}
else
{
// Globale variablen
$username = trim($_POST['gebruikersnaam']);
$password = trim($_POST['password']);
// MySQl injectie beschermen
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
// Database selected
$db = mysql_select_db("studenten", $connection);
// Query van database uitlezing
$query = mysql_query("select * from studenten where password='$password' AND naam='$username'", $connection);
$rows = mysql_num_rows($query);
if ($rows == 1)
{
$_SESSION['login_user']=$username; // Sessie intialiseren
header("location: index.php"); // Redirecten naar andere pagina
} else {
$error = "Username or Password is invalid";
}
mysql_close($connection); // Connectie sluiten
}
}
?>
Welke code heb je nu precies? Wat werkt er niet aan?Ik heb toch echt een hoop tips gegeven om ervopr te zorgen dat je een veilig inlogsysteem hebt. Het spreekt voor sich dat ik uiteraard geen kant en klare code geef ;-)