Gebruikersnaam uit sessie blijft staan
ik heb een login systeem dat met het vervelende probleem zit dat als je iemand uitlogd en daarna een ander terug inlogt de gebruikersnaam van de eerste blijft staan. Bijvoorbeeld: ik ben 1 er staat Welkom 1 ik log uit en log in met 2 en er staat Welkom 1.
Hieronder mijn code's:
Logout.php
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
44
45
46
47
48
49
50
51
52
53
54
55
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
44
45
46
47
48
49
50
51
52
53
54
55
<?php
include 'config/mysql.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/main.css" />
<link rel="shortcut icon" href="images/favicon.png" type="image/png">
<title>TeamGame: Uitloggen</title>
</head>
<body>
<div id="header">
<img src="images/logo.png" class="left" />
<div class="right">
<table>
<tr>
<form method="post" action="login.php" style="position:fixed;">
<td><label for="userName">Username: </label></td>
<td><input type="text" name="userName" class="form_boxText"/></td>
<td><label for="password">Wachtwoord: </label></td>
<td><input type="password" name="password" class="form_boxText"/></td>
<td><button type="submit" name="loginButton" class="button_login" value="Login">Login</button></td>
</form>
</tr>
</table>
</div>
</div>
<div id="body" style="padding-left:25%;">
<table border="0" align="center">
<tr>
<!-- content -->
<td height="693" align="center">
<?php
//If the user is logged, we log him out
if(isset($_SESSION['userName']))
{
//We log him out by deleting the username and userid sessions
unset($_SESSION['userName']);
?>
<div class="message">You are logged out.<br />
<?php
} else {
echo 'We kunnen je niet uitloggen, mischien ben je al uitgelogd.';
}
?>
</td>
</tr>
</table>
</div>
</body>
</html>
include 'config/mysql.php';
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/main.css" />
<link rel="shortcut icon" href="images/favicon.png" type="image/png">
<title>TeamGame: Uitloggen</title>
</head>
<body>
<div id="header">
<img src="images/logo.png" class="left" />
<div class="right">
<table>
<tr>
<form method="post" action="login.php" style="position:fixed;">
<td><label for="userName">Username: </label></td>
<td><input type="text" name="userName" class="form_boxText"/></td>
<td><label for="password">Wachtwoord: </label></td>
<td><input type="password" name="password" class="form_boxText"/></td>
<td><button type="submit" name="loginButton" class="button_login" value="Login">Login</button></td>
</form>
</tr>
</table>
</div>
</div>
<div id="body" style="padding-left:25%;">
<table border="0" align="center">
<tr>
<!-- content -->
<td height="693" align="center">
<?php
//If the user is logged, we log him out
if(isset($_SESSION['userName']))
{
//We log him out by deleting the username and userid sessions
unset($_SESSION['userName']);
?>
<div class="message">You are logged out.<br />
<?php
} else {
echo 'We kunnen je niet uitloggen, mischien ben je al uitgelogd.';
}
?>
</td>
</tr>
</table>
</div>
</body>
</html>
Mysql.php
Code (php)
1
2
3
4
5
2
3
4
5
<?php
session_start();
mysql_connect('localhost', 'root', 'root') or die('Could not conect to MySQL.');
mysql_select_db('root') or die('Could not connect to MySQL database.');
?>
session_start();
mysql_connect('localhost', 'root', 'root') or die('Could not conect to MySQL.');
mysql_select_db('root') or die('Could not connect to MySQL database.');
?>
Profile.php
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
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
<?php
include 'config/mysql.php';
if(isset($_SESSION['userName'])) {
?>
<!DOCTYPE html>
<html>
<head>
<title>TeamCrafted: Profiel</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="http://www.teamgame.tk/css/game.css">
</head>
<body>
<?php include_once("header.php"); ?>
<div class="content">
<div>
<h2>Welkom <?php echo $_SESSION['userName'];?>,</h2>
<p>op onze browsergame website!</p>
<p>Hieronder kan je een browsergame naar keuze uikiezen.</p>
</div>
</div>
<ddiv class="image_1">
<a href="http://www.teamcrafted.tk/browsergame/business_game.php">
<imdg src="http://www.teamcrafted.tk/browsergame/images/business_game.png" alt="logo" title="TeamCrafted">
</a>
</divd>
</body>
</html>
<?php
} else {
header('Location: index.php');
}
?>
include 'config/mysql.php';
if(isset($_SESSION['userName'])) {
?>
<!DOCTYPE html>
<html>
<head>
<title>TeamCrafted: Profiel</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="http://www.teamgame.tk/css/game.css">
</head>
<body>
<?php include_once("header.php"); ?>
<div class="content">
<div>
<h2>Welkom <?php echo $_SESSION['userName'];?>,</h2>
<p>op onze browsergame website!</p>
<p>Hieronder kan je een browsergame naar keuze uikiezen.</p>
</div>
</div>
<ddiv class="image_1">
<a href="http://www.teamcrafted.tk/browsergame/business_game.php">
<imdg src="http://www.teamcrafted.tk/browsergame/images/business_game.png" alt="logo" title="TeamCrafted">
</a>
</divd>
</body>
</html>
<?php
} else {
header('Location: index.php');
}
?>
Ik hoop dat iemand me hiermee kan helpen!
Mvg,
Gewijzigd op 03/04/2017 18:56:02 door - Ariën -
en waar is je login(.php) ?
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
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
<?php
error_reporting('NOTICE');
include 'config/mysql.php';
function login() {
$userName = $_POST['userName'];
$password = $_POST['password'];
$query = mysql_query("SELECT * FROM `logins` WHERE `userName`='$userName' AND `password`='$password'");
$errors = array();
if (empty($userName)) {
$errors[] = 'Je gebruikersnaam kan niet leeg zijn.';
}
if (empty($password)) {
$errors[] = 'Je wachtwoord moet volledig zijn.';
}
if ($errors==true) {
foreach ($errors as $error) {
echo $error.'<br />';
}
} else {
if (mysql_num_rows($query)==true) {
echo 'Ingelogd! We sturen je door naar je configuratiescherm.';
$_SESSION['userName'] = $_POST['userName'];
include 'config/redirect_profile.php';
} else {
echo 'Login mislukt. Heb je wel een juiste email of een juist wachtwoord ingegeven?';
}
}
}
?>
error_reporting('NOTICE');
include 'config/mysql.php';
function login() {
$userName = $_POST['userName'];
$password = $_POST['password'];
$query = mysql_query("SELECT * FROM `logins` WHERE `userName`='$userName' AND `password`='$password'");
$errors = array();
if (empty($userName)) {
$errors[] = 'Je gebruikersnaam kan niet leeg zijn.';
}
if (empty($password)) {
$errors[] = 'Je wachtwoord moet volledig zijn.';
}
if ($errors==true) {
foreach ($errors as $error) {
echo $error.'<br />';
}
} else {
if (mysql_num_rows($query)==true) {
echo 'Ingelogd! We sturen je door naar je configuratiescherm.';
$_SESSION['userName'] = $_POST['userName'];
include 'config/redirect_profile.php';
} else {
echo 'Login mislukt. Heb je wel een juiste email of een juist wachtwoord ingegeven?';
}
}
}
?>
Gewijzigd op 13/07/2014 12:54:38 door John De Zon
Ik zie dit staan in jouw code:
Code (php)
Waarom vernietig je niet de complete sessie? Waarom unset je alleen de username?
Hoe doe je dat dan?
Als ik dat doe gebeurt er niets
Victor G op 13/07/2014 15:43:21:
Wat je nu doet is een key uit de array* weghalen, als je de hele array weg wil hebben doe je simpelweg
* $_SESSION is een array
* $_SESSION is een array
daar heb je voor.
Maar dan is dus alles uit je sessie weg, ook dingen die niet met inloggen te maken hebben.
Toevoeging op 13/07/2014 16:05:53:
wat gebeurt er in config/redirect_profile.php ?
Ik heb het probleem ook zo nog steeds als ik 2 keer herlaad via de profile.php?id=1 pagina werkt het wel.
En bij je 2e refresh de sessions niet meer bestaat vanwege je eerste refresh.
Gewoon logout.php maken en daar session_destroy() doen ?
Victor G op 13/07/2014 15:43:21:
Wat je nu doet is een key uit de array* weghalen, als je de hele array weg wil hebben doe je simpelweg
* $_SESSION is een array
* $_SESSION is een array
Even de manual lezen:
Quote:
Caution Do NOT unset the whole $_SESSION with unset($_SESSION) as this will disable the registering of session variables through the $_SESSION superglobal.
@Frank alleen een redirect in html
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
session_start();
// Uitloggen
session_destroy();
session_id(sha1(microtime()));
session_start();
?>
session_start();
// Uitloggen
session_destroy();
session_id(sha1(microtime()));
session_start();
?>
Dit probleem gaat maar niet weg. Kan iemand misschien een andere aanpak van sessie doorsturen die volgens hem/haar wel moet werken.
Dus wat is het probleem nog?
De gebruikersnaam blijft nog steeds staan!
Wat heb je nu?