[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: сессия не сохраняется
MaximGQ
Код

session_start();
if (!isset($_SESSION['order_s'])) {
$_SESSION['order_s'] = rand(1111111111,9999999999);
echo "new";
}
else echo $_SESSION['order_s'];

Каждый раз при обновлении страницы или переходе. Выдает "new", то есть сессия не сохраняется.
Подскажите пожалуйста, в чем ошибка?



Спустя 2 минуты, 2 секунды (28.11.2011 - 21:58) Winston написал(а):
А до session_start(); нету никакого вывода на экран ?

Спустя 9 минут, 58 секунд (28.11.2011 - 22:08) MaximGQ написал(а):
Этот код находится в файле header.php(в самом файле перед этим кодом только код для работы с MySQL, потом соответственно код и далее шапка страницы). Этот файл с помощью include включен во все страницы сайта. в самое начало страницы после <body>. До него соответственно куча всего.
Попробовал сейчас открыть header.php отдельно - сессия сохранилась и передается по всем страницам. Но пользоатели же не будут хеадер первой загружать. А выносить в index.php тоже не выход, потому как пользователь может оставить страницу открытой и на след день продолжить Есть ли выход?

Спустя 3 минуты, 51 секунда (28.11.2011 - 22:11) Winston написал(а):
Цитата (MaximGQ @ 28.11.2011 - 21:08)
Есть ли выход

Да, есть, поместить session_start до любого вывода на экран.
Также прописав
error_rporting(E_ALL);

Ты увидишь предупреждение, что сессия стартует после того как уже было, что-то выведено на экран.

Спустя 2 минуты, 17 секунд (28.11.2011 - 22:14) MaximGQ написал(а):
Или этот код только нужно вносить на все страницы без включения с header? Хотел чтоб меньше кода у меня было, к тому же хеадер везде повторяется. сейчас попробую сделать включение header в самом начале кода, а не после body. Я так делал на какой-то странице, но она у меня отображаться некорректно стала, дополнительные отступы стали появляться, смещения и т.д.

Спустя 2 минуты, 27 секунд (28.11.2011 - 22:16) MaximGQ написал(а):
Если в отдельный файл вынести сессии, а также код типа

<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
}

$theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}
}

И включить этот файл в самом верху кода - проблем быть не должно? И с MySQL тоже если это вынести?

Спустя 1 минута, 46 секунд (28.11.2011 - 22:18) Nikitian написал(а):
Цитата (MaximGQ @ 28.11.2011 - 22:08)
в самое начало страницы после <body>. До него соответственно куча всего.

Самое начало - это когда перед ним нет никакого вывода: ни echo/print etc, ни пробелов, переводов строк, BOM-меток вне php-кода.

Спустя 2 минуты, 38 секунд (28.11.2011 - 22:20) MaximGQ написал(а):
BOMов нет нигде. А почему так? Почему сессии после другого кода не работают?

Спустя 4 минуты, 8 секунд (28.11.2011 - 22:25) Nikitian написал(а):
После вывода. Как вариант, можно сделать буферизацию данных и стартовать сессию, ставить куки, устанавливать хедеры практически где угодно.
Подробнее о буферизации вывода тут

Спустя 5 минут, 15 секунд (28.11.2011 - 22:30) johniek_comp написал(а):
MaximGQ
так задано по умолчанию! не будешь же ты штаны через голову одевать? если не работает смени кодировку на ютф без бом, т.к. там пробел будет и сессия не будет работать, а что бы увидеть при отладке пиши error_reporting(E_ALL);

Спустя 4 минуты (28.11.2011 - 22:34) MaximGQ написал(а):
Спасибо Всем за помощь. Буду вносить этот код во все страницы...
Быстрый ответ:

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