|
|
|
| Просматривал я нынче свою базу статистики. Смотрю - зашёл вчера вечером на сайт Робот Яндекса, создал сеанс. В рамках сеанса обошёл три страницы. И тут вижу, что сегодня в 2 часа дня с Яндекса зашёл гость - и попал прямо в роботовский сеанс! (Мой счётчик ведёт учёт внутри сеансов). Робот сохранил ссылку вместо с get-идентификатором сеанса, а сеанс-то ещё жив!
А потом я с помощью оставшегося от гостя реферера нашёл на Яндексе эту ссылку и перешёл по ней. Угадайте, что произошло? Правильно - я попал В ТОТ ЖЕ САМЫЙ СЕАНС! Гость до меня ничено там не менял, вышел сразу (его другая тема интересовала). А вот я поместил в корзину пару стеночек. Потом закрыл свой IE. Потом снова открыл, зашёл на Яндекс и снова перешёл по той же ссылочке. И опять попал в тот же сеанс - корзиночка уже не пуста! А если кто ещё зайдёт? Уже двое будут делить одну корзину, одни личные настройки, одни личные данные (телефон, адрес итд). А если ещё парочка-тройка гостей зайдёт по той же ссылочке в примерно то же самое время?
К тому же вроде выходит, что пока сеанс на сервере жив, то при переходе по ссылке с прилепленным к ней SESSID гость попадёт в него. А если сеанс умер - БУДЕТ СОЗДАН НОВЫЙ ТАКОЙ ЖЕ, в который опять будут попадать все остальные!
Вот и скажите, кто-нибудь наблюдал уже подобные коллизии? И как с этим быть! А может я чего-то путаю, и всё совсем не так?
Прошу, кто-нибудь, помогите проверить догадку. Зайдите на Яндекс ([url]http://www.yandex.ru/yandsearch?text=поддержка iframe браузер&stype=www[/url]
), а оттуда - в корзину моего сайта (ссылка должна быть на 7 месте). Будет ли в корзине что-то? Если да, то можете перейти на страничку "оформить заказ" - я там в бланке приветственное сообщение оставил! Заказ и данные бланка хранятся в сеансе.
Побочный вопрос: почему Yandex/1.01.001 и msnbot/1.0 проиндексировали мою корзину, если в robots.txt прописано:
User-Agent: *
Disallow: /korz/
, а korz/ - это папка, в которой лежит файл корзины. | |
|
|
|
|
|
|
|
для: кен
(13.05.2005 в 19:38)
| | Все точно, две стенки и привет от товарища Кена лежат, мог бы еще пивка бутылочку... | |
|
|
|
|
|
|
|
для: кен
(13.05.2005 в 19:38)
| | Зашел я по ссылке
[url]http://www.yandex.ru/yandsearch?text=поддержка iframe браузер&stype=www[/url]
А дальше куда? | |
|
|
|
|
|
|
|
для: Flash5
(13.05.2005 в 20:37)
| | Дальше 7 место: "КЕНМЕБЕЛЬ.РУ: корзина. | мебельный интернет - магазин "КЕНТАВРУС", мебель с ..."
Да и прямо отсюда должно сработать:
[url]www.kenmebel.ru/korz/korz.php?KNTVRSMBL=626cbb23d1228312c45b8dbb23829d9a[/url] | |
|
|
|
|
|
|
|
для: кен
(13.05.2005 в 20:53)
| | Не отсюда ссылка кривая вышла, строки "http://softtime.ru/forum/" в адресе быть не должно - это вопрос к хозяевам форума, как так вышло. Нужна просто www.kenmebel.ru/korz/korz.php?KNTVRSMBL=626cbb23d1228312c45b8dbb23829d9a | |
|
|
|
|
|
|
|
для: Flash5
(13.05.2005 в 20:37)
| | 7й урл его.
Попробуй в хедере в метах прописать "noindex", но не обещаю, что поможет. | |
|
|
|
|
|
|
|
для: кен
(13.05.2005 в 19:38)
| | Тоже лицезрел две товарные позиции на 57 000 рублей. Так часто бывает, когда сессии именованные (KNTVRSMBL), передаются через URL и не уничтожаются, часто попадаешь на страницу ответа форума phpBB вместо страницы с постами. К сожалению, проблема воровства сессий стоит очень остро http://www.softtime.ru/info/articlephp.php?id_article=36 | |
|
|
|
|
|
|
|
для: cheops
(13.05.2005 в 21:07)
| | Статья хорошая. Но в моём случае роль "неосторожного владельца сеанса", предоставляющего всем ссылку с SID, выполняет робот поисковика, а роль "злоумышленника" - любой перешедший по этой ссылке.
- Как сделать, чтобы роботы сохраняли "чистые" ссылки, без строки параметров?
И про уничтожение я не совсем понял. Есть функции session_unset() и session_destroy(), но я не понимаю,
- в каком месте сценария их надо использовать, чтобы связь страниц через сеанс не разрушалась? | |
|
|
|
|
|
|
|
для: кен
(13.05.2005 в 23:25)
| | > - Как сделать, чтобы роботы сохраняли "чистые" ссылки, без строки параметров?
В общем случае, никак. Роботы практически никому не подвластны.
Вы можете только запретить им совсем читать данный раздел.
User-Agent: *
Disallow: /korz/
|
Странно, что эти строки не сработали.
robots.txt у вас в нижнем регистре записано? | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(14.05.2005 в 03:39)
| | Да, robot.txt в нижнем регистре. Почему не работает - не знаю. Но и запрет индексирования главной проблемы не решит: SID присоединён КО ВСЕМ ССЫЛКАМ НА ВСЕ СТРАНИЦЫ САЙТА от поисковиков Yandex, Yahoo!, MSN. Не запрещать же индексацию всего сайта! Раз роботам не укажешь, то остро встаёт задача: очередной человек заходит с поисковика в публично открытый сеанс, и мой скрипт должен обеспечить его новым собственным сеансом. Для определения нового гостя можно хранить в сеансе IP хозяина и сравнивать IP при каждом обращении к сеансу. А если IP не совпал, то вопрос:
- как, уже после регистрации сеанса (session_start() и session_register('IP')) и определения несовпадения IP, создать для гостя новый сеанс, никак не связанный с текущим?
Если ответа не найдётся, то вывод один: механизм сеансов (сессий) в PHP использовать НЕЛЬЗЯ! Ни в одном мало-мальски серьёзном проекте. И придётся что-то выдумывать с хранением сеансовых данных в файлах или в базе данных. | |
|
|
|
|
|
|
|
для: кен
(14.05.2005 в 04:29)
| | А нельзя использовать сессионные куки? Т.е. при заходе посетителя на сайт смотреть устанавливаются у него куки или нет, если устанавливаются, тогда не передавать SID через URL - он будет передаваться через сессионные куки автоматически. Если не устанавливаются тогда передавать его через SID? Пользователи браузеры которых не поддерживают cookie очень мало и для подавляющего большинства посетителей у вас будут чистые URL. Или вообще запретить передачу SID через URL, а на сайте поставить предупреждение, что для корректной работы необходимо включить поддержку cookie. Обычно так поступают.
Например при создании новой темы на этом форуме инициируется сессия, однако в SID она не помещается и роботы нормально индексируют страницы. | |
|
|
|
|
|
|
|
для: cheops
(14.05.2005 в 12:49)
| | Не по душе мне куки. Есть одна идея. Для проверки нужно организовать редирект с передачей параметров. Подскажите, как такой делается? Желательно, с помощью header. Я что-то не припомню. | |
|
|
|
|
|
|
|
для: cheops
(14.05.2005 в 12:49)
| | Да, забыл уточнить. Нужно сделать редирект на другую страницу в той же самой папке. | |
|
|
|
|
|
|
|
для: кен
(14.05.2005 в 16:37)
| | > Да, robot.txt в нижнем регистре.
файл должен называться robots.txt | |
|
|
|
|
|
|
|
для: JIEXA
(14.05.2005 в 19:42)
| | Это я здесь опечатался. А файл правильно называется: robots.txt. И не работает. | |
|
|
|
|
|
|
|
для: кен
(14.05.2005 в 04:29)
| | Вот такой совет нашёл на http://www.php.net/manual/en/ref.session.php:
wolfpack 03-Apr-2005 12:02
Search engines in general don't support cookies, and they don't do well with SIDs in the query string. If you use sessions, especially URL-based sessions, and want your site to be search engine friendly, the following works well:
<?php
$br = get_browser();
if (!($br->crawler))
{
// any session-related code goes here
}
else
{
// whatever your page needs to work without sessions
}
?>
|
To use the function get_browser() you may need to install browscap.ini. See the documentation for get_browser() for more info.
Дельный ли совет? Если эта штука работает как надо, то ей ведь и в статистике роботов ловить можно. А главное, по теме, роботы будут делать "чистые" ссылки, и проблема решается очент элегантно! Но вот насколько этот get_browser() точен? Кто-нибудь такой штукой пользовался? | |
|
|
|
|
|
|
|
для: кен
(15.05.2005 в 04:27)
| | Никто ничего не знает про get_browser()? Что-то я не пойму, как инсталлировать browscap.ini? | |
|
|
|