Login Systeem werkt niet helemaal zoals het moet.
Ik ben net begonnen met php leren en heb een simpel php login systeem gemaakt die login gegevens van een database checkt.
Ik laat bij het inloggen checken of de login overeenkomt met de login uit de database, als dat zo is zet ik de $_SESSION['loggedin']=true;
In mijn dashboard.php (mijn homepagina als ik ingelogd ben) check ik of de sessie 'loggedin' true is, zo niet dan stuurt hij je terug naar login.php met een header functie.
Mijn probleem is alleen dat de sessie de hele tijd op true blijft staan, zelfs als ik hem unset in mijn logout.php pagina.
De dashboard.php pagina stuurt je dus niet terug naar login.php wat hij wel zou moeten doen.
Hebben jullie misschien een idee? Alle hulp is welkom!
Hier mijn checklogin.php
Quote:
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
36
37
38
39
40
41
42
43
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
36
37
38
39
40
41
42
43
<?php
session_start();
ob_start();
include"dbconnect.php";
$user = $_POST['username'];
$pass = $_POST['password'];
if ($user&&$pass) {
$connect = mysql_connect("$host","$username","$password") or die("not connecting");
mysql_select_db("dashboard") or die("no db");
$query = mysql_query("SELECT * FROM users WHERE user_name='$user'");
$numrows = mysql_num_rows($query);
}
$sql="SELECT * FROM users WHERE user_name='$user' and user_password='$pass'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==!0){
$_SESSION['loggedin']=true;
$_SESSION['username']=$user;
header("location:dashboard.php");
}
else {
echo "Username or password incorrect, please try again";
$_SESSION['loggedin']=false;
header("location:login.php");
}
ob_end_flush();
mysql_close();
?>
session_start();
ob_start();
include"dbconnect.php";
$user = $_POST['username'];
$pass = $_POST['password'];
if ($user&&$pass) {
$connect = mysql_connect("$host","$username","$password") or die("not connecting");
mysql_select_db("dashboard") or die("no db");
$query = mysql_query("SELECT * FROM users WHERE user_name='$user'");
$numrows = mysql_num_rows($query);
}
$sql="SELECT * FROM users WHERE user_name='$user' and user_password='$pass'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
if($count==!0){
$_SESSION['loggedin']=true;
$_SESSION['username']=$user;
header("location:dashboard.php");
}
else {
echo "Username or password incorrect, please try again";
$_SESSION['loggedin']=false;
header("location:login.php");
}
ob_end_flush();
mysql_close();
?>
Hier mijn dashboard.php homepage
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
session_start();
if ($_SESSION['loggedin']=!true) {
header("location:login.php");
}
echo"Welcome back, " . $_SESSION['username'];
?>
session_start();
if ($_SESSION['loggedin']=!true) {
header("location:login.php");
}
echo"Welcome back, " . $_SESSION['username'];
?>
Waarom een nieuwe variabele aanmaken? $user = $_POST['username'];
Idem voor $_POST['password']
En je checked niet of $_POST['username'] wel bestaat.
Idem voor $_POST['password']
Wat mag dit zijn? Geven ze beiden true/false? : if ($user&&$pass)
Variabelen niet tussen quotes : Dus niet "$host" maar gewoon $host
Je stopt de userinput onbeveiligd in een query. Gevolg : Lek script.
Je checked niet of de query wel is geslaagd : Foutafhandeling mist.
Bij if($count==!0) staat het uitroepteken op de verkeerde plaats : != of !==
Idem bij if ($_SESSION['loggedin']=!true)
Gewijzigd op 15/10/2013 21:15:01 door - SanThe -