Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сессия =)
 
 автор: ADmexture   (08.11.2010 в 16:59)   письмо автору
 
 

Здравствуйте друзья!
Возник вопрос с нормальным выходом их сессии.

Файл главной страницы:

<?php 

session_start
(); 

if(isset(
$_POST['userid']) && isset($_POST['password']))
{
    
$userid $_POST['userid'];
    
$password $_POST['password'];
    
    
$db_conn = new mysqli('localhost''root''1''netshop');
    
    if(
mysqli_connect_errno())
    {
        echo 
'К сожеление не возможно подключиться к базе данных' .mysqli_connect_error();
        exit();
    }
    
    
$query_admin "select * from adminrules where login='".$userid."' and password=MD5('".$password."')";
    
$query_users "select * from userrules where login='".$userid."' and password=MD5('".$password."')";
    
    
$result_admin $db_conn->query($query_admin);
    
$result_users $db_conn->query($query_users);
    
}


    if(
$result_admin->num_rows 0)
    {
        
$_SESSION['valid_user']='admin';
        
    }
    
    if(
$result_users->num_rows 0)
    {
        
$_SESSION['valid_user']='user';
        
    }
    
    if(
$_SESSION['valid_user']='admin')
    {
        include(
"admin/index.php");
    }
    
    if(
$_SESSION['valid_user']='user')
    {
        include(
"users/index.php");
    }

?>


Там соответственно ест форма на этой же главной странице, которая передает userid и password.

Код файлы инклудит нормально.
Допустим содержание файла "admin/index.php" такое:

<body>
<h1>Я Админ!</h1><br />
<a href=logout.php>Выход</a>

</body>


файл выхода logout.php:

<?php
session_start
();

$old_user $_SESSION['valid_user'];

print (
$_SESSION['valid_user']);

unset(
$_SESSION['valid_user']);
session_unregister('valid_user');

if (!empty(
$old_user))
{
    echo 
'Успешный выход';
}
else
{
    echo 
'Вы не входили, так что не откуда выходить';
}

?>


<br />
<a href="index.php">На главную</a>


И вот тут сама суть вопроса. После нажатия на ссылку "На главную", на главной странице остается сессия с определенным userid, а хотелось бы что она прерывалась, для того что бы заново можно было ввести данны userid и password. как это можно реализовать? =) если ест замечания по коду, было бы очень здорово! =) первый раз работаю с сессией! :D

  Ответить  
 
 автор: Trianon   (08.11.2010 в 17:19)   письмо автору
 
   для: ADmexture   (08.11.2010 в 16:59)
 

магическими кавычками спасаетесь? Ну-ну...

  Ответить  
 
 автор: Rolex   (08.11.2010 в 17:31)   письмо автору
 
   для: ADmexture   (08.11.2010 в 16:59)
 

Здравствуйте! )))

<?php  

session_start
();  

if(isset(
$_POST['userid']) && isset($_POST['password'])) 

    
$userid $_POST['userid']; 
    
$password $_POST['password']; 
    
    if(!
get_magic_quotes_gpc(){
            
$userid mysql_real_escape_string($userid);
            
$password mysql_real_escape_string($password);
    }
     
    
$db_conn = new mysqli('localhost''root''1''netshop'); 
     
    if(
mysqli_connect_errno()) 
    { 
        echo 
'К сожеление не возможно подключиться к базе данных' .mysqli_connect_error(); 
        exit(); 
    } 
     
    
$query_admin "select * from adminrules where login='".$userid."' and password=MD5('".$password."')"
    
$query_users "select * from userrules where login='".$userid."' and password=MD5('".$password."')"
     
    
$result_admin $db_conn->query($query_admin); 
    
$result_users $db_conn->query($query_users); 
     



    if(
$result_admin->num_rows 0
    { 
        
$_SESSION['valid_user']='admin'
         
    } 
     
    if(
$result_users->num_rows 0
    { 
        
$_SESSION['valid_user']='user'
         
    } 
     
    if(
$_SESSION['valid_user']='admin'
    { 
        include(
"admin/index.php"); 
    } 
     
    if(
$_SESSION['valid_user']='user'
    { 
        include(
"users/index.php"); 
    } 

?>


Так следует исправить код главного скрипта.

  Ответить  
 
 автор: ADmexture   (08.11.2010 в 20:00)   письмо автору
 
   для: Rolex   (08.11.2010 в 17:31)
 

UP! =) ребят помогите разобраться с сессией пожалуйста!!! =) за кавычки спс =) забыл =)

  Ответить  
 
 автор: Rolex   (08.11.2010 в 21:09)   письмо автору
 
   для: ADmexture   (08.11.2010 в 20:00)
 

1) В сессии хранятся ещё какие-нибудь данные, необходимые для корректной работы скрипта?
Если нет - тогда попросту удалите её. А на главной стартует новая ))))

  Ответить  
 
 автор: ADmexture   (09.11.2010 в 07:38)   письмо автору
 
   для: Rolex   (08.11.2010 в 21:09)
 

на данный момент не хранятся. А почему переменная отстается зарегистрированной?

  Ответить  
 
 автор: ADmexture   (09.11.2010 в 11:06)   письмо автору
 
   для: ADmexture   (09.11.2010 в 07:38)
 

Скорее всего сессия удаляется на стороно сервера при session_destroy, потому что на тсранице logout при повторном ее обновлении оператор if показывает, что сессия была удалена и переменная больше не регистрируется. А вот при переходе на главную страницу опять все как по маслу, сессия сохранилась, но уже скорее всего на стороне клинета. Как решить такую задачку? Кто нибудь знает?

  Ответить  
 
 автор: Rolex   (10.11.2010 в 15:44)   письмо автору
 
   для: ADmexture   (09.11.2010 в 11:06)
 

На [url]php.su[/url] в разделе работа с сессиями, помнится, имеется описание функций для удаления переменных. Навскидку содержание статьи я не помню.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования