|
Тема
|
Пак за сесиите
|
|
Автор | ano (Нерегистриран) |
Публикувано | 25.11.04 21:53 |
|
Здравейте,
на 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 същия код работи без този (д)ефект
| |
Тема
|
Re: Пак за сесиите
[re: ano]
|
|
Автор |
ro6avia (усер френдли) |
Публикувано | 26.11.04 13:17 |
|
Обърни внимание на :
session.use_trans_sid
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroyРедактирано от ro6avia на 26.11.04 13:20.
| |
Тема
|
Re: Пак за сесиите
[re: ro6avia]
|
|
Автор | ano (Нерегистриран) |
Публикувано | 26.11.04 15:16 |
|
Ro6av, моля те, уточни какво имаш в предвид!
Ако идеята ти е да го сетна session.use_trans_sid Off, тогава наиcтина няма ?PHPSESSID..... в линковете, но пък ако user-a отказва да приема cookies сесията няма да работи.
Благодаря за отделеното време.
| |
Тема
|
Re: Пак за сесиите
[re: ano]
|
|
Автор |
ro6avia (усер френдли) |
Публикувано | 26.11.04 15:39 |
|
Избираш си
или ?ПХПСЕССИД или КУКИ
ако не взима куки-та - задължително транс сид
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
| |
Тема
|
Re: Пак за сесиите
[re: ro6avia]
|
|
Автор | ano (Нерегистриран) |
Публикувано | 26.11.04 18:18 |
|
Да, това е така.
Ясно че ще има ?PHPSESSID=... когато user-а e забранил cookies
Проблема ми е, че дори когато user-а e разрешил cookies в линковете се появява ?PHPSESSID=....
А, всъщност, това се случва само в IE и то само във v.6. Това го установих току що. В Mozilla се държи прилично.
Имате ли идеи?
Благодаря.
| |
Тема
|
Re: Пак за сесиите
[re: ano]
|
|
Автор |
edembg (Ученик) |
Публикувано | 26.11.04 19:53 |
|
Да не би да гледаш само първото повикване - там винаги има ?PHPSESSID. При второто, ако има cookie, няма. Броузъра не би трябвало да има значение.
И най-ярките личности си плащат тока.
| |
Тема
|
Re: Пак за сесиите
[re: edembg]
|
|
Автор |
ro6avia (усер френдли) |
Публикувано | 27.11.04 14:52 |
|
можеш да си направиш следната изгъзица :
<?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
| |
Тема
|
Re: Пак за сесиите
[re: edembg]
|
|
Автор | ano (Нерегистриран) |
Публикувано | 27.11.04 17:20 |
|
Edembg, абсолютно си прав, че става въпрос само за първото повикване.
Както и че браузера няма значение - явно снощи много ми се е искало в IE да е причината ;) Съжалявам, че ви подведох.
Обаче, би ли ми обяснил, моля те, защо става така (с първото извикване).
И как да го избягна?
И още: защо това е така на PHP 4.3.8, а на 4.2.2 го няма ?PHPSESSID=... при първото извикване? (тоя път проверих 3 пъти)
Благодаря.
| |
|
|
|
|