#29419 [Fbk->NoF]: session_destroy() returns "session object destruction failed"
| From: | php-bugs at lists dot php dot net | Date: | Sun, 16 Jan 2005 00:00:07 +0000 |
| Subject: | #29419 [Fbk->NoF]: session_destroy() returns "session object destruction failed" | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-72224@lists.php.net to get a copy of this message | ||
ID: 29419
Updated by: php-bugs@lists.php.net
Reported By: roberto_stivanello at libero dot it
-Status: Feedback
+Status: No Feedback
Bug Type: Session related
Operating System: *
PHP Version: 4.3.9
New Comment:
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
Previous Comments:
------------------------------------------------------------------------
[2005-01-08 13:55:23] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php4-STABLE-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php4-win32-STABLE-latest.zip
------------------------------------------------------------------------
[2004-12-20 22:27:21] roberto_stivanello at libero dot it
Member details prevoiusly missing:
===========authentication.php
<?php # Script 12.13 - authentication.php
// This page handles the authentication for the admin pages.
// require_once ('mysql_connect_auth.php'); // Connect to the database.
Suppressed as from PHP Bugs request
function getAdminUser()
{
return 'adminuserid';
} // end function
function getAdminPsw()
{
return 'adminpassword';
} // end function
function checkAdminIdPsw($iadmin,$ipsw)
{
if ( ($iadmin == (getAdminUser()) ) AND ($ipsw == (getAdminPsw()) )
) { // If the correct values were entered...
return 0;
} else {
return 1;
}
} // end function
?>
<?php # Script 12.10 - authentication.inc
// Session handling added for administrator too as HTTP authentication
allowed only with php4 on Apache
// Start output byffering and initialize a session
ob_start();
session_start();
?>
<?php # Script 12.11 - authentication.inc
$authorized = FALSE; // Initialize a variable.
// Check for authentication submission.
// Begin authentication code - server independent
if ( (isset($_SESSION['usera'])) ) {
if ( getAdminUser() == $_SESSION['usera'] ) {
$authorized = TRUE;
}
}
// If they haven't been authorized, create the pop-up window.
if ((!$authorized) AND (!$fromlogin)) {
// show Admininistrator login page
ob_end_clean(); // Delete the buffer
header("Location: http://" .
$_SERVER['HTTP_HOST'] .
"/administratordirectory/index.php");
exit();
}
?>
=========================index.php=================
<?php # Script 12.01 - index.php (site administration)
// Initial page for Administrator
// Include config file for error handling
require_once ('../includes/config.inc');
//requires authentication
$fromlogin = TRUE;
require_once ('../authentication.php');
$reldir ='/'; // posizione relativa rispetto a
pagina attuale: '/' o '../'
// Includi testata
$bodyid = 'bodyadmin';
$idprimarymenu = 'menu';
$titolo_pagina_h2 = 'Home';
// Administrator header
include_once ('../includes/admin_header.inc');
// Corpo della pagina
?>
<!-- href deliberatamente anonimo -->
<H2 id=essentials><A href="/" rel=bookmark>Login
Amministratore</A></H2>
<?php
echo "<h3>Sessione = " . session_id() . "</h3>";
if (isset($_POST['submit'])) { // Check if the form has been
submitted.
// Create e function for escaping the data
/* function escape_data ($data) {
global $dbc; // Need the connection
if (ini_get('magic_quotes_gpc')) {
$data = stripslashes($data);
}
return mysql_real_escape_string
($data, $dbc);
} // End of function.
*/
if (empty($_POST['username'])) { // Validate the username.
$u = FALSE;
echo '<p><font color="red" size="+1">Administrator name
missing!</font></p>';
} else {
$u = escape_data($_POST['username']);
}
if (empty($_POST['password'])) { // Validate the password.
$p = FALSE;
echo '<p><font color="red" size="+1">Administrator password
missing!</font></p>';
} else {
$p = escape_data($_POST['password']);
}
if ($u && $p) { // If everything's OK.
$rc = checkAdminIdPsw($_POST['username'],$_POST['password']);
if ( 0 == $rc ) { // If the correct values were entered...
// Start the session, register the values & redirect.
$_SESSION['usera'] = $_POST['username'];
// $_SESSION['pswa'] = $_POST['password'];
echo '<p><font color="green"
size="+1">You are
logged in as administrator.</font></p>';
} else { // No match was made.
echo '<p><font color="red" size="+1">Wrong user and
password.</font></p>';
}
} else { // If everything wasn't OK.
echo '<p><font color="red" size="+1">Please try
again!</font></p>';
}
} // End of SUBMIT conditional.
?>
<!-- <h1>Login</h1> -->
<p>Il tuo browser deve consentire i cookies per il "login".</p>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post">
<fieldset>
<p><b>Nome Utente:</b> <input type="text" name="username"
size="10"
maxlength="20" value="<?php if (isset($_POST['username'])) echo
$_POST['username']; ?>" /></p>
<p><b>Password:</b> <input type="password" name="password"
size="20"
maxlength="20" /></p>
<div align="center"><input type="submit" name="submit"
value="Login"
/></div>
</form><!-- End of Form -->
</DIV>
<?php //include pie' di pagina
require_once ('../includes/admin_footer.inc');
?>
====================admin_footer.inc=================
<DIV id=footer>
</DIV></DIV></BODY></HTML>
<?php # Script fine sessione
// Aggiunto gestione sessione anche per ADMIN in quanto autenticazione
HTTP permessa solo con PHP4 su Apache
ob_end_flush();
?>
======================admin_header.inc =================
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD><TITLE>Il Portico</TITLE>
<META http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
<META http-equiv=Content-Language content=en-us>
<META content=all name=robots>
<META http-equiv=imagetoolbar content=false>
<META content="Roberto Stivanello." name=author>
<META content="Copyright (c) 2004-2005 Roberto Stivanello"
name=Copyright>
<META
content="Il Portico Onlus: specializzata in pietre scartate dai
costruttori che divengono testate d'angolo."
name=description>
<META
content="onlus, umanitari, diversabili, emarginazione, handicap,
associazioni"
name=keywords>
</HEAD>
<BODY id=mybody >
<DIV id=headwrap>
<H1 id=nufront>Il Portico (onlus)</H1></DIV>
<UL id=menu>
<LI id=chisiamomenu><A title="Ci presentiamo"
href="/chisiamo/">chi
siamo</A></LI>
</UL>
<DIV id=wrapper>
<DIV id=bravefourhundred>
===================config.inc====================
<?php # Script 12.3 - config.inc
// This script sets the error reporting and logging for the site.
//error_reporting (0); // Production level
error_reporting (E_ALL); // Development level
// Use my own error handling function.
function my_error_handler ($e_number, $e_message) {
$message = 'Error in: ' . __FILE__ . ' line # ' . __LINE__ . ":
$e_message";
//error_log ($message, 1, 'ilporticoonlusadmin@libero.it'); //
Production (send email)
echo '<font color="red" size="+1">', $message,
'</font>'; //
Development (print the error in red)
}
set_error_handler('my_error_handler');
?>
------------------------------------------------------------------------
[2004-07-28 06:42:45] roberto_stivanello at libero dot it
Description:
------------
Same problem as previous notified bugs, currently marked "closed".
Errore arise in production (webserver is ISP owned).
No problem during test on "localhost" on my machine: software works
properly under ISS/WinXP.
Therefore I guess I cannot try last CVS solution: if you think it is
available, tell me, and I'll endorse your advice to my ISP.
Do you think I should have appended this report to any of the previous
ones instead of opening a new one? To which one, in your opinion? (If
so, pardon me).
Thanks.
Reproduce code:
---------------
<?php # Script 12.13 - logoutadm.php
require_once ('../includes/config.inc'); // Include the
configuration file for error management and such.
require_once ('../authentication.php'); // connects to mysql +
defines functions + ob_start() + session_start()
include_once ('../includes/admin_header.inc'); // administrator page
header
?>
<H2 id=essentials><A href="/" rel=bookmark>Logout</A></H2>
<?php
if (!isset($_SESSION['usera'])) {
ob_end_clean(); // Delete the buffer.
header ("Location: http://" .
$_SERVER['HTTP_HOST'] . "xxxxx.php");
exit(); // Quit the script.
} else { // Logout the user.
echo "<h3>Session = " . session_id() . "</h3>"; // for test
purpose
$_SESSION = array(); // Destroy the variables.
session_destroy(); // Destroy the session itself.
setcookie (session_name(), '', time()-300, '/', '', 0); //
Destroy the cookie.
}
echo "<h3>Logout successful! </h3>"; // Print a customized message.
?>
<?php // Include the HTML footer.
include ('../includes/admin_footer.inc');
?>
Expected result:
----------------
As in test: user logged out, with no error displayed.
Actual result:
--------------
"session object destruction failed" error returned and displayed by
error handler routine.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=29419&edit=1