[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сессия (моя проблема авторизации)
REDPUMAN
Привожу код 3-х файлов:

страница - index.php
Код
<?
if(!isset($_session['autor'])) {
print '<div id="lp01"> </div>';
print '<div id="lp02"> АВТОРИЗАЦИЯ >> </div>';
print '<div id="lp03">';
print '<form method="post" action="action/autor.php">';
print '<pre> ЛОГИН: <input type="text" size=15 name="a_login"> </pre>';
print '<pre> ПАРОЛЬ: <input type="password" size=15 name="a_password"> </pre> <br>';
print '<center> <input type="image" src="images/btn01.gif"> </center>';
print '</form>';
print '</div>'; }
else {
print '<div id="lp01"> </div>';
print '<div id="lp02"> <a href="user_cab.php"> Вход </a> </div>'; }
?>


скрипт - autor.php (в папке action)
Код
...
$_session['autor']='1';
$_session['alogin']=$_POST['a_login'];
header('Location: ../user_cab.php');
?>


страница - user_cab.php
Код
<?
if(isset($_session['alogin']))
print $_session['alogin'];
?>


При заполнении формы на index.php данные передаются в скрипт autor.php, где они подвергаются проверки на подлиность и при положительном результате должны сохраняться в $_session и переходить на страницу данного юзера, где выводится сообщение типа "привет "+логин_юзера, а при переходе на главную (index.php) форма уже не должна отображаться. Вобщем в этом и вся проблема: &_session не сохраняет переменные. Проверял var_dump($_session) - на autor.php выдает правильно содержимое, а на index.php и user_cab.php - array(0).

В начале каждой страницы:
Код
<?
session_start();
ini_set('display_errors',1);
error_reporting(E_ALL);
?>


На всякий случай php.ini:
Код

[Session]
session.save_handler = files
session.save_path = "e:/www/php5/tmp"
session.use_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 4
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=,fieldset="


Большая просьба не посылать в "поиск", искал, везде, уже голова болит.
Заранее благодарен!




Спустя 2 минуты, 24 секунды (7.04.2008 - 21:31) NRG написал(а):
попробуйте не $_session а $_SESSION .....

результат отпишите сюда....

Спустя 15 минут, 29 секунд (7.04.2008 - 21:47) REDPUMAN написал(а):
Цитата(NRG @ 8.4.2008, 0:31) [snapback]36585[/snapback]
попробуйте не $_session а $_SESSION .....

результат отпишите сюда....


Все получилось!
Спасибо огромное! Даже малость стыдно blush.gif, вроде как бы пустяк. Нигде не встречал указания на регистр написания!
Еще раз спасибо!

Спустя 8 месяцев, 9 дней, 11 часов, 37 минут, 16 секунд (17.12.2008 - 10:24) novice написал(а):
Такая же проблема, при авторизации, выводит сообщение "Вы вошли под ником: ВасяПупкин", но когда переходишь на другую страницу и возвращаешься обратно, скрипт выдаёт просто "Вы вошли под ником:"
Где ошибка, проверьте пожалуиста.
PHP
<?php
session_start
();
include_once(
"../connect.php");
if(isset(
$_POST['submit']))
    {
            
$login $_POST['login']; 
            
$password $_POST['password']; 
            
            
$query "SELECT id, login, password
                    FROM users
                    WHERE login ='{$login}' AND password='{$password}'
                    LIMIT 1"
;
            
$sql mysql_query($query) or die(mysql_error()); 
            if (
mysql_num_rows($sql) == 1)
                echo 
'Авторизация прошла успешно';
            else 
                   echo 
'Неправильное имя или пароль';
{
$valid_user $login;
session_register("valid_user") ;
}
}
if (
session_is_registered("valid_user"))
{
echo 
"Вы вошли под ником: $valid_user <br>" ;
echo 
"<a href=\"logout.php\">Выход</a><br>";
}
else
{
if (isset(
$login))
{
// если пользователь пытался зарегистрироваться,
// но возникла ошибка
echo "Не вошли";
}
else
{
// если пользователь либо не пытался зарегистрироваться,
// либо покинул сайт
echo "Не зарегистрированы.<br>";
}
}

Спустя 10 минут, 30 секунд (17.12.2008 - 10:34) kirik написал(а):
novice, почему должно показываться что-то, если массив $_POST пустой?

Спустя 17 минут, 17 секунд (17.12.2008 - 10:52) novice написал(а):
Как тогда правильно сделать?

Спустя 7 минут, 34 секунды (17.12.2008 - 10:59) kirik написал(а):
PHP
$_SESSION['login'] = $login// вставить там, где "echo 'Авторизация прошла успешно';"
echo "Вы вошли под ником: {$_SESSION['login']} <br>" ; // заменить

Спустя 43 минуты, 2 секунды (17.12.2008 - 11:42) novice написал(а):
Круто, получилось, спасибо!
Кнопку выхода я сделал такую
session_start();
session_unregister("valid_user");
session_destroy();
Выходит всё гуд.
Поиду теперь дальше пробовать.

Спустя 1 день, 19 часов, 44 минуты, 29 секунд (19.12.2008 - 07:27) novice написал(а):
И в продолжении этой же авторизации и сессии.
Сделал таблицу в файле Index.php проинклудил справа блок авторизации
PHP
<?
session_start();
error_reporting(E_ALL);
?>
<table>
<tr>
<td height="100%" width="90%" rowspan="2" colspan="2"> <center>1 колонка</center> </td>
</tr>
<td height="100%" width="10%"> <center>
<?
require_once("tpl/block/block_auth.php"); 
?>
</center> 
</td>
<tr>
<td height="100%" width="45%" > <center>2-ая колонка</center> </td>
<td height="100%" width="45%" > <center>3-я колонка</center> </td>
<td height="100%" width="10%" > <center>4-ая колонка</center> <


Когда ввожу зарегистрированный ник или пароль, то отображает на этой же странице
Добро пожаловать: Вася
Выход

Когда не вводишь данные а просто нажимаешь вход, то выдаёт ошибку
Notice: Undefined index: login in /var/home/bind_home/tora/web/mod/NEW_TEST/reg/tpl/block/block_auth.php on line 7
Добро пожаловать:
Выход

Хотя по идее должен был отобразить обратно форму входа имени и пароля.

PHP
<table>
    <
tr>
    <
td>
<?
if (
session_is_registered("valid_user"))
{
echo 
"Добро пожаловать: {$_SESSION['login']}<br>" ;
echo 
"<a href=\"auth/auth/logout.php\">     </a><br>";
}
else
{
?>
        <form action="auth/auth/avt.php" method="POST">
            <tr>
                <td>   </td>
                <td><input type="text" name="login"></td>
            </tr>
            <tr>
                <td>      </td>
                <td><input type="password" name="password"></td>
            </tr>
            <tr>
                <td colspan="2"> <input type="submit" value="OK" name="submit"></td>
            </tr>
        </form>
<?
}
?>
    </tr>
    </td>

Спустя 1 час, 48 минут, 48 секунд (19.12.2008 - 09:15) kirik написал(а):
мм.. почему должно?
скрипт работает правильно, потому как сессия с именем valid_user была зарегистрирована, пусть даже она пустая, но она есть.
поставь проверку на существование имени пользователя в сессии (тоесть если юзер залогинился, то в сессии будет его ник, в обратном случае - нет)

PHP
session_is_registered("valid_user")
// заменить на 
isset($_SESSION['login']) &amp;&amp; !empty($_SESSION['login'])

ЗЫ. &amp; в коде замени на &

Спустя 1 час, 10 минут, 41 секунда (19.12.2008 - 10:26) netruxa написал(а):
Тему не осилил, слишкам многа букав, но увидел часть кода и решил отписаться:
PHP
$login $_POST['login']; 
            
$password $_POST['password']; 
            
            
$query "SELECT id, login, password
                    FROM users
                    WHERE login ='{$login}' AND password='{$password}'
                    LIMIT 1"
;

не совсем безопасный код. юзайте поиск "sql injection"

Спустя 47 минут, 49 секунд (19.12.2008 - 11:14) novice написал(а):
To kirik: Да, помогло, спасибо : )
To netruxa: я пока учусь, делаю, как легче, поэтому пока пробую так делать, со временем уже можно и занятся безопасностью, сеичас пока пробую простой сайт сделать.


_____________
Быстрый ответ:

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