|
|
|
| Здравствуйте форумчане.
Проблема вооот в чем. Перестали устанавливаться 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 и вся проблема в скриптах. Как исправить код или хотя бы подскажите в каком направлении копать. У меня уже голова скоро взорвется. | |
|
|
|
|
|
|
|
для: ED777
(12.08.2014 в 21:42)
| | а где exit() ? | |
|
|
|
|
|
|
|
для: Trianon
(12.08.2014 в 23:58)
| | exit() где я не понял? Вам можно написать в личку? | |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 14:31)
| | непосредственно после вызова header('Location: ...') | |
|
|
|
|
|
|
|
для: Trianon
(13.08.2014 в 16:38)
| | Это не к чему не приводит. Так как не выполняется условие if (setcookie("test", "set")) | |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 20:26)
| | Начальник отдела системного администрирования ответил.Включил Вам доисторическую версию php 4 и вроде как все заработало, проверьте пожалуйста. Хотя на некоторых компьютерах проблема осталась. | |
|
|
|
|
|
|
|
для: ED777
(12.08.2014 в 21:42)
| | Внимательно читаем хотя бы первый абзац: http://heel.org.ua/php-functions/setcookie.html | |
|
|
|
|
|
|
|
для: Deed
(13.08.2014 в 20:09)
| | Я про установку читал здесь http://php.net/manual/ru/function.setcookie.php. Результат нулевой. Тем более там написано "Все аргументы, кроме name, являются необязательными" | |
|
|
|
|
 327 байт |
|
|
для: ed777
(13.08.2014 в 21:21)
| | А если просто установить куку а потом перезагрузить страницу и проверить ее наличие?
С учетом того, что код с setcookie() должен находиться ДО вывода любой информации на этой странице.
Пример приаттачен. | |
|
|
|
|
|
|
|
для: 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. | |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 22:14)
| | А точно $_GET['probe'] существует? | |
|
|
|
|
|
|
|
для: Deed
(13.08.2014 в 22:23)
| | Вот ссылка http://polylow.com/authorization/authoriz.php?probe=set. Это мой второй сайт. Я его делал для сына. Здесь еще не чего не изменено на сервере. А на моем переустановлен PHP. | |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 22:28)
| | Вставьте в самом начале кода (но после session_start(), если он есть), ну, например, такое: setcookie("name","boo") и дайте мне знать. Я проверю.
Только быстрее, мне завтра в смену. | |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 22:28)
| | так может, там вообще php нет?? | |
|
|
|
|
|
|
|
для: 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");
}
}
?>
|
| |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 22:52)
| | http://polylow.com/authorization/authoriz.php - этот файл НЕ посылает никаких кук вообще. | |
|
|
|
|
|
|
|
для: Deed
(13.08.2014 в 23:01)
| | А в чем проблема, встала вдруг неожиданно???????? | |
|
|
|
|
|
|
|
для: ED777
(13.08.2014 в 23:03)
| | Друже, а шо, если на время отменить инклюд authoriz2.php? Я не знаю, что там содержится.
Но, скорее всего, проблемы с php на хостинге. Нужно писать в саппорт. | |
|
|
|
|
|
|
|
для: 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 сайтов, но после апгрейта частично не работает только Ваш сайт. | |
|
|
|
|
|
|
|
для: 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 - если счетчик не сработает, смело выдвигайте претензии хостеру. | |
|
|
|
|
|
|
|
для: 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 ни бум бум. Может он вам, что то подскажет.
Уважаемые у кого еще идеи есть? Завтра буду писать в саппорт. Посмотрим, что там скажут. | |
|
|
|