Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.07.2011, 22:36   #1
Русtam
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 60
По умолчанию Опять ерунда с авторизацией!!!

Уважаемые программисты, извиняюсь за то что создал новую тему из-за такой ерунды. Но уже какой день сижу над этой ерундой казалось бы очень легкой, но толи я что то пропустил когда изучал cookie и Сессии, либо мне именно эта тема тяжело дается . Ранее на этом форуме мне давали советы и я вроде бы все сделал так как надо (но код не работает так как надо )

Укажите пожалуйста ошибки и как их исправить или хотя б намек сделайте что б я сам допер (наконец уже )



Этот код (АВТОРИЗАЦИИ) принимает POST данные со страницы авторизации и авторизованных пользователей отправляет на страницу "A"
а не авторизованных на страницу авторизации.
У меня такое ощущение будто бы он не сохраняет ни сессию ни куки.
PHP код:
function login($username,$remember)
{
    if(
$username == '')
        
header("Location: forma.php");
    else
        
$_SESSION['username'] = $username;
        
header("Location: glavnaia.php");
        
    if(
$remember 0)             
        
setcookie('username'$username,time()+3600);

}

session_start();
///точка входа 
if(isset($_COOKIE))
    {
    
header("Location: glavnaia.php");
    }
elseif(isset(
$_POST['username']) && isset($_POST['remember']))
    {
    
login($_POST['username'],$_POST['remember']);
    }
else
    {
    
header("Location: forma.php");
    } 
Следующий код стоит на страницы "А"
и по моей задумки он не должен пускать пользователей которые не авторизовались а ему пофиг он пускает всех и вся
PHP код:
session_start();
function 
PRAVDA($A)
{
    if (!isset(
$_SESSION['username']) && isset($_COOKIE['username']))
        {
        
$_SESSION['username'] = $_COOKIE['username'];
        
$username $_SESSION['username'];
        return 
true;
        }
    elseif(isset(
$_SESSION['username']) && isset($_COOKIE['username']))    
        {
        return 
true;
        }
    else
        {
        
header("Location: forma.php");
        exit();
        }

Русtam вне форума Ответить с цитированием
Старый 30.07.2011, 22:53   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Код:
function login($username,$remember)
{
    if($username == '')
        header("Location: forma.php");
    else
        $_SESSION['username'] = $username;
        header("Location: glavnaia.php");
        
    if($remember > 0)             
        setcookie('username', $username,time()+3600);

}
Здесь у вас никогда не доходит до установки куки - вас всегда будет переадресовывать хидером на другую страницу раньше времени
Cronos20 вне форума Ответить с цитированием
Старый 30.07.2011, 22:53   #3
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

Думаю так будет правильней (исправленные функции):
Код:
function login($username,$remember)
{
    if($username == '')
        header("Location: forma.php");
    else
    {
        $_SESSION['username'] = $username;

        if($remember > 0)             
            setcookie('username', $username,time()+3600);
        else
            setcookie('username', $username);

        header("Location: glavnaia.php");
    }    
}

function PRAVDA($A)
{
    if (isset($_SESSION['username']) || isset($_COOKIE['username']))
        {
        return true;
        }
    else
        {
        header("Location: forma.php");
        exit();
        }
}
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/

Последний раз редактировалось VadikV; 30.07.2011 в 22:57.
VadikV вне форума Ответить с цитированием
Старый 30.07.2011, 23:36   #4
Русtam
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 60
По умолчанию

Спасибо !!! попробую сделать так
Русtam вне форума Ответить с цитированием
Старый 31.07.2011, 22:38   #5
Русtam
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 60
По умолчанию

То что вы посоветовали не работает , точнее работает но не так как надо, страница "A" она все равно пускает не авторизованных пользователей !!! в браузре смотрю файлы куки там есть PHPSESID но это я думаю не то что должно быть , (и еще на странице на "A" есть калькулятор, когда я произвожу вычисления на нем и он выдает ответ, после чего я совершаю переход на другую страницу, а затем обратно на калькулятор, результат вычисление пропадает - по моему это значит что сессия не сохраняется )
Русtam вне форума Ответить с цитированием
Старый 31.07.2011, 23:20   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Русtam Посмотреть сообщение
То что вы посоветовали не работает , точнее работает но не так как надо, страница "A" она все равно пускает не авторизованных пользователей !!! в браузре смотрю файлы куки там есть PHPSESID но это я думаю не то что должно быть , (и еще на странице на "A" есть калькулятор, когда я произвожу вычисления на нем и он выдает ответ, после чего я совершаю переход на другую страницу, а затем обратно на калькулятор, результат вычисление пропадает - по моему это значит что сессия не сохраняется )
Без приведения полного кода страниц - всё это никому ни о чем не говорит.

И давайте без этой вашей "страницы А" - почему бы не называть страницы так, как они реально называются в вашем приложении..?
Andkorol вне форума Ответить с цитированием
Старый 01.08.2011, 00:48   #7
Русtam
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 60
По умолчанию

Я начинающий и вот мое домашнее задание :

Создайте главную страницу сайта index.php, которая будет неавторизованных
пользователей отправлять на страницу авторизации, а авторизованных на
страницу, "А" . Для пользователя
главной страницы не будет видно, она нужна только для перенаправления.

Вот код страницы index.php исправленный с учетом советов программистов, не исправленный вариант вы можете посмотреть выше .
Код:
function login($username,$remember)
{
	if($username == '')
		{
		header("Location: forma.php");
		}
	else
		{
		$_SESSION['username'] = $username;
		header("Location: glavnaia.php");
		
			if($remember > 0)
				{
				setcookie('username', $username,time()+3600);
				}
			else
				{
				setcookie('username', $username);
				header("Location: glavnaia.php");
				}
		}
}
///точка входа 
session_start();
if(isset($_COOKIE))
	{
	header("Location: glavnaia.php");
	}
elseif(isset($_POST['username']) && isset($_POST['remember']))
	{
	login($_POST['username'],$_POST['remember']);
	}
else
	{
	header("Location: forma.php");
	}

А это код так называемой страницы "А" она же glavnaia.php
Код:
session_start();
function PRAVDA($A)
{
	if (isset($_SESSION['username']) || isset($_COOKIE['username']))
		{
		return true;
		}
	else
		{
		header("Location: forma.php");
		exit();
		}
}
я думаю вы поймете что они должны делать
Русtam вне форума Ответить с цитированием
Старый 01.08.2011, 00:53   #8
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Русtam Посмотреть сообщение
А это код так называемой страницы "А" она же glavnaia.php
Код:
session_start();
function PRAVDA($A)
{
	if (isset($_SESSION['username']) || isset($_COOKIE['username']))
		{
		return true;
		}
	else
		{
		header("Location: forma.php");
		exit();
		}
}
Ну так а где на этой странице вызов функции PRAVDA()..???

Описать вы её описали, но чтоб она работала - её ж надо вызвать...

PS: и вам уже говорили насчет вашего кода после header() в вашей функции login()...

Последний раз редактировалось Andkorol; 01.08.2011 в 00:58. Причина: PS
Andkorol вне форума Ответить с цитированием
Старый 01.08.2011, 01:06   #9
Русtam
Пользователь
 
Регистрация: 27.06.2011
Сообщений: 60
По умолчанию

ХМ опять глупая ошибка . вы говорить о том что header() перекинет пользователя раньше времени ? если да то 1) я не понимаю почему так получится 2)я не знаю чем заменить этот фрагмент и ранее я видел коды с такими фрагментами все работало (хотя не знаю может это я чего то не понимаю )
Русtam вне форума Ответить с цитированием
Старый 01.08.2011, 01:19   #10
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Русtam Посмотреть сообщение
ХМ опять глупая ошибка . вы говорить о том что header() перекинет пользователя раньше времени ? если да то 1) я не понимаю почему так получится 2)я не знаю чем заменить этот фрагмент и ранее я видел коды с такими фрагментами все работало (хотя не знаю может это я чего то не понимаю )
1) читаем про header() - Location при вызове выполняет перенаправление по указанному адресу (код программы выполняется последовательно, сверху вниз).

2) смотрим выше сообщение от VadikV.
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
опять я опять мемо nyasha2013 Помощь студентам 2 19.05.2011 21:09
проблема с авторизацией sergei2009 PHP 1 19.04.2010 17:47
Virtual Box и непонятная ерунда. jojahti Операционные системы общие вопросы 1 09.10.2009 00:06
И опять мэйлы.. Опять... Pusher PHP 6 28.06.2008 03:08