Хуудсыг ачаалж байна. Түр хүлээнэ үү.
loading...

Анхан шат

SESSION, Cookie
Өмнөх хэрэглэгчдийн хүсэлтүүдийг нэг нэгээр нь гүйцэтгэхийг их хичээж байна. Ажлын ачаалал их байгаагийн улмаас удаж буй явдалд хүчил өчье. Энэ удаад SESSION болон COOKIE тэй холбоотой зарим мэдээллүүдийг хүргэе.
PHP session + cookie

PHP-н тохиргоо дээр session_name()-н үндсэн утга нь /seesion нэр/ PHPSESSID байдаг. Тиймээс session_start() функцыг ажиллуулж эхлэхэд session_name() нь PHPSESSID нэртэйгээр тухайн домэйнд үүсэх бөгөөд давхар COOKIE-д үүсэж байдаг. Юу гэсэн үг вэ гэвэл $_COOKIE['PHPSESSID'] = session_id(); болно гэсэн үг юм.

Одоо өөрсдийн SESSION-г үүсгэцгээе. Дараахь мэдээллүүдэд илүү код их байж болно. Гол нь SESSION-тэй хамааралтай зүйлсийн талаар ойлголт өгөхийг хичээж байгааг анхаарна уу. Мөн нууцлал талыг энэ удаад дурдаагүй болно.

1.    Эхлээд дараахи кодуудад ашиглагдах хувьсагчуудыг тодорхойлъё

$cookieName = 'MySessionName'; //бидний үүсгэх session-ий нэр
$sessionExpireTime = 3600; //session идэвхгүй болох хугацаа

2.    unset($_COOKIE['PHPSESSID']);
Уг комманд нь COOKIE-н үндсэн хувьсагчийг устгана. Бид өөрсдийн өөр нэртэйгээр SESSION-г үүсгэх тул уг COOKIE шаардлагагүй юм.

3.    COOKIE-н ивэвхгүй болох хугацаа нь хугацаа дуусмагц өөрөө устгах бөгөөд үндсэн тохиргоонд 24 мин буюу 1440 секунд гэсэн тохиргоотой байдаг. Харин COOKIE-н мэдээллээр session_name() үүсэж тодорхойлогдох тул хэдэн минут уг COOKIE маань идэвхтэй байхыг тохируулж өгнө.

ini_set('session.cookie_lifetime', $sessionExpireTime);
//ini_set('session.cookie_lifetime',3600);

Дээрхи кодны 2 дахь мөрөнд 1 цаг идэвхтэй байхыг тодорхойлж байна. Хэрэв хэрэглэгч нэвтрэхдээ НАМАЙГ САНУУЛ гэдгийг сонгосон бол уг хугацааг НИЛЭЭД өндөр оноож өгч болно. Жш: 60*60*24*30 гэж тооцоод үр дүнг өгвөл тухайн хэрэглэгч маань 30 хоногийн дотор өмнө үүссэн COOKIE-н тусламжтайгаар тухайн хэрэглэгчийн session-г сэргээн шууд нэвтрүүлэх боломжтой болно.

4.   
if(isset($_COOKIE[$cookieName]) && strlen($_COOKIE[$cookieName)==32){
     $session_id = $_COOKIE[$cookieName]; //cookie-с өмнө ашиглагдаж байсан session-ий id байгаа эсэхийг шалгаад байгаа тохиолдолд тухайн id-г оноож өгч байна
}else{
     $session_id = md5(uniqid(rand(), true)); //өмнө ашиглаглагдаж байсан session байхгүй тохиолдолд шинээр id үүсгэх утгыг оноож байна.
}

Дээрхи код нь өмнө ашиглаж байсан, одоогоор идэвхгүй болох хугацаа нь дуусаагүй session байгаа эсэхийг шалгаад ямар утга авахыг оноож өгнө.

5.  
if(isset($_GET['sid'])){
$session_id = ($_GET['sid']);
}

Дээрхи код нь $_GET-р шинэ id орж ирж байгаа эсэхийг шалгаад хэрэв шинэ id орж ирж байвал тухайн session ямар id тай байхыг тодорхойлно. Myfile.php?sid=XXXXXXX хэлбэртэйгээр дамжуулна гэсэн үг.

6.    session_name($cookieName);
Дээрхи код нь одоо бидний өөрсдийн оноож өгсөн нэрээр session-ий нэрийг тохируулна

7.    session_id($session_id);
Дээрхи код нь бидний үүсгэсэн session-ий id-г шинээр оноож өгнө. Өмнө ашиглаж байсан session бол id-г бид 4р хэсэг дээр шалгаад тохируулсан байгаа учраас уг тохиргооны дагуу ажиллана.

8.    За одоо session-ээ ажиллуулъя.
session_start();
Уг функцыг яаж ажиллах тухай өмнө толилуулж байсан.

    
За одоо жишээн дээр ажиллацгаая. /Нэг файл дээр жишээ авлаа./

Code:
<?
$cookieName = 'MySessionName';
$sessionExpireTime = 600;

unset($_COOKIE['PHPSESSID']);
ini_set('session.cookie_lifetime', $sessionExpireTime);

if(isset($_COOKIE[$cookieName]) && strlen($_COOKIE[$cookieName])==32){
     $session_id = $_COOKIE[$cookieName];
}else{
     $session_id = md5(uniqid(rand(), true));
}
if(isset($_GET['sid'])){
    $session_id = ($_GET['sid']);
}
session_name($cookieName);
session_id($session_id);
session_start();

echo '<h3>Session info</h3>';
//session ii utguudiig hevlej uzii;
echo 'session id : '.session_id().'<br />';
echo 'session name : '.session_name().'<br />';
foreach(session_get_cookie_params() as $k=>$v){
    echo $k.': '.$v.'<br />';
}
echo '<hr />';
echo '<h3>Cookie info</h3>';
echo 'cookie value : '.$_COOKIE[$cookieName];
echo '<hr />';
foreach($_COOKIE as $k=>$v){
    echo $k.': '.$v.'<br />';
}
?>

Session Id солихын тулд
Code:
myfile.php?sid=141b146eac77216b0b66a882a2915d60

гэх мэт ашиглана.
Үнэлэх
Нэвтрэнэ үү
Үнэлгээ (1)

Сэтгэгдэл үлдээх
Нэр
Сэтгэгдэл
Өмнөх сэтгэгдлүүд »