Valutazione discussione:
  • 1 voto(i) - 5 media
  • 1
  • 2
  • 3
  • 4
  • 5
Privatizzazione con password
#1
Ciao a tutti, ciao MAttia!!
Ho un problemino...praticamente ho creato una pagina privata.php dove ho delle info personali...per fare in modo che alla pagina possano accedere solo persone autorizzata l'ho collegata ad una pagina passw.htm in questo modo:
Codice:
<?php
if ($_POST['password']!="password") {
    header("Location: passw.htm");
    exit();
}
?>
mentre nella pagina passw.htm ho messo questo form:
Codice:
<form method="post" action="privata.php">
  <p><span class="testo">Password: </span>
  <input type="password" name="password" size="20"><br>
&nbsp;<input type="submit" value="Invia"></p>
</form>
e fin qui tutto funziona correttamente...

Adesso, visto che dentro privata.php ci sono i link alle pagine 1.htm, 2.htm e 3.htm come faccio a rendere private anche queste pagine??
Se io provassi ad entrare direttamente nella pagina 1.htm (o 2.htm o 3.htm) senza passare da privata.php mi fa entrare tranquillamente, e invece vorrei che ci fosse un controllo che verifichi che sia passato PRIMA da privata e abbia inserito la passw ...
Non so se sono stato chiaro...spero di si Smile

Saluti
Cita messaggio
#2
Per prima cosa devi trasformare tutte le pagine che vuoi che siano protette da password da HTML a PHP.
Poi per verificare che un utente sia loggato puoi utilizzare i cookie o le sessioni. Io ti consiglio le sessioni perché sono più sicure. Entrambi sono delle variabili che sono valide su più pagine. L'unica differenza è che i cookie stanno sul computer dell'utente e le sessioni sul server. Quindi i cookie hanno una durata che può essere assegnata dal programmatore ma possono essere modificati e cancellati dall'utente sul proprio computer. Le sessioni durano fino a quando l'utente non chiude il browser e non possono essere modificate dall'utente.
Per prima cosa devi aggiungere all'inizio di tutte le pagine la funzione session_start che serve a far capire al server che si vogliono utilizzare le sessioni:
Codice:
session_start();

Nella pagina che fa il login devi assegnare la sessione:
Codice:
<?php
session_start();
if ($_POST['password']!="password") {
    header("Location: passw.htm");
    exit();
}
$_SESSION['login'] = "pippo";
?>

Nelle pagine in cui vuoi controllare che l'utente sia collegato puoi mettere all'inizio:
Codice:
<?php
session_start();
if(!isset($_SESSION['login']) || $_SESSION['login']!="pippo"){
    header("Location: passw.htm");
    exit();
}
?>
Mattia!
Cita messaggio
#3
ok, ora faccio la prova ma se su $_POST setto la 'password', ne setto un'altra su $_SESSION??
Cita messaggio
#4
Alla sessione puoi assegnare qualsiasi valore che vuoi. Serve solo a verificare che sia integra.
Mattia!
Cita messaggio
#5
PERFETTO!! Funziona!!

Grazie mille, mi sei stato di grande aiuto come al solito...

Saluti
Cita messaggio
#6
Ciao Mattia!! Altra informazione... se in ognuna di queste pagine col contenuto (1.php, 2.php, 3.php etc..) provo a cliccare su INDIETRO dal browser (IE7 per la cronaca) mi da "Webpage has expired"...allora ho provato a mettere un "back" dentro a ogni pagina che mi riporta in private.php...solo che quando ci clicco mi richiede la password, ora sicuramente è più sicuro ma ad un certo punto diventa scocciante...quindi potrei evitare questi 2 intoppi?? Quindi cliccando su INDIETRO del browser o su BACK di ogni pagina mi porta direttamente alla pagina private.php senza che mi chieda nuovament la pass di accesso??

Saluti
Cita messaggio
#7
Potresti modificare il file "passw.htm" come pagina PHP (naturalmente dovrai modificare tutti i redirect che hai messo nelle altre pagine) e mettere all'inizio:
Codice PHP:
<?php
session_start
();
if(isset(
$_SESSION['login']) && $_SESSION['login']=="pippo"){
    
header("Location: private.php");
    exit();
}
?>
Mattia!
Cita messaggio
#8
La procedura sembra giusta ma c'è qualcosa che nn va... adesso sia su private.php che passw.php mi da questo errore:
Internet Explorer cannot display the webpage

cosa potrebbe esserci di sbagliato??

p.s. ho correto tutti i rideirect con l'estensione .php
Cita messaggio
#9
Hai provato ad accedere alle pagine con un altro browser (magari Firefox) e vedere se ti dà lo stesso errore?

P.S.: Aggiorna Internet Explorer alla versione 8! smilie smilie smilie
Mattia!
Cita messaggio
#10
Ho provato anche con firefox (ultima versione) e mi da questo errore:
Questa pagina non redireziona in modo corretto













Firefox ha rilevato che il server sta redirezionando la richiesta per questo indirizzo in modo che non possa mai essere completata.








* Questo problema spesso è causato dal blocco o dal rifiuto dei cookie.

Saluti

p.s. IE8 è meglio?? E' più pesante?? o potrei lasciare il 7?
Cita messaggio
#11
Praticamente il problema è che continua a fare redirect all'infinito.
Forse mi sono perso qualcosa. Mi potresti scrivere il codice completo di "private.php" e di "passwd.php"?

P.S.: Sicuramente Internet Explorer 8 è meglio di Internet Explorer 7 perché segue meglio gli standard del Web, ha qualche funzionalità in più, è più veloce a eseguire JavaScript e non è più pesante.
Mattia!
Cita messaggio
#12
Allora, in private.php l'unica parte in php è questa (che sta all'inizio):
Codice:
<?php
session_start();
if ($_POST['password']!="pippo") {
    header("Location: passw.php");
    exit();
}
$_SESSION['login'] = "pippo";
?>
Il resto è tutto html!!

Nella pagina passw.php invece è così:
Codice:
<?php
session_start();
if(isset($_SESSION['login']) && $_SESSION['login']=="pippo"){
    header("Location: private.php");
    exit();
}
?><html>
<head><LINK
href="input.css" type=text/css rel=stylesheet></head>
<form method="post" action="private.php">
  <p><span class="testo">Inserisci Password: </span>
  <input type="password" name="password" size="20"><br>
&nbsp;<input type="submit" value="Invia"></p>
</form></html>

Al massimo se ti affacci su messenger ti do il link alla pagina e la passw
Cita messaggio
#13
Modifica "private.php" in questo modo:
Codice PHP:
<?php
session_start
();
if((!isset(
$_POST['password']) || $_POST['password']!="pippo") && (!isset($_SESSION['login']) || $_SESSION['login']!="pippo")){
    
header("Location: passw.php");
    exit();
}
$_SESSION['login'] = "pippo";
?>
Mattia!
Cita messaggio
#14
perfect!! Adesso funziona alla grande!!

Grazie mille mattia! smilie
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)