[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сессии, cookies и боты
te0203
На сайте при появлении нового полкзователя он получает в сесию масив с правами и куку с даными о посещении.
После установки этого скрипта все боты стали получать от сервера ошибку 500.
Не подскажите в чом проблема? Боты не принимают куки или сесии не поддерживают?
Вот код скрипта:
if(empty($_SESSION['login'])){//Проверяем существует ли логин в сесии
if(!isset($_COOKIE['anonimus'])){//Проверяем наличие куки
setcookie("anonimus", time(), time()+9999999, "/", "host", 0, true);//Устанавливаем куку
}else{
if(isset($_COOKIE['kolpos'])){
$kolpos = $_COOKIE['kolpos'] + 1;
setcookie("kolpos", $kolpos, time()+9999999, "/", "host", 0, true);//Если есть кука с количеством посещений то увеличиваем её на 1
}else{
$kolpos = 1;
setcookie("kolpos", $kolpos, time()+9999999, "/", "host", 0, true);//Если нет куки с количеством посещений то устанавливаем её
}
}

$anonimus = $my->SelectOne("CALL PR_UserAnonimus;");//Выбираем из базы данные по пользователю anonimus
$dostResult = $my->Select("CALL PR_UserPrivilegenAnonimus;");//Выбираем привилегии пользователя anonimus
while($dost = mysqli_fetch_assoc($dostResult)){//Заносим все привилегии в сессионный масив
$_SESSION['dost'][$dost['privilege_code']] = TRUE;
}
$_SESSION['login'] = $anonimus['login'];
$_SESSION['password'] = $anonimus['password'];
$_SESSION['email'] = $anonimus['email'];
$_SESSION['sid'] = $anonimus['id'];
if(isset($_COOKIE['anonimus'])){
$_SESSION['cookis'] = $_COOKIE['anonimus'];
}
$_SESSION['skidka'] = $anonimus['skidka'];
if($_SERVER['REMOTE_ADDR'] == '195.138.92.112'){
$_SESSION['ofis'] = true;
}
if(!isset($_COOKIE['anonimus'])){
$my->Log("Регистрация анонимного пользователя. $_SERVER[REMOTE_ADDR]");
}else{
$d = date("Y-m-d H:i:s", $_SESSION['cookis']);
$my->Log("Пользователь уже был ".$d.' IP адрес: '.$_SERVER['REMOTE_ADDR']);
}
}




Спустя 18 минут, 53 секунды (13.08.2011 - 16:21) Winston написал(а):
500 Ошибка - это внутренняя ошибка сервера. Возможно на сервере какой-то запрет стоит...?

Спустя 1 минута, 35 секунд (13.08.2011 - 16:23) Invis1ble написал(а):
te0203
в код не смотрел, но
Цитата
Боты не принимают куки

ДА, хотя смотря какие боты (могут и принимать, если их специально под это дело заточить)

Спустя 1 минута, 53 секунды (13.08.2011 - 16:25) te0203 написал(а):
Они не принимают но и ошибки от этого не должно быть, они должны игнорировать их.

Спустя 7 минут, 41 секунда (13.08.2011 - 16:33) Invis1ble написал(а):
смотри лучше код .htaccess, если таковой имеется
либо настройки сервера поменялись (без .htaccess)

Спустя 13 минут, 24 секунды (13.08.2011 - 16:46) te0203 написал(а):
На хосте говорят ,что ничего не меняли и ошибка 500 это внутреняя ошибка php и искать нужно в коде.
Добавил фильтрацию по $_SERVER['HTTP_USER_AGENT'] и всё заработало
Свернутый текст

function botAgent($agent){
$bot = array(
'Googlebot', 'AdsBot', 'bot', 'Mediapartners-Google', 'bots', 'YandexBot', 'YandexMetrika', 'bingbot',
'DotBot', 'WordPress', 'Xap', 'LWP', 'TNX', 'SolomonoBot', 'META', 'Yandex/1.01.001', 'SISTRIX',
'Yandex/2.01.000', 'Deepnet Explorer', 'XMPP', 'Yahoo! Slurp', 'YandexMarket', '/search?'
);//
foreach ($bot as $value){
$pos = strpos($agent, $value);
if ($pos !== false) {
return false;
}
}

return true;
}
f(empty($_SESSION['login'])){//Проверяем существует ли логин в сесии
$bot = botAgent($_SERVER['HTTP_USER_AGENT']);
if($bot != false){
if(!isset($_COOKIE['anonimus'])){//Проверяем наличие куки
setcookie("anonimus", time(), time()+9999999, "/", "resanta.net.ua", 0, true);//Устанавливаем куку
}else{
if(isset($_COOKIE['kolpos'])){
$kolpos = $_COOKIE['kolpos'] + 1;
setcookie("kolpos", $kolpos, time()+9999999, "/", "resanta.net.ua", 0, true);//Если есть кука с количеством посещений то увеличиваем её на 1
}else{
$kolpos = 1;
setcookie("kolpos", $kolpos, time()+9999999, "/", "resanta.net.ua", 0, true);//Если нет куки с количеством посещений то устанавливаем её
}
}

$anonimus = $my->SelectOne("CALL PR_UserAnonimus;");//Выбираем из базы данные по пользователю anonimus
$dostResult = $my->Select("CALL PR_UserPrivilegenAnonimus;");//Выбираем привилегии пользователя anonimus
while($dost = mysqli_fetch_assoc($dostResult)){//Заносим все привилегии в сессионный масив
$_SESSION['dost'][$dost['privilege_code']] = TRUE;
}
$_SESSION['login'] = $anonimus['login'];
$_SESSION['password'] = $anonimus['password'];
$_SESSION['email'] = $anonimus['email'];
$_SESSION['sid'] = $anonimus['id'];
if(isset($_COOKIE['anonimus'])){
$_SESSION['cookis'] = $_COOKIE['anonimus'];
}
$_SESSION['skidka'] = $anonimus['skidka'];
if($_SERVER['REMOTE_ADDR'] == '195.138.92.112'){
$_SESSION['ofis'] = true;
}
if(!isset($_COOKIE['anonimus'])){
$my->Log("Регистрация анонимного пользователя. $_SERVER[REMOTE_ADDR]");
}else{
$d = date("Y-m-d H:i:s", $_SESSION['cookis']);
$my->Log("Пользователь уже был ".$d.' IP адрес: '.$_SERVER['REMOTE_ADDR']);
}
}
}

Спустя 2 минуты, 38 секунд (13.08.2011 - 16:49) Winston написал(а):
Цитата (te0203 @ 13.08.2011 - 16:46)
ошибка 500 это внутреняя ошибка php

Не PHP а сервера wink.gif

Спустя 6 минут, 11 секунд (13.08.2011 - 16:55) Invis1ble написал(а):
да-да, подтверждаю )
Internal Server Error

Спустя 6 минут, 2 секунды (13.08.2011 - 17:01) te0203 написал(а):
Ну с хостером не поспоришь.
Приходится фильтровать перед выдачей куки.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.