The first time a page is accessed, PHP doesn't yet know if the browser is accepting cookies or not, so after session_start() is called, SID will be non-empty, and the PHPSESSID gets inserted in all link URLs on that page that are properly using SID.
This has the consequence that if, for example, a search engine bot hits your home page first, all links that it sees on your home page will have the ugly PHPSESSID=... in them.
This appears to be the default behavior. A work-around is to turn on session.use_only_cookies, but then you lose session data for anyone who has their cookies turned off.Проследување на ID на сесијата
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Проследување на ID на сесијата
Референца за `session.idpassing.php` со подобрена типографија и навигација.
Проследување на ID на сесијата
Постојат два методи за пропагирање на ID на сесија:
- Колачиња
- URL параметар
Модулот за сесии поддржува двата методи. Колачињата се оптимални, но бидејќи не се секогаш достапни, обезбедуваме и алтернативен начин. Вториот метод го вградува ID-то на сесијата директно во URL-ите.
PHP е способен транспарентно да ги трансформира линковите. Ако опцијата за време на извршување session.use_trans_sid е овозможена, релативните URI-и ќе бидат променети за автоматски да го содржат ID-то на сесијата.
Забелешка:
На arg_separator.output php.ini директивата овозможува прилагодување на разделувачот на аргументи. За целосна XHTML усогласеност, наведете & таму.
Алтернативно, можете да го користите константата SID која е дефинирана ако сесијата е започната. Ако клиентот не испратил соодветно колаче за сесија, таа има форма session_name=session_id. Инаку, се проширува во празен стринг. Така, можете безусловно да ја вградите во URL-ите.
Следниот пример покажува како да регистрирате променлива и како правилно да се поврзете на друга страница користејќи SID.
Пример #1 Броење на бројот на посети на еден корисник
<?php
session_start();
if (empty($_SESSION['count'])) {
$_SESSION['count'] = 1;
} else {
$_SESSION['count']++;
}
?>
<p>
Hello visitor, you have seen this page <?php echo $_SESSION['count']; ?> times.
</p>
<p>
To continue, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?>">click
here</a>.
</p>
На htmlspecialchars() може да се користи при печатење на SID
за да се спречат напади поврзани со XSS.
Печатење на SID, како што е прикажано погоре, не е потребно ако
--enable-trans-sid се користеше за компилација на PHP.
Забелешка:
Не-релативните URL-и се претпоставува дека упатуваат на надворешни локации и затоа не го додаваат
SID, бидејќи би било безбедносен ризик да се протечеSIDна друг сервер.