Ciao massimux,
quello che segue è il codice modificato dal tutorial di Davide Coppola su:
http://www.siforge.org/articles/2003/11/10-guida_sessioni_php.html
Il problema è che essendo questo script "incluso" nel file index.php, quando viene chiamato c'è sicuramente qualche output di qualche header "appeso" da qualche parte che aspetta di uscire.
Il sito (per vedere l'output html) è questo:
http://picoflat.altervista.org
Al momento ho bypassato il problema con l'istruzione ob_start() in testa al file index.php ma questo mi impedisce di fare tante altre cose, per questo non vorrei usare le sessioni.
Grazie,
greybear
<?php
/************************************************************************/
/* PicoFlat - Flat Text Based Content Management System */
/* ==================================================== */
/* */
/* Copyright (c) 2007 by Domenico Mancini */
/* Mailto:
[email protected] */
/* http://www.beamitaly.tk */
/* */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License. */
/* Basato su uno script di Davide Coppola.
/************************************************************************/
$dir = getcwd();
$leng = strlen("$dir");
$start = $leng - 4 ;
$rdir = substr($dir,$start,$leng);
if ($rdir == "misc") { chdir ("../"); }
include ("autoconf.php");
include ("general_func.php");
$redirect = $local_url;
// ****************************************************************************************
// * dati per il login
// ****************************************************************************************
if (!$apri = fopen("misc/parole.php","r")){
echo "login: Non posso aprire il file $apri";
} else {
if(!feof($apri)){
$riga1 = fgets($apri,255);
$login_user = rtrim(fgets($apri));
$pass_user = rtrim(fgets($apri));
}
fclose($apri);
}
// ****************************************************************************************
// * gestione della sessione nel caso in cui i cookie sono disabilitati
// ****************************************************************************************
if(IsSet($_POST['PHPSESSID']) && !IsSet($_COOKIE['PHPSESSID']))
{
$PHPSESSID=$_POST['PHPSESSID'];
header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login
}
session_start(); //si inizia o continua la sessione
// ****************************************************************************************
// * controllo user e passwd da login e se ci sono setto la sessione
// ****************************************************************************************
if(IsSet($_POST['posted_username']) && IsSet($_POST['posted_password']))
{
// ripulisco username e password
$temp_user = $_POST['posted_username'];
$tmp = (eregi_replace("[\\\|\(\)\"\+£$%&()=?^;:,@#^èéàùìòç°§]","",$temp_user));
$sani_user = $tmp;
$temp_pass = $_POST['posted_password'];
$tmp = (eregi_replace("[\\\|\(\)\"\+£$%&()=?^;:,@#^èéàùìòç°§]","",$temp_pass));
$sani_pass = $tmp;
$valore = logger($temp_user, $email);
if($login_user==md5($sani_user) && $pass_user==md5($sani_pass))
$_SESSION['user']=$sani_user; // ok passo e imposto $_SESSION
}
// ****************************************************************************************
// * creazione cookie per login automatico
// ****************************************************************************************
if(IsSet($_POST['ricorda']) && IsSet($_SESSION['user'])) // solo se check ricorda!!
{
//$cok=md5($login_user)."%%".$pass_user;
$cok=$login_user."%%".$pass_user;
setcookie("sav_user",$cok,time()+31536000);
}
// ****************************************************************************************
// * logout
// ****************************************************************************************
if(isset($_GET['logout']) && $_GET['logout']==1) // solo se ho cliccato logout!!!
{
$_SESSION=array(); // Desetta tutte le variabili di sessione.
session_destroy(); // DISTRUGGE la sessione.
if(IsSet($_COOKIE['sav_user'])) // se presente si distrugge il cookie di login automatico
setcookie("sav_user",$cok,time()-31536000);
header("Location: $redirect?pagina=news_publisher.php"); //si ricarica la pagina di login
exit; //si termina lo script in modo da ritornare alla schermata di login
}
// ****************************************************************************************
// * controllo user e passwd da cookie
// ****************************************************************************************
if(IsSet($_COOKIE['sav_user'])) // solo se uso i cookie!!!
{
$info_cok=$_COOKIE['sav_user'];
$cok_user=strtok($info_cok,"%%");
$cok_pass=strtok("%%");
setcookie("sav_user",$info_cok,time()+31536000);
if($cok_user==md5($login_user) && $cok_pass==$pass_user)
$_SESSION['user']=$login_user;
}
// ****************************************************************************************
// * caso in cui si vuole ricordare il login, ma i cookie sono off
// ****************************************************************************************
if(!IsSet($_COOKIE['PHPSESSID']) && IsSet($_POST['ricorda']))
header("Location: $redirect?pagina=nocookie=1");
// ****************************************************************************************
// * Qui inizio la sessione vera e propria...
// ****************************************************************************************
// Questa (a partire dal tag HTML) dovrebbe essere il codice da includere nella pagina riservata ???
$PHPSESSID=session_id();
if(!IsSet($_SESSION['user'])) //non siamo loggati, pagina di login
{
if(isset($_GET['nocookie']) && $_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login
print("Mi dispiace, ma con i cookie disabilitati non si possono fare i miracoli ;)<br />
Attivali se vuoi ricordare il tuo login.<br />");
print("<center><b><font color=\"red\">Questa è un'area privata e protetta. Se non sei autorizzato, per favore esci.<br />This is a private and protected area. Please log off if you are not authorized.</font></b></center>");
print("<br /><br /> ");
print("<FORM METHOD=post ACTION=\"$redirect?pagina=misc/login.php\"> <center>");
print("username: ");
print("<INPUT TYPE=TEXT SIZE=20 NAME=posted_username /><br /> <br />");
print("password: ");
print("<INPUT TYPE=PASSWORD SIZE=20 NAME=posted_password /><br /> <br />");
print("ricordami: ");
print("<INPUT TYPE=CHECKBOX NAME=ricorda VALUE=1 /><br /><br /> ");
print("<INPUT TYPE=SUBMIT NAME=SUBMIT VALUE=\"Entra\" /><br /> </center>");
if(!IsSet($_COOKIE['PHPSESSID']))
//i cookie sono off, dobbiamo propagare noi il PHPSESSID
print("<INPUT TYPE=HIDDEN NAME=PHPSESSID VALUE=$PHPSESSID />");
print("</FORM>");
}
else
{
//siamo loggati pagina riservata
$username=$_SESSION['user'];
if (IsSet($username)) {
header("Location: $redirect?pagina=news_insert.php");
}
}
?>
```P.S. L'ingresso di amministrazione è in linea con un vecchio thread di questo forum :figo: