Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не передаются переменные в сессии 
V
    Опции темы
GPolis
Дата 1.12.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



Суть проблемы вот в чем:

Есть страница index.php, в которую с помощью include вставлен модуль логина. Модуль логина выводит форму логина, если переменная сессии не определена. Или выводит имя пользователя, если определена. Форма логина отправляет POST-запрос на отдельную страницу логина, которая, собственно, и создает сессию с переменной имени, переадресуя с помощью Header(Location:...) поьзователя обратно на страницу index.php. Все это приведено в приложенном в файле коде.

Результат его работы таков, что index.php видит идентификатор сессии, но не видит переменных сессии. Index.php создает сессию и определяет ее переменные в самом начале. Сделать это в модуле логина проблематично, т.к. до его работы в браузер уже выведена некоторая информация. Однако, несмотря на выскакивающую ошибку в заголовках, переменные все же передаются в этом случае. Возникает вопрос, можно ли вообще использовать такую структуру файлов (главная страница->модуль->компонент) для подобной задачи? Или ошибка настолько глупа ,что я ее просто не вижу?

Код:
index.php
Код

<?php
//Уничтожает сессию
if(@$logout==1){
//session_name('gps');
//session_unset();
session_destroy();
};
//Инициирует сессию

if(IsSet($s_ID)){
session_name('gps');
session_start();
session_register("s_ID","s_login","s_password","s_name");
};

//подсоединяется к базе данных
mysql_connect('localhost','root','');
mysql_select_db('tst');
mysql_error();

//Подгружает шаблоны
?>
<html>
<?
require("templates/header.php"); //Header.php и содержит модуль логина
require("templates/main.php");
require("templates/footer.php");
?>  


mod_login.php
Код

<?php
//Если сессия существует
if(@IsSet($gps)){
  //session_name('gps');
  //session_start();
  //session_register("s_ID","s_login","s_name");
  echo 'Welcome <b>'.$_SESSION['s_name'].'</b><br><a href='.$SCRIPT_NAME.'?logout=1>Logout</a>';  
} else {
    echo '<form action="components/com_login.php" method=post>';
    echo '<input name=login class=inputstyle>';
    echo '<input type=password name=password class=inputstyle>';
    echo '<input type=submit name=lb value=Login class=inputstyle>';
    echo '<br><a href=register.php>Register</a>';
    echo '</form>';
};
?>


com_login.php
Код

<?
//подсоединяется к базе данных
mysql_connect('localhost','root','');
mysql_select_db('tst');
mysql_error();
//проверяет логин и пароль
  $check = mysql_query("select * from `USERS` where `login`='$login' and `password`='$password'");
  $check = mysql_fetch_array($check);
//если логин и пароль совпали
  if(@$check){
    session_name('gps');
    session_start();
    session_register("s_ID","s_login","s_password","s_name");  
    //session_set_cookie_params(time()+3600*24);
    //setcookie(session_name(),session_id(),time()+3600*24);
    $s_login=$login;
    $s_ID=$check['ID'];
    $_SESSION['s_name']=$check['name'];
    //echo $s_name;
    Header("Location: ../index.php?gps=".session_id());
    //create_add_form();
  } else {
    echo "Bad login or password";
    };
?>


Таблица USERS
Код

CREATE TABLE `USERS` (
  `ID` int(11) NOT NULL default '0',
  `login` tinytext collate utf8_bin NOT NULL,
  `password` tinytext collate utf8_bin NOT NULL,
  `name` tinytext collate utf8_bin NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Code.zip 4,93 Kb
PM MAIL   Вверх
GPolis
Дата 4.12.2006, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



Может, все же кто-то знает ответ? smile 
PM MAIL   Вверх
XClan
Дата 4.12.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 434
Регистрация: 14.10.2003
Где: Планета Сириус

Репутация: нет
Всего: 3



А так не катит?
Код

if(@$check){
$login =@$HTTP_POST_VARS['login '];
$password =@$HTTP_POST_VARS['password '];
....



--------------------
rm -rf /bin/laden
PM MAIL WWW   Вверх
GPolis
Дата 4.12.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 30.11.2006

Репутация: нет
Всего: нет



Не совсем понял, что делать потом с этими переменными. Их ведь как-то нужно передать обратно в mod_login.php, который отображает имя...

В это-то вся и проблема  smile 
PM MAIL   Вверх
Kefir
Дата 6.12.2006, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


«Hakuna Matata»
***


Профиль
Группа: Комодератор
Сообщений: 1878
Регистрация: 25.1.2003
Где: Tampere, Suomi

Репутация: 13
Всего: 87



1. используй только глобальные переменные
2. лучше перепиши всё на один лад, а то ни черта непонятно - где что и почему (например использование $_SESSION и session_register() одновременно)
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.