Пак за сесиите

7 отговора 298 прегледа
#1

Пак за сесиите

Здравейте,
на Linux-ски сървър с PHP v.4.3.8
(в php.ini е зададено session.use_cookies On, session.use_only_cookies Off, session.use_trans_sid On)
искам да нправя следното: на всяка страница от сайта да проверявам дали user-a се е логнал и ако да стартирам сесия, за да му предоставя повече услуги. Ако не продължавам без сесия докато не се сети да се логне.

Пробвам така:
на всяка страница:
session_start();
if (!isset($_SESSION['user'])) {session_unset(); session_destroy();}

Работи обаче има следния досаден ефект - още от първата страница всички линкове са с ?PHPSESSID=.... накрая

Как да го изчистя?
Благодаря предварително.
Между другото на Linux но с PHP v.4.2.2 същия код работи без този (д)ефект

Отговор
в отговор на ano #2

Re: Пак за сесиите

SESSION

Обърни внимание на :
session.use_trans_sid


root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy

Редактирано от ro6avia на

Отговор
в отговор на ro6avia #3

Re: Пак за сесиите

Ro6av, моля те, уточни какво имаш в предвид!

Ако идеята ти е да го сетна session.use_trans_sid Off, тогава наиcтина няма ?PHPSESSID..... в линковете, но пък ако user-a отказва да приема cookies сесията няма да работи.

Благодаря за отделеното време.

Отговор
в отговор на ano #4

Re: Пак за сесиите

Избираш си

или ?ПХПСЕССИД или КУКИ
ако не взима куки-та - задължително транс сид

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на ro6avia #5

Re: Пак за сесиите

Да, това е така.
Ясно че ще има ?PHPSESSID=... когато user-а e забранил cookies

Проблема ми е, че дори когато user-а e разрешил cookies в линковете се появява ?PHPSESSID=....

А, всъщност, това се случва само в IE и то само във v.6. Това го установих току що. В Mozilla се държи прилично.

Имате ли идеи?
Благодаря.

Отговор
в отговор на ano #6

Re: Пак за сесиите

Да не би да гледаш само първото повикване - там винаги има ?PHPSESSID. При второто, ако има cookie, няма. Броузъра не би трябвало да има значение.

И най-ярките личности си плащат тока.
Отговор
в отговор на edembg #7

Re: Пак за сесиите

можеш да си направиш следната изгъзица :
<?php
session_start();
$_SESSION['num_of_vizits'] += 1;
if ($_SESSION['num_of_vizits']==1){
header("Location: index.php");
die();
}
...
nadolu drugia ti kod

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на edembg #8

Re: Пак за сесиите

Edembg, абсолютно си прав, че става въпрос само за първото повикване.
Както и че браузера няма значение - явно снощи много ми се е искало в IE да е причината ;) Съжалявам, че ви подведох.

Обаче, би ли ми обяснил, моля те, защо става така (с първото извикване).
И как да го избягна?
И още: защо това е така на PHP 4.3.8, а на 4.2.2 го няма ?PHPSESSID=... при първото извикване? (тоя път проверих 3 пъти)

Благодаря.

Отговор