2014-12-12 5 views
1

сеанс не хранится, если я не уничтожу его. Я пытаюсь создать регистрационную форму, каждый раз, когда я вхожу в систему, она не работает, если я не перейду в logout.php, у которого есть session_destroy(); то при входе в систему он работает отлично.сеанс не сохраняется, если я не уничтожу сеанс отсутствия существования?

код:

<?php 
    @session_start(); 
    require_once ('include/config.php'); 
    class users{ 
    public function login() { 
    session_start(); 
    if(!isset($_SESSION['id'])) { 
    $login_submit=$_POST ['submit']; 
    if (isset($login_submit)) { 

    $login_username=$_POST ['username']; 
    $login_password=$_POST ['password']; 
    $login_username = stripslashes($login_username); 
    login_password = stripslashes($login_password); 
    $login_username = mysql_real_escape_string($login_username); 
    $login_password = mysql_real_escape_string($login_password); 
    $site_info=mysql_query("SELECT * FROM site_settings"); 
    $site_settings=mysql_fetch_object($site_info); 
    $site_url=$site_settings->site_url; 

    $login=mysql_query("SELECT * FROM users where username='$login_username' AND  password='$login_password' "); 
    $rows=mysql_num_rows($login); 

    $admin_login=mysql_query("SELECT * FROM admin where admin_u='$login_username' AND admin_p='$login_password' "); 
    $admin_login_info=mysql_fetch_object($admin_login); 
    $admin_rows=mysql_num_rows($admin_login); 

    if($rows == 1) { 
    $linfo=mysql_fetch_object($login); 
    $_SESSION ['id']=$linfo->id; 
    $_SESSION ['username']=$login_username; 
    echo "<meta http-equiv='refresh' content='0,overview'>"; 
    } 

    elseif($admin_rows == 1) { 

    $_SESSION ['adminid']=$admin_login_info->id; 
    $_SESSION ['adminusername']=$admin_login_info->username; 
    echo "<meta http-equiv='refresh' content='0,admin/services.php'>"; 

    } 
    else { 
    echo "<p id='lger'> اسم المستخدم او كلمة السر غير صحيحة </p>"; 
    } 
    } 

    }else {echo "<meta http-equiv='refresh' content='0,overview'>";} 

    } 
    } 
    ?> 

код страницы содержат функции регистрации:

<?php 
    @session_start(); 
    require_once ('include/functions.php'); 
    if(!isset($_SESSION['id'])) { 
    print (" 
    <div id='login'> 
    <p id='loginp'>تسجيل الدخول </p><br><br> 
    <form action='index' method='post' id='form'> 
    <input type='text' name='username' placeholder='اسم المستخدم' class='linput'> </input><img src='images/login.png' class='limg'></img><br><br> 
    <input type='password' name='password' placeholder='كلمة السر' class='linput'></input><img src='images/lock.png' class='limg'></img><br><br> 
    <input type='submit' name='submit' value='دخول' class='lbutton'> </input> 
    </form> 
    <br> 
    <hr id='hrlogin'> 
    <div id='aga'><p id='new'>لاتمتلك حساب؟</p> 
    <a href='signup.php' id='nhref'>أنشئ حساب جديد</a></div> 
    </div> 
    "); 
    $users = new users(); 
    $users->login(); 
    } else { 
    echo "<meta http-equiv='refresh' content='0,overview'>"; 

    } 
    ?> 
+2

Пожалуйста, [не используйте 'mysql_ *' функции] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php), они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://us1.php.net/pdo) или [MySQLi] (http: // us1.php.net/mysqli). –

ответ

1

Вы всегда можете проверить для сеанса с чем-то вроде:

if(! isset($_SESSION)) session_start(); 

В дополнение к вышесказанное, если вы хотите узнать, проверяет, отключены ли сеансы по какой-либо причине, вы можете подавить t он выдает сообщение об ошибке, устанавливает переменную тестового сеанса, а затем проверяет, была ли она установлена. Если это не так, вы можете запрограммировать реакцию на сеансы с отключенным доступом. Вы захотите сделать все это в начале сценария или рядом с ним. Так как пример (работает по-разному в зависимости от настроек обработки ошибок):

$_SESSION['valid'] = 'valid'; 

if('valid' !== $_SESSION['valid']) 
{ 
    // handle disabled sessions 
} 

Кроме того, если вы там используете PHP 5.4+ прохладный маленький трюк под названием session_status()

if (PHP_SESSION_NONE === session_status()) session_start(); 

Надеется, что это помогает.

Смежные вопросы