Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[php] Form con password in php

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[php] Form con password in php

Postdi sguggiari » 06/08/07 19:10

Ciao a tutti,
come prima cosa vorrei dire che sono completamente ignorante in fatto di php...
Nella mia pagina ho voluto inserire un'area protetta da password...
http://www.sguggiari.ch/2_password.php
Nella versione attuale, se si inserisce la password corretta ("abcd"), il testo "Area riservata" appare sotto al form. Io invece vorrei far sparire il form e visualizzare solamente il testo "Area riservata"...
Inizialmente avevo fatto un redirect ad un'altra pagina in caso di password corretta, ma poi se uno conosce l'indirizzo della pagina protetta può accedevi direttamente anche senza password.

Sapete come fare a risolvere il problema in maniera semplice? Se possibile non vorrei usare cookie per controllare se la password è stata inserita oppure no....

Codice: Seleziona tutto
<td valign="top" width="800" class="password">
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center">Inserisci la password per accedere all'area riservata:</p>
   <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
      <p style="text-align: center">
       <br /><input type="password" title="Enter your password" name="txtPassword" /></p>
      <p style="text-align: center"><input type="submit" name="Submit" value='Invia' /></p>
   </form>

   <?php
      if (($_POST['txtPassword'] != $password) && ($_POST['Submit']== "Invia")){
   ?>
   <p>&nbsp;</p>
   <p style="text-align: center"><img border="0" src="images/attenzione.gif" width="190" height="166"></p>
<p>&nbsp;</p>
<p style="text-align: center">Impossibile accedere, password errata</p>
   <?php
      }
      else {
      if($_POST['Submit']== "Invia"){
   ?>
   <h1 align="center">A R E A &nbsp;&nbsp;&nbsp;R I S E R V A T A</h1>
   <?php
      }
      }
   ?>
</td>


Grazie a tutti in anticipo
Sandro
Avatar utente
sguggiari
Utente Junior
 
Post: 91
Iscritto il: 28/11/05 15:00
Località: CH

Sponsor
 

Postdi Triumph Of Steel » 07/08/07 11:31

Se non vuoi usare i cookies, puoi sempre usare le sessioni

Inizializza la sessione all'inizio della pagina, e setta la sessione per l'area riservata vuota
Codice: Seleziona tutto
<?php
session_start();
Session("area_riservata") = "";
?>
HTML+FORM

sempre nella stessa pagina, fai i controlli che fai ora, e in più se la password è corretta, imposti una sessione a tua scelta, ad esempio:
Codice: Seleziona tutto
// Se la password è corretta
Session("area_riservata") = true;
// poi puoi fare un redirect alla pagina dell'area riservata

Al posto di "area_riservata" puoi mettere quello che vuoi, e al posto di true puoi mettere quello che vuoi.

Nella pagina dell'area riservata, inizializzi sempre la session_start();, e sempre subito all'inizio controlli che la Session("area_riservata") sia true (oppure del valore che hai scelto). Se è false (o != diversa dal valore che hai scelto, manda al form)
Codice: Seleziona tutto
<?php
session_start();
if (Session("area_riservata") == false) {
 // reindirizza alla pagina di login
}
?>


Puoi sempre cmq usare i cookie che scadono quando si chiude il browser, basta non mettere il tempo di scadenza
Codice: Seleziona tutto
setcookie("area_riservata",1);
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi sguggiari » 07/08/07 13:42

Mmmmmhhh.... ho fatto esattamente come hai detto te ma mi escono 2 pagine bianche, cioè c'è un errore nel codice. Devo aggiungere qualcos'altro oltre quello che hai scritto te? Magari è una cavolata, ma come detto prima sono assolutamente ignorante in php :oops:

Ciao e grazie
Sandro
Avatar utente
sguggiari
Utente Junior
 
Post: 91
Iscritto il: 28/11/05 15:00
Località: CH

Postdi archimede » 07/08/07 14:55

Questo e questo li hai già letti?

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi sguggiari » 07/08/07 15:38

Sì, ma a dir la verità ci ho capito poco...
Comunque il mio problema è un altro, da me l'autenticazione con password funziona... Quello che voglio fare io è proteggere la pagina riservata da un accesso diretto.

Ciao ciao

P.S: che significa HTH? :undecided:
Avatar utente
sguggiari
Utente Junior
 
Post: 91
Iscritto il: 28/11/05 15:00
Località: CH

Postdi Triumph Of Steel » 07/08/07 18:13

sguggiari ha scritto:Mmmmmhhh.... ho fatto esattamente come hai detto te ma mi escono 2 pagine bianche, cioè c'è un errore nel codice. Devo aggiungere qualcos'altro oltre quello che hai scritto te? Magari è una cavolata, ma come detto prima sono assolutamente ignorante in php :oops:

Ciao e grazie
Sandro


si è probabile che ci sia qualche errore.. magari anche banale (tipo aver dimenticato qualche ; o chiusure di IF).

Prova a postare il codice completo.
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi sguggiari » 07/08/07 18:49

Allora... Questa è la pagina dove fare il login:
(http://www.sguggiari.ch/2_password_2.php)

Codice: Seleziona tutto
<?php
$password = "abcd";
$link = "http://www.sguggiari.ch/2_privato_2.php";
?>

...HTML...

<?php
session_start();
Session("area_riservata") = "";
?>
<td valign="top" width="800" class="password">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p style="text-align: center">Inserisci la password per accedere all'area riservata:</p>
  <form name="form" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
   <p style="text-align: center">
       <br /><input type="password" title="Enter your password" name="txtPassword" /></p>
   <p style="text-align: center"><input type="submit" name="Submit" value='Invia' /></p>
  </form>

  <?php
   if (($_POST['txtPassword'] != $password) && ($_POST['Submit']== "Invia")){
  ?>
  <p>&nbsp;</p>
  <p style="text-align: center"><img border="0" src="images/attenzione.gif" width="190" height="166"></p>
  <p>&nbsp;</p>
  <p style="text-align: center">Impossibile accedere, password errata</p>
  <?php
   }
   else {
      if($_POST['Submit']== "Invia"){
         Session("area_riservata") = true;
  ?>
  <META HTTP-EQUIV="Refresh" CONTENT="0; url=<?php echo $link?>">
  <?php
      }
   }
  ?>
</td>


e questa è la pagina di destinazione:
(http://www.sguggiari.ch/2_privato_2.php)

Codice: Seleziona tutto
<?php
session_start();
if (Session("area_riservata") != true) {
      ?>
      <META HTTP-EQUIV="Refresh" CONTENT="0; url=<?php echo $link?>">
      <?php
}
?>

...HTML...


Entrambe le pagine le vedo bianche una volta online....
Una cosa non riesco a capire: come avviene il passaggio della variabile "area_riservata" tra una pagina e l'altra? Si comporta come una variabile globale visibile da tutti?

Buona serata
Sandro
Avatar utente
sguggiari
Utente Junior
 
Post: 91
Iscritto il: 28/11/05 15:00
Località: CH

Postdi sguggiari » 09/08/07 13:55

Ho risolto cambiando sistema di trasmissione delle variabili tra le diverse pagine. Invece di usare delle sessioni, ho usato delle variabili POST. Molto più semplice e comprensibile (almeno per un principiante come me... :D ).
Posto il codice, magari può servire a qualcuno in futuro.

Pagina login.php:
Codice: Seleziona tutto
<p>Inserisci la password per accedere all'area riservata:</p>
<form name="form" method="post" action="pagina_protetta.php">
   <p><br /><input type="password" title="Enter your password" name="password_inserita" /></p>
   <p><input type="submit" name="Submit" value='Invia' /></p>
</form>


Pagina pagina_protetta.php:
Codice: Seleziona tutto
<?php
$password = "la_mia_password";
?>

...
HTML
...


<?php
if ($_POST['password_inserita'] != $password) {
   if ($_POST['password_inserita'] == "") {
      ?>
      <META HTTP-EQUIV="Refresh" CONTENT="0; url=http://www.miosito.com/login.php">
      <?php
   }
   else {
      ?>   
      <p>Accesso negato, "<?php echo $_POST['password_inserita'] ?>" non è la password corretta</p>
      <p>Inserisci di nuovo la password:</p>
      <form name="form" method="post" action="pagina_protetta.php">
         <p><br /><input type="password" title="Enter your password" name="password_inserita" /></p>
         <p><input type="submit" name="Submit" value='Invia' /></p>
      </form>
      <?php
   }
}
else{
   ?>

   ...
   HTML
   ...

   <?php
}
?>


Ciao ciao
Sandro
Avatar utente
sguggiari
Utente Junior
 
Post: 91
Iscritto il: 28/11/05 15:00
Località: CH


Torna a Programmazione


Topic correlati a "[php] Form con password in php":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti