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] [EMAIL PROTECTED]

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, '[EMAIL PROTECTED]'); //
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

Reply via email to