-
caduta della sessione
salve , ho messo il PHPSESSID su tutte le pagine del mio sito , solo che ho un problema , si parte dalla index.php che ha un form
Codice PHP:
<?php if(empty($_SESSION['name'])){ ?>
<HTML>
<HEAD>
<TITLE>index</TITLE>
</HEAD>
<BODY><form action="homepage.php?<?php session_start(); echo SID; ?>"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
<?php }else{
session_start();
Header("Location: homepage.php?PHPSESSID=".session_id());
} ?>
che manda alla homepage.php solo se l'utente mette un nome , poi nella homepage.php sono presenti altri link del tipo upload_file.php?PHPSESSID=ecc , il probleema e che quando tento di riaccedere alla homepage.php , mi rimanda alla index.php e mi fa rimettere il nome , come posso risolvere questo problema ?
-
Non ti serve inserire la sessione negli URL, quello avviene in automatico se il salvataggio della sessione dell'utente non è abilitata sul server (e qui è abilitata).
Per rendere attive le sessioni devi scrivere session_start()M in ogni pagina in cui devi usarle e posizionarla prima di ogni altra cosa.
Ciao!
-
messa ma continua a cadere sempre sulla homepage , tranne se la aggiorno , ma se tento di accedere da upload.php alla homepage.php cade
-
Posta un esempio delle due pagine e descrivi l'iter che segui per interagire con esse.
Ciao!
-
questa è la homepage.php
Codice PHP:
<? session_start(); ?>
<HTML>
<HEAD>
<TITLE>homepage</TITLE>
</HEAD><style type="text/css" media="all">
body {
background-color: black;
font-family: Comic sans ms, Arial, Helvetica, sans-serif;
font-size: 20px;
color: #FF0000;
margin: 5;
padding: 0;}
a {color: yellow;}
.titolo {font-size: 24px;
color:red ;
font-weight: bold;
line-height: 1.25em;}
.link {font-size: 14px;
color: yellow;
font-weight: bold;
line-height: 1.25em;}
</style>
<BODY><?php
session_start();
"?PHPSESSID=".session_id();
$name = htmlspecialchars($_POST['name']);
if($name != ""){
$_SESSION['name'] = $name;}
else {
echo ('Attenzione dovete inserire un nome valido<br/>');
echo('<a href="index.php">Indietro</a>');
exit();}
?>
<?php
$path = "upload/";
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$file = $path.'../upload/'.$file;
if (is_file($file)) @$n_file++;
//if(is_dir($file)) @$n_dir++;
}
}
closedir($handle);
}
?>
<div align="center"><div class="titolo">*HOME*</div><br><font color="green"><?php echo (date("d/m/Y G:i")); ?></font><br><hr>[<a href="homepage.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">Aggiorna</a>]
[<a href="upload_file.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">Upload</a>] [<a href="visualizza_file.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">Visualizza i file</a> (<?=$n_file?>)]</hr></div>
</BODY>
</HTML>
le seguente visualizza_file.php
Codice PHP:
<? session_start(); ?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD><meta http-equiv="Content-Language" content="it">
<TITLE>file_uploadati</TITLE>
</HEAD><style type="text/css" media="all">
body {
background-color: black;
font-family: Comic sans ms, Arial, Helvetica, sans-serif;
font-size: 20px;
color: #FF0000;
margin: 5;
padding: 0;}
a {color: yellow;}
.titolo {font-size: 24px;
color: red;
font-weight: bold;
line-height: 1.25em;}
.testo {font-size: 14px;
color: yellow;
font-weight: bold;
line-height: 1.25em;}
</style>
<BODY>
<? php
$path = "upload/";
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
$file = $path.'../upload/'.$file;
if(is_file($file)) @$n_file++;
//if(is_dir($file)) @$n_dir++;
}
}
closedir($handle);
}
?>
<div align="center"><hr><div class="titolo">*FILE PRESENTI (<?=$n_file?>)*</div><br><font color="green"><?php echo (date("d/m/Y G:i")); ?></font></hr><br><hr>[<a href="visualizza_file.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">Aggiorna</a>] [<a href="upload_file.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">Carica File</a>] [<a href="homepage.php<?php session_start(); echo "?PHPSESSID=".session_id(); ?>">Homepage</a>] </hr><br><hr>
<?php
$path = "../../upload/";
$cartella = opendir('upload/');
while ($file = readdir($cartella)) {
$file_array[] = $file;
}
foreach ($file_array as $file) {
# se il file inizia con .. lo tralascio
if ( $file == ".." || $file == ".") {
continue;
}
#trovo i file e creo il link
$e=substr(strrchr($file, "."), 0); // rimuovo l'estensione
$a="";
$b=" ";
$nome1=ereg_replace($e, $a, $file);
$nome=ereg_replace("_", "$b", $nome1);
echo "<font color=\"red\"><a href=\"upload/$file\" title=\"$nome\" class=\"link1\">$nome</a></font><br>";
//questo crea il link
}
?>
</hr>
</BODY>
</HTML>
se vado dalla homepage al visualizza file.php funziona , se vado dal visualizza alla homepage non funziona
-
Ma guarda che session_start lo devi scrivere una sola volta per pagina.
Nei file, se non sbaglio, non fai nessun uso dell'array superglobale $_SESSION, quindi non capisco come fai a dire se funziona o non funziona...
Consiglio: fai due script più semplici per testare questi funzionamenti.
Ciao!
-
quindi $_SESSION la elimino o la sostituisco ?
-
$_SESSION non c'è!!
Quello che è inutile sono gli url con ?PHPSESSID=...
Ciao!
-
ho fatto come mi hai detto , con delle pagine più facili , ma il problema persiste , ora ti posto tutte e 4 le pagine INDEX
Codice PHP:
<HTML>
<HEAD>
<TITLE>prova</TITLE>
</HEAD>
<BODY><?php if(empty($nome['name'])){ ?>
<HTML>
<HEAD>
<TITLE>index</TITLE>
</HEAD>
<BODY><form action="homepagewap.php?<?php session_start(); echo SID; ?>"method="POST">
Inserire un nome <input type="text"name="name">
<input type="submit"value="Entra"><br><div align="center">lavori in corso <img src="/upload/sorrisone.gif">
</BODY>
</HTML>
<?php }else{
session_start();
Header("Location: homepagewap.php?PHPSESSID=".session_id());
} ?>
</BODY>
</HTML>
HOMEPAGE
Codice PHP:
<HTML>
<HEAD>
<TITLE>prova</TITLE>
</HEAD>
<BODY><?php
session_start();
$name = htmlspecialchars($_POST['name']);
if($name != ""){
$nome['name'] = $name;}
else {
echo ('Attenzione dovete inserire un nome valido<br/>');
echo('<a href="indexwap.php">Indietro</a>');
exit();}
?><a href="upload.php">upload</a><br><a href="visualizza.php">visualizza</a>
</BODY>
</HTML>
UPLOAD
Codice PHP:
<HTML>
<HEAD>
<TITLE>upload</TITLE>
</HEAD>
<BODY><? session_start(); ?><br><a href="homepagewap.php">home</a><br><a href="visualizza.php">visualizza</a><a href="upload.php">aggiorna</a>
</BODY>
</HTML>
VISUALIZZA
Codice PHP:
<HTML>
<HEAD>
<TITLE>visualizza</TITLE>
</HEAD>
<BODY><? session_start(); ?><br><a href="homepagewap.php">home</a><br><a href="upload.php">upload</a><br><a href="visualizza.php">aggiorna</a>
</BODY>
</HTML>
tra loro va tutto bene , il problema e che cade sempre quando si torna alla homepage