problema con header in area riservata

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Buongiorno a tutti,
Ecco il problema: ho un'area di backoffice con accesso riservato che viene controllato attraverso una variabile di sessione "autorizzato" che viene impostata quando l'utente effettua il login correttamente.
Da qui in poi tutte le pagine iniziano con il controllo
PHP:
session_start();
//se non c'è la sessione registrata
if (!$_SESSION['autorizzato']) {
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";
  die;
}
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato
session_start();
$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica

Il tutto funziona egregiamente.
Ora sto terminando una pagina di variazione di record all'interno di un db;
innanzitutto richiamo una pagina che tramite un piccolo form chiede di selezionare quello che si vuole modificare (per esempio un id utente), cliccando sul submit carico una pagina che contiene le righe che rispondono al criterio di ricerca (possono essere fino a 20, 25 righe), ogni riga contiene un bottone "modifica la riga".
Cliccando su "modifica la riga" richiamo una pagina aggiorna.php, molto semplice:
PHP:
session_start();
//se non c'è la sessione registrata
if (!$_SESSION['autorizzato']) {
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";
  die;
}
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato
session_start();
$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica


	$riga = $_POST['utente'];
	$lez = $_POST['lezione'];

	$nom = $_POST['nome'];
	$cog = $_POST['cognome'];
	$ema = $_POST['email'];
	$tel = $_POST['telefono'];
	$tra = $_POST['transazione'];
	$pag = $_POST['pagamento'];
	$pos = $_POST['postiprenotati'];
	$not = $_POST['note'];

	include 'connect.php';
	$richiesta = ("UPDATE utentiscuola SET nome = '$nom', cognome = '$cog', email = '$ema', telefono = '$tel', username = '$ema', idTransazione = '$tra', pagamento = '$pag', postiprenotati = '$pos', note = '$not' WHERE id_utente = '$riga' ");
	$fai = mysql_query($richiesta);

	
	header("location: modificapreno.php");

Il problema sta nel comando header.
Vengo effettivamente ridirezionato sulla pagina richiesta (che e' quella che mi mostrava l'elenco delle righe da modificare) ma ricevo il messaggio "Area riservata, accesso negato...ecc." come se la sessione non venisse più riconosciuta.

Spero di essere stato chiaro... e comunque grazie per i suggerimenti che verranno
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Ho pensato di eseguire la funzione di aggiornamento sulla stessa pagina dell'elenco (modificapreno.php), richiamando la funzione di aggiornamento ed effettuando il refresh della pagina alla fine dell'aggiornamento stesso.
Però se uso
PHP:
header('Location: '.$_SERVER['PHP_SELF']);
mi ricarica la pagina ma vuota, se utilizzo
PHP:
header('Location: http://www.teatro7.com/backoffice/modificapreno.php');
oppure
PHP:
header('Location: modificapreno.php');
ricevo sempre l'avviso che si tratta di area riservata...

Per completezza di informazione
 

MarcoGrazia

Utente Attivo
15 Dic 2009
788
16
18
59
Udine
www.stilisticamente.com
hai messo due volte session_start(); nella stessa pagina, togli quello sotto ;-)

Per non parlare di non controllare i dati del POST, tanto valeva mettere direttamente questo array nella query senza instanziare altri variabili; ma è altra storia.
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Ho modificato come segue, mettendo tutto sulla stessa pagina, ma l'errore resta lo stesso:
PHP:
<?php
session_start();
//se non c'è la sessione registrata
if (!$_SESSION['autorizzato']) {
  echo "<h1>Area riservata, accesso negato.</h1>";
  echo "Per effettuare il login clicca <a href='index.php'><font color='blue'>qui</font></a>";
  die;
}
 
//Altrimenti Prelevo il codice identificatico dell'utente loggato
//session_start();
$cod = $_SESSION['cod']; //id cod recuperato nel file di verifica


$lezione = $_POST["idlezione"];
$emailcliente = $_POST["mailcliente"];



if (isset($_POST['aggiornamelo'])){
aggiornare();}


function aggiornare(){
	$lez = $_POST['lezione'];
	$riga = $_POST['riga'];
	$nom = $_POST['nome'];
	$cog = $_POST['cognome'];
	$ema = $_POST['email'];
	$tel = $_POST['telefono'];
	$tra = $_POST['transazione'];
	$pag = $_POST['pagamento'];
	$pos = $_POST['postiprenotati'];
	$not = $_POST['note'];

	include 'connect.php';
	$richiesta = ("UPDATE utentiscuola SET nome = '$nom', cognome = '$cog', email = '$ema', telefono = '$tel', username = '$ema', '', idTransazione = '$tra', '', pagamento = '$pag', postiprenotati = '$pos', note = '$not' WHERE id_utente = '$riga'");
	$fai = mysql_query($richiesta);

	header('Location: http://www.teatro7.com/backoffice/modificapreno.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>Variazione date lezioni di cucina</title>
<link href="backoffice.css" rel="stylesheet" type="text/css" />



</head>

<body>


<div style="margin-left: 10px;">
	<table>
		<tr>
			<td width="30px">Cod.</td>
			<td width="150px">Nome</td>
			<td width="150px">Cognome</td>
			<td width="200px">Email</td>
			<td width="150px">Telefono</td>
			<td width="250px">Transazione</td>
			<td width="150px">Pagamento</td>
			<td width="200px">Posti Prenotati</td>
			<td width="250px">Note</td>
		</tr>

		<? 

			if ($lezione != "") {
		
				include 'connect.php';
				$query = ("SELECT * FROM utentiscuola WHERE id_lezione='$lezione'");
				$vai = mysql_query($query);
				$righe = mysql_num_rows($vai);

				?>


				<p><? echo "$cod"; ?>, risultano <? echo "$righe"; ?> record registrati nella lezione <? echo "$lezione"; ?><br>
					Effettua i cambiamenti desiderati e clicca su <span class="rosso">AGGIORNA</span> <b>per ogni riga modificata</b></p>
				<br>
				<hr>
				<br>
				

				
				<?
				$i = 0;

				while ($righe > $i) {
					$cod = mysql_result($vai, $i, "id_utente");
					$nome = mysql_result($vai, $i, "nome");
					$cognome = mysql_result($vai, $i, "cognome");
					$email = mysql_result($vai, $i, "email");
					$telefono = mysql_result($vai, $i, "telefono");
					$transazione = mysql_result($vai, $i, "idTransazione");
					$pagamento = mysql_result($vai, $i, "pagamento");
					$postiprenotati = mysql_result($vai, $i, "postiprenotati");
					$note = mysql_result($vai, $i, "note");

				?>
				<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
				<tr>
					<td><? echo $cod; ?></td>
					<td><input type="text" name="nome" value="<? echo $nome; ?>" size="15"></td>
					<td><input type="text" name="cognome" value="<? echo $cognome; ?>" size="15"></td>
					<td><input type="text" name="email" value="<? echo $email; ?>" size="20"></td>
					<td><input type="text" name="telefono" value="<? echo $telefono; ?>" size="15"></td>
					<td><input type="text" name="transazione" value="<? echo $transazione; ?>" size="25"></td>
					<td><input type="text" name="pagamento" value="<? echo $pagamento; ?>" size="18"></td>
					<td align="center"><input type="text" name="postiprenotati" value="<? echo $postiprenotati; ?>" size="5"></td>
					<td><textarea name="note" rows="4" cols="30" value="<? echo "$note"; ?>"></textarea></td>
				</tr>

				<tr>
					<td colspan="9" align="center" class="rosso">
						<input type="hidden" name="lezione" value="<? echo $lezione; ?>">
						<input type="hidden" name="riga" value="<? echo $cod; ?>">
						<input name="aggiornamelo" type="submit" value=" AGGIORNA LA RIGA <? echo $cod; ?>  "></td>
				</tr>
				<tr>
					<td colspan="9"><hr></td>
				</tr>

				</form>

				<?
				$i++;
				}
			}
		

		?>

	

	</table>
</div>






</body>
</html>

le modifiche vengono regolarmente effettuate, ma al momento del redirect (header... ecc) il browser mi risponde sempre che è area riservata..
Se non c'e' soluzione pazienza, ridurrò ulteriormente i passaggi, mettendo tutto sulla stessa pagina di scelta iniziale, che essendo una pagina con una struttura un pochino complessa preferivo lasciar stare...
Comunque continuo a non capire per quale motivo un header inviato all'interno di un'area protetta non debba funzionare (visto che sono loggato regolarmente e la sessione è in corso: tutte le altre pagine all'interno della stessa area funzionano senza problemi...)
 

gandalf1959

Utente Attivo
21 Nov 2013
208
1
18
Non potendo perdere ore a capire come risolvere, alla fine ho messo tutto sulla stessa pagina, sia il form per la selezione che l'esposizione del risultato, dando come action al form
PHP:
echo $_SERVER['PHP_SELF'];
e con if isset richiamo la funzione che cerca e mostra. La pagina è diventata un po' complessa ma ce la posso fare... Intanto funziona perfettamente, che è la cosa più importante.
Grazie per l'aiuto
 
Discussioni simili
Autore Titolo Forum Risposte Data
gandalf1959 [PHP] problema con l'utilizzo di Header PHP 3
X Problema con header() include() e i siti di hosting PHP 1
L problema con la funzione header!!! AIUTO! PHP 24
P problema con header(Location....) PHP 11
G html problema table scrollable con header fisso HTML e CSS 2
H problema tabella con header e prima colonna fissi Javascript 1
I Problema con header PHP 16
T Problema con header:"troppi reindirezzamenti" PHP 3
A Re_ problema con HEADER PHP 2
A Problema header con dreamweaver cs3 e PHP PHP 6
A Problema con autenticazione e header() PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
G Problema con Get page PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
T problema con select dinamica con jquery Javascript 0
S Problema con spazi bianchi HTML e CSS 4
A PROBLEMA: insert mysqli con dati Tagsinput Presentati al Forum 0
Tommy03 Problema con z-index HTML e CSS 3
M Problema inserimento parole con apostrofo nel db PHP 5
C Problema con dati meteo xml XML 1
S Problema con infrarossi videocamera IP Cam e Videosorveglianza 1
V Problema con librerie allegro5 c++ C/C++ 1
M Problema con php per calcolo costo percentuale PHP 7
S Problema con mysqli_num_rows PHP 18
grgfede Problema javascript con aruba Javascript 1
M Problema con visibility e radio button Javascript 2
Marti1! Problema con casella mail cancellata Posta Elettronica 3
L [PHP] Problema con Telegram PHP 1
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
S Strano problema con i title su Google SEO e Posizionamento 3
P [ASP.Net] Problema ERR_INCOMPLETE_CHUNKED_ENCODING 206 (Partial Content) con Font ASP.NET 4
P [HTML] Problema ERR_INCOMPLETE_CHUNKED_ENCODING 206 (Partial Content) con Font HTML e CSS 1
N [Apache] problema con estensione php Apache 0
C [PHP] Problema con download file PHP 0
M [PHP] Problema con preg_match PHP 1
M [PHP] Problema con query select PHP 2

Discussioni simili