Pagine protette

riccardo59

Nuovo Utente
22 Nov 2006
2
0
0
Salve a tutti
sono un principiante di PHP, ho seguito il tutorial
"https://www.mrw.it/tutorial/php/tutorial74.htm"
con argomento
"Introduzione alle sessioni. Come creare pagine protette"
Se faccio il login procede tutto ma se tento di caricare una pagina protetta senza effettuare il login invece di reindirizzarmi alla pagina login.htm leggo questo messaggio:
Notice: Undefined index: login in f:\programmi\easyphp1-8\home\provaprotezione\inclusione.inc.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at f:\programmi\easyphp1-8\home\provaprotezione\inclusione.inc.php:3) in f:\programmi\easyphp1-8\home\provaprotezione\inclusione.inc.php on line 5

visualizzando comunque il contenuto della pagina,

il file inclusione.inc.php contiene:
<?php
session_start();
if ($_SESSION['login'] != "ok")
{
header("Location: form.htm");
}
?>

ed il file protetto che tento di aprire contiene:
<?php
include("inclusione.inc.php");
?>

grazie anticipatamente a chi mi potrà aiutare.

Riccardo
 
Ciao riccardo59 bisognerebbe vedere un'attimo il tuo codice, ma generalmente io ho ricevuto quel tipo di errore quando ho messo la funzione header() dopo un'output sia php sia html anche vuoto, prova a controllare se possa essere questo il problema, se è così devi cercare di mettere include() prima degli eventuali output magari utizzando una funzione di test separata che nel caso positivo, ti reindirizza all'apertura della sessione
 
riguardando bene il codice di include dovrebbe essere proprio come ti ho scritto, devi spostare session_start() sotto la verifica della sessione in quanto la chiamata a funzione anche se non eseguita si prepara per lo spostamento del punto di esecuzione del codice di programma......
 
riguardando bene il codice di include dovrebbe essere proprio come ti ho scritto, devi spostare session_start() sotto la verifica della sessione in quanto la chiamata a funzione anche se non eseguita si prepara per lo spostamento del punto di esecuzione del codice di programma......

leggo solo ora la tua risposta, grazie QUI;
ho cambiato così:

<?php
if ($_SESSION['login'] != "ok")
session_start();
{
header("Location: form.htm");
}
?>

però se il login è corretto lui mi visualizza form.htm
dove sbaglio??
 
devi scrivere il seguente codice, se voui lavorare in logica positiva:

<?php
//abilita o riprende la sessione
session_start();

//verifica sela sessione è corretta
if ($_SESSION['login'] == "ok")
//richiama la pagina protetta
header("Location: pagina protetta");

//se la sessione è errata va a form.htm
header("Location: form.htm");

?>
in quanto devi accedere se la sessione di login è corretta.
le graffe nell'if non le ho messe xke usi una sola istruzione se sono di più devi metterle

sevuoi usare la logica negata il codice è il seguente:
<?php

session_start();

if ($_SESSION['login'] != "ok")
header("Location: form.htm");

header("Location: pagina protetta");

?>

che dice se il login è errato vai a form.htm altrimenti abilita la pagina protetta.
 

Discussioni simili