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
852
20
28
62
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
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
N Problema con position absolute e overflow HTML e CSS 4
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
K [PHP] Problema con variabili concatenate. PHP 1
O problema con query PHP 4
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
M Problema con Try Catch PHP 0
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
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 eccessiva nitidezza apertura Camera Raw Photoshop 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1

Discussioni simili