Jump to content
  • 0

Сессии


gesandte
 Share

Question

Делаю себе авторизацию на сессиях. Написал код, начал покускам обкатывать. Когда дело дошло до раздела, что такой пользователь есть в бд и надо записать кое какие данные в сессию вылетело вот это:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\language\russian\auth.lng.php:1) in C:\xampp\htdocs\auth.php on line 58

Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively in Unknown on line 0

через переводчик примерно так :

Предупреждение: session_start () [function.session-начало]: не Может послать ограничитель тайника сессии - заголовки, уже посланные (продукция началась в C:\xampp\htdocs\language\russian\auth.lng.php:1) в C:\xampp\htdocs\auth.php на линии 58

Предупреждение: Неизвестный: Ваш подлинник возможно полагается на побочный эффект сессии, который существовал до PHP 4.2.3. Доводим до вашего сведения, что расширение сессии не рассматривает глобальные переменные как источник данных, если register_globals не позволен. Вы можете повредить эти функциональные возможности и это предупреждение, устанавливая сессию bug_compat_42 или сессию bug_compat_warn к прочь, соответственно в Неизвестном на линии 0

———————————————————————————————————-

При чем вообще не понятно, какого хрена он на языковой файл еще указывает.

Вот фрагмент кода


$access_uid = $access[uid];
$access_user = $access[name];
$access_ip = $_SERVER['REMOTE_ADDR $HTTP_X_FOWARDED_FOR'];

# Регистрируем переменные в сессии
session_name(AccessSession);
session_start();
session_register("access_uid");
session_register("access_user");
session_register("access_ip");

Надеюсь что можете разобраться в проблеме.

Спасибо за внимание

Link to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 0
"headers already sent"

Что тут не понятно? Включайте ob_start() или подключайте сессию в первых строках самого первого файла. В учебнике всё это есть.

про ob_start() впервые слышу :lol: у меня про такое не написано.... ;) щас в инете почитаю

может сессию нужно сделать глобальной с помощью global()?

либо $_SESSION (или $HTTP_SESSION_VARS)

вобщем вот мое любимое слово: тыц.

даааа) я и не знал

Спасибо всем за помощь

Link to comment
Share on other sites

  • 0

попробывал, вобщем сессия регистрируется и работает как надо(для регистр глобасл офф)

		session_start();
$_SESSION['sis_a'] = $sis[a];
$_SESSION['sis_b'] = $sis[b];

но есть одно но, вылетает ошибка следующего характера

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\ReC\language\russian\auth.lng.php:1) in C:\xampp\htdocs\ReC\admin\auth.php on line 55

возможно перед открытием надо задать время жизни сессии......

Link to comment
Share on other sites

  • 0

Если этот файл куда-то инклудится, то надо ставить первой строкой в том файле, который его инклудит. Хотя и не обязательно первой, лишь бы до вывода информации.

Link to comment
Share on other sites

  • 0

да нет, этот файл не инклудится, в него там еще кое что вставляется в самом начале только, вот сокращенный вариант


# Проверяем сессию
$flag = session_function();

if ($flag == false) {
# Сессия отсутствует
# Проверяем нажата ли кнопка
if (isset($_POST['enter'])) {
# Подключаем файлы
sleep(1);

# Хэшируем
# SQL запрос

# Обработка запроса
if (@mysql_num_rows($query_access) >= 2) {
echo "$lng_auth_5";
exit();
} elseif (@mysql_num_rows($query_access) === 0) {
echo "$lng_auth_6";
exit();
} elseif (@mysql_num_rows($query_access) === 1) {
echo "Авторизация произведена <br>";
echo "<a href=\"http://localhost/........">Раздел администрирования</a>";
}

# Авторизация прошла успешно
$access = mysql_fetch_array($query_access);

#session_set_cookie_params('9876543210');
#ini_set('session.gc_maxlifetime', '2500000');
#ini_set('session.cookie_lifetime', 120960);
#ini_set('session.save_path', $_SERVER['DOCUMENT_ROOT'] .'../sessions/');
session_start();

Edited by gesandte
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy