Killing от глобальной переменной сеанса в качестве кнопки выхода из системы

голоса
3

Эй пользователи StackOverflow,

Так как я был в состоянии получить некоторую удивительную помощь, прежде чем с проблемой я застрял на дольше, чем я мог вспомнить, я думал, что приду на вас с этим.

Работа с системой авторизации , который проверяет подлинность пользователя и убивает сессию прочь , но в данный момент он не распознает переменные , назначенные на сессии. После нажатия на кнопку выхода из системы все , кажется, что это работает , но при выполнении прямого подключения к странице членов , введя его в адресной строке она загружает страницу вместо перенаправления на страницу входа в систему .

Members.php

<?PHP
session_start();
if (!isset($_SESSION['username'])) {
header('location:login.php');
}
?>

<!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=UTF-8 />
<title>The Animator BETA</title>
<style>
//CSS Has been removed as it's lengthy and unrelated to the issue.
</style>
<!--[if lt IE 9]>

        <script src=http://html5shim.googlecode.com/svn/trunk/html5.js></script>

    <![endif]-->        

    <script src=http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js></script>

<script>

          $(document).ready(function(){

                $('#login-trigger').click(function(){

                    $(this).next('#login-content').slideToggle();

                    $(this).toggleClass('active');                  



                    if ($(this).hasClass('active')) $(this).find('span').html('&#x25B2;')

                        else $(this).find('span').html('&#x25BC;')

                    })

          });

    </script>
</head>
<body>
<header class=cf>

<nav style=text-align:center><a href=logout.php>Logout</a></nav>

</header>

<h1 style=text-align:center> The Animator - BETA</h1>
<hr />
<div id=nav style=text-align:center>
<ul style=text-align:center>

<li><a href= # ><strong>Home</strong></a></li>
<strong><li><a href= industrial.html >Industrial</a></li>
<li><a href= educational.html >Education</a></li>
<li><a href= independent.html  >Independent</a></li>
<li><a href= emergent.html  >Emergent</a></li>
<li><a href= team.html >Team</a></li>
<li><a href= project.html  >Project</a></li>
<li><a href= budget.html >Budget</a></li>
<li><a href= profile.html >Profile</a></li></strong>

</ul>
</div>
<hr />
<div style=padding-left:19%><input type=text value=search />
<input type=button value=Search! name=search/>
</div>
<div>&nbsp;</div>
<div align=center>
<div><img src=logo.png width=407 height=345 alt=Logo usemap=sectors /></div>

</div>
</div>
<map name=sectors>
  <area shape=rect coords=72,40,194,165 alt=Industrial href=industrial.html>
  <area shape=rect coords=210,38,328,162 alt=Emergent href=emergent.html>
  <area shape=rect coords=208,178,331,296 alt=Independent href=independent.html>
    <area shape=rect coords=71,177,194,295 alt=Educational href=educational.html>

</map>
<div>&nbsp;</div>
<div style=text-align:right></div>
<div>&nbsp;</div>   
<div id=footer> <hr />
  <p><strong><u><a href=about.html>About The Animator</a> | <a href=contact.html>Contact</a> | <a href=privacy.html>Privacy Policy</a> | <a href=faq.html>FAQ</a></u></strong><u></u></p>
</div>
</body>
</html>

СТРАНИЦА АВТОРИЗАЦИИ

<?php

error_reporting(E_ALL);
ini_set('display_errors',On);

include ('database_connection.php');
if (isset($_POST['formsubmitted'])) {
    // Initialize a session:
session_start();
    $error = array();//this aaray will store all error messages


    if (empty($_POST['e-mail'])) {//if the email supplied is empty 
        $error[] = 'You forgot to enter  your Email ';
    } else {


        if (preg_match(/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/, $_POST['e-mail'])) {

            $Email = $_POST['e-mail'];
        } else {
             $error[] = 'Your Email Address is invalid  ';
        }


    }


    if (empty($_POST['Password'])) {
        $error[] = 'Please Enter Your Password ';
    } else {
        $Password = $_POST['Password'];
    }


       if (empty($error))//if the array is empty , it means no error found
    { 



        $query_check_credentials = SELECT * FROM account WHERE (email='$Email' AND passwords='$Password');



        $result_check_credentials = mysqli_query($dbc, $query_check_credentials);
        if(!$result_check_credentials){//If the QUery Failed 
            echo 'Query Failed ';
        }

        if (@mysqli_num_rows($result_check_credentials) == 1)//if Query is successfull 
        { // A match was made.





            $_SESSION = mysqli_fetch_array($result_check_credentials, MYSQLI_ASSOC);//Assign the result of this query to SESSION Global Variable

            $_SESSION['email'] = $Email; 

           session_start(username);

            header(Location: members.php);



        }else
        { 

            $msg_error= 'Either Your Account is inactive or Email address /Password is Incorrect';
        }

    }  else {



echo '<div class=errormsgbox> <ol>';
        foreach ($error as $key => $values) {

            echo '  <li>'.$values.'</li>';



        }
        echo '</ol></div>';

    }


    if(isset($msg_error)){

        echo '<div class=warning>'.$msg_error.' </div>';
    }
    /// var_dump($error);
    mysqli_close($dbc);

} // End of the main Submit conditional.



?><!DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
<html xmlns=http://www.w3.org/1999/xhtml>
<head>
<meta http-equiv=Content-Type content=text/html; charset=utf-8 />
<title>Login Form</title>





<style type=text/css>
body {
    font-family:Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif;
    font-size:12px;
}
.registration_form {
    margin:0 auto;
    width:500px;
    padding:14px;
}
label {
    width: 10em;
    float: left;
    margin-right: 0.5em;
    display: block
}
.submit {
    float:right;
}
fieldset {
    background:#EBF4FB none repeat scroll 0 0;
    border:2px solid #B7DDF2;
    width: 500px;
}
legend {
    color: #fff;
    background: #80D3E2;
    border: 1px solid #781351;
    padding: 2px 6px
}
.elements {
    padding:10px;
}
p {
    border-bottom:1px solid #B7DDF2;
    color:#666666;
    font-size:11px;
    margin-bottom:20px;
    padding-bottom:10px;
}
a{
    color:#0099FF;
font-weight:bold;
}

/* Box Style */


 .success, .warning, .errormsgbox, .validation {
    border: 1px solid;
    margin: 0 auto;
    padding:10px 5px 10px 60px;
    background-repeat: no-repeat;
    background-position: 10px center;
     font-weight:bold;
     width:450px;

}

.success {

    color: #4F8A10;
    background-color: #DFF2BF;
    background-image:url('images/success.png');
}
.warning {

    color: #9F6000;
    background-color: #FEEFB3;
    background-image: url('images/warning.png');
}
.errormsgbox {

    color: #D8000C;
    background-color: #FFBABA;
    background-image: url('images/error.png');

}
.validation {

    color: #D63301;
    background-color: #FFCCBA;
    background-image: url('images/error.png');
}



</style>

</head>
<body>


<form action=login.php method=post class=registration_form>
  <fieldset>
    <legend>Login Form  </legend>

    <p>Enter Your username and Password Below  </p>

    <div class=elements>
      <label for=name>Email :</label>
      <input type=text id=e-mail name=e-mail size=25 />
    </div>

    <div class=elements>
      <label for=Password>Password:</label>
      <input type=password id=Password name=Password size=25 />
    </div>
    <div class=submit>
     <input type=hidden name=formsubmitted value=TRUE />
      <input type=submit value=Login />
    </div>
  </fieldset>
</form>
<button onclick=window.location='theanimator.html';>Go Back!</button>
</body>
</html>

ВЫЙТИ

<?php
unset($_SESSION['email']);
header('Location: login.php');
exit;
?>
Задан 08/06/2013 в 12:38
пользователем
На других языках...                            


1 ответов

голоса
3

Ваша страница выхода из системы должен быть таким:

<?php

//start the session
session_start();
//this will destroy the session that is started
session_destroy();
header('Location: login.php');
exit;
?>

Проблема заключалась в том , что вы не уничтожить , sessionпоэтому сеанс существует , когда вы вернетесь к странице.

Кроме того, вы где , глядя на проверку , $_SESSION['username']но вы сбросить , $_SESSION['email']что никогда не будет работать.

Ответил 08/06/2013 в 12:42
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more