
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
|||||
![]() Пользователь ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 58 Пользователь №: 26063 На форуме: Карма: ![]() |
Код
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 написал(а):
Да, есть, поместить 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 написал(а):
Самое начало - это когда перед ним нет никакого вывода: ни 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 написал(а): Спасибо Всем за помощь. Буду вносить этот код во все страницы... |
||||
![]() |
![]() ![]() ![]() |