session wordt niet verwijderd.
ik heb een inlog scriptje gemaakt, alleen als ik uitlog en op de hoofdpagina kom, dan staat er nogsteeds een session:
(op hoofdpagina:)
output:
Array ( [PHPSESSID] => 344484e718008ca881122cd375b532e2 )
en logout.php:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?
session_start();
ob_start();
unset($_SESSION['user_id']);
unset($_SESSION['user_status']);
session_destroy();
if(isset($_COOKIE["cookie_id"])) {
setcookie("cookie_id", "", time()-60*60*24*30, "/","www.site.com");
setcookie("cookie_pass", "", time()-60*60*24*30, "/","www.site.com");
}
echo "Je bent succesvol uitgelogd.<br />\n<a href=\"index.php\">« terug naar de hoofdpagina</a>";
include("htmlbottom.php");
?>
session_start();
ob_start();
unset($_SESSION['user_id']);
unset($_SESSION['user_status']);
session_destroy();
if(isset($_COOKIE["cookie_id"])) {
setcookie("cookie_id", "", time()-60*60*24*30, "/","www.site.com");
setcookie("cookie_pass", "", time()-60*60*24*30, "/","www.site.com");
}
echo "Je bent succesvol uitgelogd.<br />\n<a href=\"index.php\">« terug naar de hoofdpagina</a>";
include("htmlbottom.php");
?>
heb al vele dingen geprobeerd, maar dit klopt toch gewoon???!
bedankt!
een sessie is wat anders dan een cookie. Check php.net
en sla nooit passwoorden op in cookies.
inderdaad nu komt er niks uit (als ik print_r($_session) doe.
het is nogsteeds fout, maar ik zal nu even verder testen;)
Toevoeging op 07/03/2011 10:17:08:
oke het probleem zit hem denk ik in de cookie.
als ik geen cookie zet heeft hij de session gewoon een inhoud.
met cookie heeft de cookie geen inhoud en de session ook niet!
de code:
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
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
<?php
$sql = "SELECT user_id,username,password,admin,active,cookie_pass FROM `account` WHERE username='".mysql_real_escape_string($_POST['username'])."' AND
password='".md5($_POST['password'])."'";
$query = mysql_query($sql);
$count = mysql_num_rows($query);
if($count == 1) {
$row = mysql_fetch_object($query);
$cookiepass = htmlspecialchars($row->cookie_pass);
$user_id = htmlspecialchars($row->user_id);
$userstatus = htmlspecialchars($row->admin);
$useractief = htmlspecialchars($row->active);
if($useractief == 1) {
$_SESSION['user_id'] = $user_id;
$_SESSION['user_status'] = $userstatus;
if($_POST['cookie'] == "do") {
if($cookiepass == "") {
$cookiecode = mt_srand((double)microtime()*100000);
while(strlen($cookiecode) <= 10) {
$i = chr(mt_rand (0,255));
if(eregi("^[a-z0-9]$", $i)) {
$cookiecode = $cookiecode.$i;
}
}
$sql = "UPDATE `account` SET cookie_pass = '".$cookiecode."' WHERE username = '".mysql_real_escape_string($_POST['username'])."' LIMIT 1";
mysql_query($sql);
$cookiepass = $cookiecode;
}
setcookie("cookie_id", $user_id, time()+60*60*24*30, "/", "www.site.com");
setcookie("cookie_pass", $cookie_pass, time()+60*60*24*30, "/", "www.site.com");
}
?>
$sql = "SELECT user_id,username,password,admin,active,cookie_pass FROM `account` WHERE username='".mysql_real_escape_string($_POST['username'])."' AND
password='".md5($_POST['password'])."'";
$query = mysql_query($sql);
$count = mysql_num_rows($query);
if($count == 1) {
$row = mysql_fetch_object($query);
$cookiepass = htmlspecialchars($row->cookie_pass);
$user_id = htmlspecialchars($row->user_id);
$userstatus = htmlspecialchars($row->admin);
$useractief = htmlspecialchars($row->active);
if($useractief == 1) {
$_SESSION['user_id'] = $user_id;
$_SESSION['user_status'] = $userstatus;
if($_POST['cookie'] == "do") {
if($cookiepass == "") {
$cookiecode = mt_srand((double)microtime()*100000);
while(strlen($cookiecode) <= 10) {
$i = chr(mt_rand (0,255));
if(eregi("^[a-z0-9]$", $i)) {
$cookiecode = $cookiecode.$i;
}
}
$sql = "UPDATE `account` SET cookie_pass = '".$cookiecode."' WHERE username = '".mysql_real_escape_string($_POST['username'])."' LIMIT 1";
mysql_query($sql);
$cookiepass = $cookiecode;
}
setcookie("cookie_id", $user_id, time()+60*60*24*30, "/", "www.site.com");
setcookie("cookie_pass", $cookie_pass, time()+60*60*24*30, "/", "www.site.com");
}
?>
wat klopt hier niet?
Toevoeging op 07/03/2011 10:39:05:
sterker nog, ik weet dat dit fout is:
setcookie("cookie_id", $user_id, time()+60*60*24*30, "/", "www.site.com");
setcookie("cookie_pass", $cookie_pass, time()+60*60*24*30, "/", "www.site.com");
de echo $user_id geeft de waarde 2
de echo $_cookie['cookie_id'] geeft niks (en hij staat erna;)
dusss ik ga het even uitzoeken;) (hulp is altijd welkom^^)
Toevoeging op 07/03/2011 10:56:23:
oke dat is dus gefixt (was wel goed^^ iets anders dus niet)
nu dit probleem:
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
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
<?php
if(isset($_COOKIE["cookie_id"])) {
// Read cookie, make session
$sql = "SELECT user_id,username,admin FROM `account` WHERE user_id='".mysql_real_escape_string($_COOKIE['cookie_id'])."' AND cookie_pass='".mysql_real_escape_string($_COOKIE['cookie_pass'])."' AND active=1";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$user_id = htmlspecialchars($row->user_id);
$user = htmlspecialchars($row->username);
$userstatus = htmlspecialchars($row->admin);
$_SESSION['user_id'] = $user_id;
$_SESSION['user_status'] = $userstatus;
if($user==''){
echo "leeg";
}
echo $user;
echo $_session['user_id'];
echo $_session['user_status'];
echo "<b>welkom back ".$user."</b>,<br>";
echo '<form method="post" action="http://www.site.com/stats.php">';
echo'<input type="submit" name="submit" value="aanmelden" /></form>';
echo '<a href="http://www.site.com/index.php?dc=1">meld je als iemand anders aan</a>';
?>
if(isset($_COOKIE["cookie_id"])) {
// Read cookie, make session
$sql = "SELECT user_id,username,admin FROM `account` WHERE user_id='".mysql_real_escape_string($_COOKIE['cookie_id'])."' AND cookie_pass='".mysql_real_escape_string($_COOKIE['cookie_pass'])."' AND active=1";
$query = mysql_query($sql);
$row = mysql_fetch_object($query);
$user_id = htmlspecialchars($row->user_id);
$user = htmlspecialchars($row->username);
$userstatus = htmlspecialchars($row->admin);
$_SESSION['user_id'] = $user_id;
$_SESSION['user_status'] = $userstatus;
if($user==''){
echo "leeg";
}
echo $user;
echo $_session['user_id'];
echo $_session['user_status'];
echo "<b>welkom back ".$user."</b>,<br>";
echo '<form method="post" action="http://www.site.com/stats.php">';
echo'<input type="submit" name="submit" value="aanmelden" /></form>';
echo '<a href="http://www.site.com/index.php?dc=1">meld je als iemand anders aan</a>';
?>
}
er komt 'leeg uit', terwijl er wel wat inzit (van die if $user='')
wat doe ik nu weer fout-.-
Het is altijd $_SESSION en $_COOKIE met hoofdletters.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Uitloggen...</title>
</head>
<?
session_start();
session_destroy();
header("Location: http://jesite.nl.);
?>
<body>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Uitloggen...</title>
</head>
<?
session_start();
session_destroy();
header("Location: http://jesite.nl.);
?>
<body>
</body>
</html>
het lag aan de cookie_pass, die was niet goed (en die was dus leeg, waardoor de query 0 was...
bedankt!
Nu nog even doen wat Aar adviseert: en sla nooit passwords op in cookies.
maar zoals ik al zei; het is niet het echte password, maar een nieuw gegenereerd wachtwoord die vergeleken wordt met dat in de database;)