PDA

View Full Version : سوال: از بین بردن محتویات session



arefd2010
یک شنبه 06 اسفند 1391, 17:38 عصر
با سلام خدمت دوستان و اساتید محترم
سوال بنده در مورد یک برنامه ساده است به این شکل که : کاربر با نام کاربری خود وارد می شود و پس از ورود موفق به جای فرم login عبارت "خروج" ظاهر شود و کاربر پس از کلیک بر روی خروج بوسیله از بین بردن session های ذخیره شده توسط صفحه logout.php عمل خروج را انجام میدهد. ولی مشکلی که وجود داره اینه که session علیرغم destroy شدن هنوز وجود دارن. البته session در صفحه logout.php پاک می شود ولی در صفحه index.php هنوز session دارای مقدار های قبلی است. من می خوام پس از ریدایرکت شدن به صفحه index.php با چک کردن session متوجه بشم کاربری login شده یا نه.
این هم کد ها:

core.php


session_start();
ob_start();
@$current_file = $_SERVER['SCRIPT_NAME'];
@$http_referer = $_SERVER['HTTP_REFERER'];
function loggedIn() {
if (isset($_SESSION['userid']) && !empty($_SESSION['userid']) && ($_SESSION['userid'] != 'guest')) {
echo($_SESSION['userid']);
return true;
} else {
return false;
}
}
function getUserFields($field) {
$query = "SELECT `$field` FROM `users` WHERE `user-name` = '" . $_SESSION['username'] . "'";
if ($query_run = mysql_query($query)) {
if ($query_result = mysql_result($query_run, 0 , $field )){
return $query_result;
}
}
}



login.php


require("connect.php");
if (!empty ($_REQUEST['username']) && !empty($_REQUEST['password'])){
$username = mysql_real_escape_string($_REQUEST['username']);
$password = mysql_real_escape_string($_REQUEST['password']);
mysql_query('SET NAMES \'utf8\'');
$query = "SELECT * FROM `users` WHERE `user-name` = " . "'" . $username . "'";
$query_run = mysql_query($query);
if ($query_run = mysql_query($query)) {
$query_num_rows = mysql_num_rows($query_run);
if ($query_num_rows == 0 ) {
echo 'Invalid username/password combination.';
} else {
$userid = mysql_result($query_run, 0, 'id');
$_SESSION['userid'] = $userid;
echo'
<script type="text/javascript" language="javascript">
window.location.href = "../index.php";
</script>'; }
}
} else
{
echo('You must supply a username and password');
}


logout.php


$_SESSION = array();
$_SESSION['userid'] = 'guest';
echo($_SESSION['userid']);

echo($_SESSION['userid']);
echo'
<script type="text/javascript" language="javascript">
window.location.href = "../index.php";
</script>';
exit();


فایل index.php رو ضمیمه می کنم.
قسمت های مهم index.php



<div id="loginBox">
<div class="category-banner black-gradient">ورود به سايت</div><br />
<?php
if (!loggedIn()) {?>
<form class="logInForm" name="logInForm" action="script/login.php" method="post">
<table>
<tr><td>نام کاربري:</td><td><input class="logInTransition" id="userName" name="username" type="text" /><br /></td></tr>
<tr><td>رمز عبور:</td> <td><input class="logInTransition" id="userPass" name="password" type="password" /><br /></td></tr>
<tr><td><input type="button" class="button" value="عضويت" onclick="showRegForm()"/></td><td><input name="logInFormSubmit" class="button" onclick="validForms(this.form.name);" type="button" title=" ورود به سالت" value=" ورود " /></td></tr>
</table><br />
</form>
<?php } else { ?>
<a href = "script/logout.php">جروخ</a>
<?php } ?>
</div>


و این تیکه کد که درست درابتدای صفحه است...



<?php
require('script/core.php');
require('script/connect.php');
?>

MRmoon
یک شنبه 06 اسفند 1391, 19:22 عصر
نگا تو الان میخوای کلا اون سشن رو از بین ببری برای اینکا باید این کد رو بزنی:



unset($_SESSION['Your session name']);