مشکل با کوکی و نشست ها

حسن غویشه

کاربر عضو
سلام وقت بخیر

دو تا اسکریپت نوشتم یکی با استفاده از کوکی و دیگری با استفاده از نشست ها

کوکی:

<?php
if (isset($_POST['nickname']) && !empty($_POST['nickname'])){
$nickname = $_POST['nickname'];
setcookie('nickname', $nickname, time() + 24*60);
$_COOKIE ['nickname'] = $nickname;
}
if (isset($_COOKIE['nickname'])){
$nickname = $_COOKIE['nickname'];
$returning = true;
} else {
$nickname = '';
$returning = false;
}


?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php if (isset($_POST['nickname']) && !empty($_POST['nickname'])) {
echo 'HI ' .$nickname;
} else {
echo 'COOKIE';
}
?></title>
</head>
<body>
<?php if ($returning): ?>
<p>Welcome back, dear <?php echo $nickname ?>! </p>
<?php else: ?>
<p>Welcome to your WEBSITE!</p>
<p>Please enter your Nickname: </p>
<form method="post">
<input type="text" name="nickname" value="" placeholder="Your Nickname">
<input type="submit" value="submit">
</form>
<?php endif; ?>
</body>

</html>




و حذف کوکی

<?php

unsetCookie('nickname');

function unsetCookie($name){
unset($_COOKIE[$name]);
setcookie($name, '', time() -1);
}




نشست:

<?php

session_start();
setcookie(session_name(), session_id(), time() + 7*24*60*60);

if (isset($_POST['nickname']) && !empty($_POST['nickname'])){
$_SESSION ['nickname'] = $_POST['nickname'];
}
if (isset($_SESSION['nickname'])){
$nickname = $_SESSION['nickname'];
$returning = true;
} else {
$nickname = '';
$returning = false;
}

?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><?php if (isset($_POST['nickname']) && !empty($_POST['nickname'])) {
echo 'HI ' .$nickname;
} else {
echo 'SESSION';
}
?></title>
</head>
<body>
<?php if ($returning): ?>
<p>Welcome back, dear <?php echo $nickname ?>! </p>
<?php else: ?>
<p>Welcome to your WEBSITE!</p>
<p>Please enter your Nickname: </p>
<form method="post">
<input type="text" name="nickname" value="" placeholder="Your Nickname">
<input type="submit" value="submit">
</form>
<?php endif; ?>
</body>

</html>




و حذف نشست:

session_destroy();
unset($_SESSION['nickname']);




مشکل 1: بعد از حذف کوکی یا نشست باز هم کار می کنند و از بین نمی روند!

مشکل 2: در قطعه کد زیر که در هر دو اسکریپت (کوکی و نشست) موجود می باشد قراره اگه نام مستعار "Nickname" وارد نشده فقط عبارت COOKIE یا SESSION رو نشون بده ولی بجاش عبارت HI رو نمایش میده.

<title>
<?php if (isset($_POST['nickname']) && !empty($_POST['nickname'])) {
echo 'HI ' .$nickname;
} else {
echo 'SESSION';
}
?>
</title>




لطفا راهنمایی نمایید

سپاس فراوان

 

Mohammad

مدیر انجمن
پرسنل مدیریت
در کنسول مرورگر ، این مقادیر کوکی براتون باقی میمونه یا خیر؟ چون اینطور نمیشه نظر قطعی داد.

 

حسن غویشه

کاربر عضو
سلام

بامداد بخیر

@Mohammad  ممـــــــــــــنون

شرمنده درگیر ادامه آموزش بودم و دیر جواب میدم 

بعد از unset کردن کوکی حذف میشه ولی وقتی کش صفحه کوکی رو حذف میکنم میبینم دوباره کوکی nickname ست شده :|

 
بالا