Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не уставливаются cookie
 
 автор: ED777   (12.08.2014 в 21:42)   письмо автору
 
 

Здравствуйте форумчане.
Проблема вооот в чем. Перестали устанавливаться cookies и session где то дней 10 назад. Точнее сессии живут до первой перезагрузки страницы. Коки проверялись, до обновления php на хосте вот так:
//проверка включены ли куки.....................
if (!isset($_GET['probe'])){
  //устанавливаем куки..........................
   if (setcookie("test", "set")){ header("Location:$_SERVER[PHP_SELF]?probe=set"); }
   }
if (isset($_COOKIE["test"])){ВКЛЮЧЕНЫ}
else{Не ВКЛЮЧЕНЫ}

Сейчас вся эта проверка на сервере не работает. На локалке работает отлично. Админ сервера объяснил, что у меня на локалке PHP 5.3.1, а у них на сервере после обновления PHP 5.3.10 и вся проблема в скриптах. Как исправить код или хотя бы подскажите в каком направлении копать. У меня уже голова скоро взорвется.

  Ответить  
 
 автор: Trianon   (12.08.2014 в 23:58)   письмо автору
 
   для: ED777   (12.08.2014 в 21:42)
 

а где exit() ?

  Ответить  
 
 автор: ED777   (13.08.2014 в 14:31)   письмо автору
 
   для: Trianon   (12.08.2014 в 23:58)
 

exit() где я не понял? Вам можно написать в личку?

  Ответить  
 
 автор: Trianon   (13.08.2014 в 16:38)   письмо автору
 
   для: ED777   (13.08.2014 в 14:31)
 

непосредственно после вызова header('Location: ...')

  Ответить  
 
 автор: ED777   (13.08.2014 в 20:26)   письмо автору
 
   для: Trianon   (13.08.2014 в 16:38)
 

Это не к чему не приводит. Так как не выполняется условие if (setcookie("test", "set"))

  Ответить  
 
 автор: ED777   (13.08.2014 в 21:34)   письмо автору
 
   для: ED777   (13.08.2014 в 20:26)
 

Начальник отдела системного администрирования ответил.Включил Вам доисторическую версию php 4 и вроде как все заработало, проверьте пожалуйста. Хотя на некоторых компьютерах проблема осталась.

  Ответить  
 
 автор: Deed   (13.08.2014 в 20:09)   письмо автору
 
   для: ED777   (12.08.2014 в 21:42)
 

Внимательно читаем хотя бы первый абзац: http://heel.org.ua/php-functions/setcookie.html

  Ответить  
 
 автор: ed777   (13.08.2014 в 21:21)   письмо автору
 
   для: Deed   (13.08.2014 в 20:09)
 

Я про установку читал здесь http://php.net/manual/ru/function.setcookie.php. Результат нулевой. Тем более там написано "Все аргументы, кроме name, являются необязательными"

  Ответить  
 
 автор: Deed   (13.08.2014 в 21:44)   письмо автору
327 байт
 
   для: ed777   (13.08.2014 в 21:21)
 

А если просто установить куку а потом перезагрузить страницу и проверить ее наличие?
С учетом того, что код с setcookie() должен находиться ДО вывода любой информации на этой странице.
Пример приаттачен.

  Ответить  
 
 автор: ED777   (13.08.2014 в 22:14)   письмо автору
 
   для: Deed   (13.08.2014 в 21:44)
 

<?php
if(!empty($_POST)){include ("authoriz2.php");}
//проверка на включены ли куки.....................
if(!isset ($_GET['probe']))
    {
    
//устанавливаем куки..........................
    
if (setcookie("test""set"time()+86400".polylow.com"1))
        {
        
header("Location:$_SERVER[PHP_SELF]?probe=set");
        }
    }
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head></head>

<body></body>
</html>

Но почему три года все это работало, а сейчас после обновлений не работает?

Пробовал в файле .htaccess увеличить время жизни сессии и коки вот файл:

ErrorDocument 404 /error.php
ErrorDocument 403 /error.php
ErrorDocument 402 /error.php
ErrorDocument 401 /error.php
ErrorDocument 500 /error.php
# -FrontPage-
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthUserFile /home/portalh/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/portalh/public_html/_vti_pvt/service.grp
AuthName portal-holod.ru
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
php_value session.gc_maxlifetime 1440
php_value session.cookie_lifetime 0

В результате на экране появилось сообщение.

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.
Please contact the server administrator, webmaster@portal-holod.ru and inform them of the time the error occurred, and anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

  Ответить  
 
 автор: Deed   (13.08.2014 в 22:23)   письмо автору
 
   для: ED777   (13.08.2014 в 22:14)
 

А точно $_GET['probe'] существует?

  Ответить  
 
 автор: ED777   (13.08.2014 в 22:28)   письмо автору
 
   для: Deed   (13.08.2014 в 22:23)
 

Вот ссылка http://polylow.com/authorization/authoriz.php?probe=set. Это мой второй сайт. Я его делал для сына. Здесь еще не чего не изменено на сервере. А на моем переустановлен PHP.

  Ответить  
 
 автор: Deed   (13.08.2014 в 22:40)   письмо автору
 
   для: ED777   (13.08.2014 в 22:28)
 

Вставьте в самом начале кода (но после session_start(), если он есть), ну, например, такое: setcookie("name","boo") и дайте мне знать. Я проверю.
Только быстрее, мне завтра в смену.

  Ответить  
 
 автор: Deed   (13.08.2014 в 22:41)   письмо автору
 
   для: ED777   (13.08.2014 в 22:28)
 

так может, там вообще php нет??

  Ответить  
 
 автор: ED777   (13.08.2014 в 22:52)   письмо автору
 
   для: Deed   (13.08.2014 в 22:41)
 

Вставил
<?php session_start();
setcookie("name","boo");
if(!empty(
$_POST)){include ("authoriz2.php");}
//проверка на включены ли куки.....................
if(!isset ($_GET['probe']))
    {
    
//устанавливаем куки..........................
    
if (setcookie("test","set"))
        {
        
header("Location:$_SERVER[PHP_SELF]?probe=set");
        }
    }
?> 

  Ответить  
 
 автор: Deed   (13.08.2014 в 23:01)   письмо автору
 
   для: ED777   (13.08.2014 в 22:52)
 

http://polylow.com/authorization/authoriz.php - этот файл НЕ посылает никаких кук вообще.

  Ответить  
 
 автор: ED777   (13.08.2014 в 23:03)   письмо автору
 
   для: Deed   (13.08.2014 в 23:01)
 

А в чем проблема, встала вдруг неожиданно????????

  Ответить  
 
 автор: Deed   (13.08.2014 в 23:08)   письмо автору
 
   для: ED777   (13.08.2014 в 23:03)
 

Друже, а шо, если на время отменить инклюд authoriz2.php? Я не знаю, что там содержится.
Но, скорее всего, проблемы с php на хостинге. Нужно писать в саппорт.

  Ответить  
 
 автор: ED777   (13.08.2014 в 23:10)   письмо автору
 
   для: Deed   (13.08.2014 в 23:08)
 

Отменил, но там не чего интересного вот код
<?php

//соединения с MySQL сервером
include ("connect.php");
if(empty(
$_COOKIE["nic"]))
    {            
    
//проверка на совпадение логина и пароля
    
mysql_query ("SET NAMES cp1251");
    
$table mysql_query ("SELECT * FROM clients WHERE id_nic = '" $_POST['autho_nic'] . "' and id_pass = '" md5($_POST['autho_password']) . "'") or die (mysql_error());
    
$error 2;
    if (
$table)
        {
        
$error 0;
        
$field mysql_fetch_array ($table);
        if (
$field)
            {
            if (empty(
$field ['id_moderat'])){$error 1;}
            if (
$field ['id_moderat'] == 2){$error 3;}
            if (
$field ['id_moderat'] == 1)
                {                            
                
//установка кокиев
                
$_COOKIE['mail'] = $field ['id_mail'];
                
$_COOKIE['index'] = $field ['id_index'];
                
$_COOKIE['nic'] = $field ['id_nic'];
                
                
setcookie ("mail""$_COOKIE[mail]"0"/");
                
setcookie ("index""$_COOKIE[index]"0"/");
                
setcookie ("nic""$_COOKIE[nic]"0"/");                
        
                
//запись в таблицу даты и времени последнего входа
                
$date time();
                
mysql_query ("SET NAMES cp1251");
                
mysql_query ("UPDATE clients SET id_dateVizit='$date' WHERE id_mail='" $_COOKIE['mail'] . "'") or die (mysql_error());
                }
            }
        }
    }

if(
md5($_POST['autho_password2']) == "f79c98625238234e6677f0698cc189ef")
    {    
    
$_COOKIE["pass"] = $_POST['autho_password2'];
    
setcookie ("pass""$_COOKIE[pass]"0"/");
    }
        
mysql_close ($db);


if (empty(
$_COOKIE['index']) and empty($error)){$error "Авторизация не пройдена. Забыли логинпароль? Не прошли регистрацию?"; return;}
if (
$error == 1){$error "Регистрация аккаунта не подтверждена."; return;}
if (
$error == 2){$error "Нет соединения с таблицей"; return;}
if (
$error == 3){$error "Ваш аккаунт заблокирован. Обратитесь к администратору сайта"; return;}
?>

И что им говорить они уперлись, что ошибка в установке и проверке коки и сессий. Дословно звучит так: "Скажите пожалуйста, что конкретно Вы хотите чтобы я Вам сказал или что конкретно сделал? Я Вам уже объяснял, что я ни разу не программист, кодом не занимался, не занимаюсь и никогда не буду, это просто не мое. Так же я Вам говорил, что на сервере были обновления связанные с окончанием жизненного цикла базы mysql версии 5.1 и переходом на более новую ветку этой базы, устранением некоторых уязвимостей интерпретатора php 5.3.
Вы уверены, что у Вас в локалке стоит именно такая версия php, с так же собрана с теме же параметрами и тем же компилятором?"

И еще цитата Проблема однозначно где то в скриптах, так как Вы находитесь на сервере где более 500 сайтов, но после апгрейта частично не работает только Ваш сайт.

  Ответить  
 
 автор: Deed   (13.08.2014 в 23:39)   письмо автору
 
   для: ED777   (13.08.2014 в 23:10)
 

В общем, последнее, что могу сегодня предложить, это распаковать файл из аттача к этому ответу http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=91438#post543709 на ХОСТИНГЕ и попробовать его открыть браузером: http://polylow.com/jamescook.php - если счетчик не сработает, смело выдвигайте претензии хостеру.

  Ответить  
 
 автор: ED777   (14.08.2014 в 15:05)   письмо автору
 
   для: Deed   (13.08.2014 в 23:39)
 

Скрипт jamescook.php ответил Это ваше первое посещение страницы. Перезагрузка страницы результата не дает. Я нашел один скриптик JS
 <head>
<style> 
 .sch{ 
 background-color:#fff; 
 color: #369; 
 font-weight:bold; 
 } 
 </style> 

 <SCRIPT> 
 expireDate = new Date 
 expireDate.setMonth(expireDate.getMonth()+6) 
 jcount = eval(cookieVal("jaafarCounter")) 
 jcount++ 
 document.cookie = "jaafarCounter="+jcount+";expires=" + expireDate.toGMTString() 
 function cookieVal(cookieName) { 
 thisCookie = document.cookie.split("; ") 
 for (i=0; i<thisCookie.length; i++){ 
  if (cookieName == thisCookie[i].split("=")[0]){ 
  return thisCookie[i].split("=")[1] 
  } 
 } 
 return 0 
 } 
 function sch_control(){ 
 for (i=0;i<(7-jcount.toString().length);i++) 
 document.write('<span class="sch">0</span>') 
 for (y=0;y<(jcount.toString().length);y++) 
 document.write('<span class="sch">'+jcount.toString().charAt(y)+'</span>') 
 } 
 </SCRIPT> 
</head>

<body>
<script> 
sch_control (jcount); 
</script>
</body>
 

Вот он сволочь работает, а я в JS ни бум бум. Может он вам, что то подскажет.

Уважаемые у кого еще идеи есть? Завтра буду писать в саппорт. Посмотрим, что там скажут.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования