[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Авторизация на сайте - как "запомнить" пользователя?
Naurgrim
Пишу авторизацию на сайт.. начал изучать PHP сравнительно недавно =) Так вот.. Авторизация с помощью сессий:<br><br>На странице index.php<br><br>
<?php
 $sname = trim($_POST['name']);
 $spass = trim($_POST['pass']);
 $fo = file("тут имя файла с паролями и логинами");
 $login = false;
 foreach($fo as $s)
 {
  $aUser = explode(" ", $s);
  if((trim($aUser[0])==$sname)&&(trim($aUser[1])==$spass))
  {
   $login = true;
   session_start();
   $_SESSION['auth']=1;
   break;
  }
 }
?>

...
далье где-то там на страничке в нужном месте:

<?php
  if ($_SESSION['auth']==1) echo ("Добро пожаловать, $sname");
  else echo('Добро пожаловать, гость!');
?>


на защищенной странице или ссылке пишу:

<?php
session_start();
if($_SESSION['auth']!=1)
{
 echo('Авторизуйтесь с главной страницы!');
 exit;
}
 

Пользователь успешно проходит авторизацию.. После повторного захода на сайт или нажатия кнопки обновить тожа все ок, повторная аторизация не тр*цензура*ется НО выводится сообщение "Добро пожаловать, гость!"... а имя не запоминает...

К сему вопрос: как сделать, чтоб имя пользователя сохранялось в сессии?



Спустя 13 минут, 21 секунда (29.11.2006 - 14:22) Ghost написал(а):
в сессии имя не запоминается

$_SESSION["sname"] = $sname;

Спустя 56 минут, 12 секунд (29.11.2006 - 15:18) Naurgrim написал(а):
<!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->в сессии имя не запоминается<br><br>$_SESSION["sname"] = $sname;<br><br>Отредактированно Ghost (Сегодня 21:24:22)<!--QuoteEnd--></div><!--QuoteEEnd--><br>Ну вставил я <br>
 
session_start();
   $_SESSION['sname'] = $sname;
   $_SESSION['auth']=1;
 


и дальше на странице

<?php
 if ($_SESSION['auth']==1) 
  echo ('Добро пожаловать, $sname');
 else echo('Добро пожаловать, гость!');
?>


И нифига... нажимаю обновить страницу и пишет гость... хотя пускает по ссылкам, то есть auth сохраняет.
Толи я тугой то ли еще что... в файле сессии содержится "sname|s:5:"admin";auth|i:1;" то есть вроде все есть.... Посоветуйте, где я накосячил..

Спустя 27 минут, 2 секунды (29.11.2006 - 15:45) md5 написал(а):
на всех страницах session_start(); ??

Спустя 58 секунд (29.11.2006 - 15:46) md5 написал(а):
полезно просматривать переменные и массивы в ходе работы print_r($_SESSION);

Спустя 6 минут, 50 секунд (29.11.2006 - 15:53) Naurgrim написал(а):
Ну session_start() соответственно на главной и на защищенной, я думаю ни к чему на каждой-то лепить.. Просто даже залогинившись, я нажимаю кнопку "обновить" и сразу получаю "Добро пожаловать, гость!".
Воть

Спустя 11 минут, 43 секунды (29.11.2006 - 16:04) Ghost написал(а):
Naurgrim,
прилепи на каждой :)
и на каждой проверяй значения массива сессии

Спустя 6 дней, 23 часа, 26 минут, 42 секунды (6.12.2006 - 15:31) PhpDracon написал(а):
Привет всем:)
Я новичок
У меня вот такая проблема:
Допустим я учусь создавать интернет магазин
И первое что я сделал страницу регистрации пользователя
Итак пользователь зарегился,информация,пароли записались в базу данных.
Потом я сделал форму ввода ника и пароля
А как проверить его ник и пароль в базе и впустить его на сайт?
И при следующем входе он не вводил это все заново?

Спустя 1 час, 8 минут, 38 секунд (6.12.2006 - 16:40) Ghost написал(а):
1. изучить основы sql
2. прочитать тему сначала и подумаь.

Спустя 6 дней, 16 часов, 10 минут, 6 секунд (13.12.2006 - 08:50) Lucky написал(а):
QUOTE(Ghost)
Naurgrim,
прилепи на каждой :)
и на каждой проверяй значения массива сессии

У меня иногда возникала ситуация, когда php ругался если на каждой странице session_start();

на мой взгляд это не должно было бы случатся. но...

файл1 проверял правильность заполнения формы и перенправлял (header()) на сверку с базой. Вот тут фторой файл и ругался - что session is opened.

не подскажите в чём дело?

Спустя 33 минуты, 33 секунды (13.12.2006 - 09:23) md5 написал(а):
приведи ошибки, которые тебе выводятся, а вобще в поиск по форуму и вобще по манам и факам, сессии - миллионы раз обсуждались..

Спустя 4 часа, 7 минут, 54 секунды (13.12.2006 - 13:31) max_ru написал(а):
$_SESSION['auth']=1; - это ОЧЕНЬ плохо. Ты даже не представляешь, КАК это плохо.
(Я бы предложил проверять каждый раз наличие пары username/userpass в $_REQUEST и $_SESSION и каждый (!!!) раз проверять на валидность. Только не надо кричать о трате ресурсов. Одна десятитысячная доля секунды, которая тратится на извлечение хэша из БД (Кстати, почему пароли в файле???) не играет роли. Подмена cookies в таком случае невозможна, как и большинство трюков. Не надо привязывать id сессии к ip (в большинстве случаев).)

Спустя 16 минут, 42 секунды (13.12.2006 - 13:48) tishka написал(а):
max_ru,
QUOTE
Я бы предложил проверять каждый раз наличие пары username/userpass в $_REQUEST и $_SESSION

if (isset($_REQUEST[session_name()])) session_start();
ты имеешь в виду что то типа этого на каждой странице?

Спустя 10 минут, 44 секунды (13.12.2006 - 13:59) AlexBB написал(а):
QUOTE(max_ru)
Я бы предложил проверять каждый раз наличие пары username/userpass в $_REQUEST и $_SESSION и каждый (!!!) раз проверять на валидность.

А с какого перепугу они каждый раз будут оказываться в $_REQUEST ?

Спустя 1 час, 31 минута, 29 секунд (13.12.2006 - 15:30) md5 написал(а):
AlexBB,
скорее всего имеется ввиду каждый раз оказываться в $_SESSION и в $_REQUEST при авторизации

tishka,
имеется ввиду, что на каждой странице проверяется наличие логина и пароля в сессионных данных

Спустя 2 года, 1 месяц, 20 часов, 56 минут, 51 секунда (14.01.2009 - 12:27) 1112 написал(а):
    [/list]
        4
            [list]
          [shadow=][/shadow][fliph][i][b][u][html][sql][php]

          Спустя 9 месяцев, 1 день, 20 часов, 2 минуты, 52 секунды (16.10.2009 - 07:30) Сережа написал(а):
          у меня тоже авторизация не работает.
          на виртуальном дкнвере все работает
          а на реальном хостинге не работае
          вот отрывок из программы
          session_start();
          print_r($_SESSION);


          if(!isset($_SESSION['log'])) { $_SESSION['log'] = 0;}


          if (!($_SESSION['log'])) {
          login();
          } else {

          захожу на главную страницу результат Array ( [log] =>0 ) и авторизация прошла
          захожу второй раз - вдруг переменная становиться Array ( [log] =>1 )

          а потом вообще исчезает Array ( [log] => ) и авторизацию приходиться заново делать.

          session_destroy(); я не делал!!! в чем может быть проблема??

          Cerega-23 @ yandex . ru

          Спустя 38 минут, 27 секунд (16.10.2009 - 08:08) Гость_Сергей написал(а):
          делал замену _SESSION (так как она в php 4.1 ) на $HTTP_SESSION_VARS и нифига вообще не работает, там хоть один раз авторизация происходила а теперь вообще как я понял переменные незапоминаються
          на моем хостинг-сервере php 4.04
          Cerega-23 @ yandex . ru
          может кто еще подкинет идею в чем может быть проблема?

          Спустя 4 дня, 15 часов, 1 минута, 8 секунд (20.10.2009 - 23:09) savelikan написал(а):
          А я написал
          PHP
          session_start();
          $_SESSION['userpass'] = $_POST['password'];
          , а оно мне

          Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\test1.ru\www\index.php:3) in Z:\home\test1.ru\www\content\TDMU\15hr\prikol.php on line 4

          Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test1.ru\www\index.php:3) in Z:\home\test1.ru\www\content\TDMU\15hr\prikol.php on line 4


          Что бы ето могла быть?

          Спустя 1 день, 10 часов, 28 минут, 8 секунд (22.10.2009 - 09:37) WildeR написал(а):
          Цитата (savelikan @ 20.10.2009 - 20:09)
          А я написал
          PHP
          session_start();
          $_SESSION['userpass'] = $_POST['password'];
          , а оно мне

          Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at Z:\home\test1.ru\www\index.php:3) in Z:\home\test1.ru\www\content\TDMU\15hr\prikol.php on line 4

          Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\test1.ru\www\index.php:3) in Z:\home\test1.ru\www\content\TDMU\15hr\prikol.php on line 4


          Что бы ето могла быть?

          В варнингах явно показано где ошибка: выводится что то в браузер до session_start(), что быть не должно.

          Спустя 6 часов, 24 минуты, 1 секунда (22.10.2009 - 16:02) agentor написал(а):
          у меня похоже е было пока не добавил в фаил индкса,
          PHP
          ob_start("ob_gzhandler");
          в самом начале..
          Быстрый ответ:

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