Проблем с сесии

Styl3rbg

Registered
Здравейте,

имам проблем със една логина система с лични съобщения и по-точно, когато използвам информация от сесията, сесията се session_destroy();, но там не съм го писал..
PHP:
$user_id = $_SESSION['userinfo']['id'];
ето това като използвам и се премахва..
идеи?
Ето кода за сесията, от където вземам информация
PHP:
$runq = mysql_query("SELECT * FROM `admin` WHERE user='$user' AND password='$pass'");
                                $provLogin = mysql_num_rows($runq);
                                if($provLogin == 1) {
                                    $row = mysql_fetch_assoc($runq);
                                    $_SESSION['userinfo']=$row;
                                    $_SESSION['logged']=true;
header('Location:  index.php');
                                }
 
пробвай така да видим:

$user_id = $_SESSION['userinfo'][0];

и също можеш да пробваш да замениш това:

$row = mysql_fetch_assoc($runq);

с това:

$row = mysql_fetch_array($runq);
 
smoke каза:
пробвай така да видим:

$user_id = $_SESSION['userinfo'][0];

и също можеш да пробваш да замениш това:

$row = mysql_fetch_assoc($runq);

с това:

$row = mysql_fetch_array($runq);
не разбрах защо [0] ?
 
Проблема е, че при рефреш с F5 сесията се destroy.. Някакви идеи?
ПП: Това става само в този файл:
PHP:
<?php
session_start();
ob_start();
include 'includes/configuration.php';
include 'includes/functions.php';
include 'includes/head.php';

		    $id = (int)$_GET['id'];
			if($id == NULL) {
			header("Location: index.php");
			}
			$update = mysql_query("UPDATE posts SET views=views+1 WHERE id='$id'");
			$topics = mysql_query("SELECT * FROM posts WHERE id='$id' AND type='topic'") or die(mysql_error());
			$t = mysql_fetch_assoc($topics);
			$author_id = $t['author_id'];
            ?>

					<?php
					$userinfo = mysql_query("SELECT * FROM members WHERE id='$author_id'");
					$userinfo2 = mysql_fetch_assoc($userinfo);
					$userposts = mysql_num_rows($userinfo);
					?>
					<img src="<?php echo $userinfo2['avatar']; ?>" alt="<?php echo $userinfo2['username']; ?>" border="1" width="150" style="margin-top:5px;"/>
					<?php
					$rank = mysql_query("SELECT * FROM members WHERE id='$author_id'");
					$rank2 = mysql_fetch_assoc($rank);
					$ranka = $rank2['rank'];
					if ($ranka == 0) { //Потребител
					echo '<div style="text-align:center;"><img src="images/ranks/member.png"></div>	';
					}
					elseif ($ranka == 2) { //VIP
					echo '<div style="text-align:center;"><img src="images/ranks/vip.png"></div>	';
					}
					elseif ($ranka == 3) { //Модератор
					echo '<div style="text-align:center;"><img src="images/ranks/moderator.png"></div>	';
					}
					elseif ($ranka == 4) { //Администратор
					echo '<div style="text-align:center;"><img src="images/ranks/administrator.png"></div>	';
					}
					else { //Ако не е нито един от горепосочените, изписваме, че е потребител :)
					echo '<div style="text-align:center;"><img src="images/ranks/member.png"></div>	';
					}
					?>					
                    <div style="background:white;border:1px solid #CCC;padding:5px;margin-top:5px;"> 
                       <?php
						if ($ranka == 0) { //Потребител
					echo 'Потребител';
					}
					elseif ($ranka == 2) { //VIP
					echo 'VIP';
					}
					elseif ($ranka == 3) { //Модератор
					echo 'Модератор';
					}
					elseif ($ranka == 4) { //Администратор
					echo 'Администратор';
					}
					else { //Ако не е нито един от горепосочените, изписваме, че е потребител :)
					echo 'Потребител';
					}
?>
 
$update не се изпълнява, сложи му проверка.

$id = (int)$_GET['id'];
if($id == NULL)
{
header("Location: index.php");
}

Това нема начин да стане, щом му слагаш int.Дори $id = (int) NULL; пак ще върне 0 и проверките с null се правят с ===.

Като сложиш var_dump($_SESSION); в кода какво излиза ?
 
alex3 каза:
$update не се изпълнява, сложи му проверка.

$id = (int)$_GET['id'];
if($id == NULL)
{
header("Location: index.php");
}

Това нема начин да стане, щом му слагаш int.Дори $id = (int) NULL; пак ще върне 0 и проверките с null се правят с ===.

Като сложиш var_dump($_SESSION); в кода какво излиза ?
с var_dump връща
Код:
array(2) { ["userinfo"]=> &array(18) { [0]=> string(1) "1" ["id"]=> string(1) "1" [1]=> string(7) "Styl3r" ["username"]=> string(7) "Styl3r" [2]=> string(32) "101a6ec9f938885df0a44f20458d2eb4" ["password"]=> string(32) "101a6ec9f938885df0a44f20458d2eb4" [3]=> string(10) "1313318023" ["timestamp"]=> string(10) "1313318023" [4]=> string(15) "Styl3r@mail.bg" ["email"]=> string(15) "Styl3r@mail.bg" [5]=> string(19) "images/noavatar.png" ["avatar"]=> string(19) "images/noavatar.png" [6]=> string(10) "13.08.2011" ["date"]=> string(10) "13.08.2011" [7]=> string(1) "4" ["rank"]=> string(1) "4" [8]=> string(9) "127.0.0.1" ["ip"]=> string(9) "127.0.0.1" } ["logged"]=> &bool(true) }
А ако не съм логнат
Код:
 array(2) { ["userinfo"]=> &int(0) ["logged"]=> &bool(true) }
 
nom3r1 каза:
Защо пазиш всичката информация в сесия?
Мисля че разбрах къде е проблема :)
В сесията ще пазя id-то само, просто не съм оправил както трябва скрипта все още :)
 

Back
Горе