[PHP] Reindirizzamento pagina se la password immessa è corretta

  • Creatore Discussione Creatore Discussione enzogar
  • Data di inizio Data di inizio

enzogar

Nuovo Utente
3 Ago 2016
30
0
6
Buongiorno.
Ho una domanda per chi, a differenza mia, ha dimestichezza con il php.

Per poter accedere ad alcune pagine del mio sito, protette da una password (che viene richiesta in un'altra pagina php), uso il seguente codice php, in testa alla pagina:

<?php
session_start();
if (!isset($_SESSION['login'])) {
header("Location: password_non_corretta.php");
}
?>

Se la password è corretta, si visualizza il restante contenuto della pagina, altrimenti si viene reindirizzati alla pagina "password_non_corretta.php".

Fin qui tutto ok.
Ora però vorrei modificare il codice, affinchè reindirizzi ad una determinata pagina se la password è corretta (quindi, il contrario di ciò che fa adesso il codice).

Potete dirmi come devo modificare il codice php?
Grazie.
 
Ciao,
volendo mantenere il tuo codice originale, ti basta aggiungere un else e reindirizzare.

PHP:
<?php

session_start();

if (!isset($_SESSION['login'])) {
    header("Location: password_non_corretta.php");
} else {
    header("Location: altra_pagina.php");
    exit;
}

?>

Tutto ciò però va bene OVVIAMENTE solo nel caso in cui, una volta sbagliata la password, la variabile di sessione login non viene settata.
 
Grazie per la risposta.
Però vorrei se possibile una soluzione più diretta, mi spiego: se alla prima condizione risulta che la password è corretta, si viene reindirizzati ad un'altra pagina, mentre se la password non è corretta si continua e si visualizza il contenuto della pagina che ospita il codice di controllo, quindi ci deve essere un solo reindirizzamento nel caso la password risulti corretta.

Non ho nessuna dimestichezza con il php, ma ad occhio basterebbe modificare if (!isset($_SESSION['login'])) in modo che questa if rilevi se la password è corretta...
 
C'è qualcuno che mi può dire come modificare quella if del codice in modo tale che se la password è corretta si viene reindirizzati alla nuova pagina?
Grazie.
 
Semplicemente..
PHP:
<?php
session_start();
if (isset($_SESSION['login'])) {
header("Location: password_corretta.php");
}
?>

Ripeto che, con questo codice, si presuppone che la variabile di sessione login non venga settata in caso di password errata. In caso contrario, il reindirizzamento avverrebbe comunque nonostante la password inserita, per cui consiglio di valorizzare $_SESSION['login'] con TRUE se la password è corretta, con FALSE altrimenti, basando quindi la condizione sul valore assunto da tale variabile.
 
Ok, ti ringrazio. Nel dettaglio, il codice dovrebbe fare questo: nel sito ho alcune pagine a cui il visitatore può accedere liberamente, senza aver digitato nessuna password, pagine ad accesso libero che mostrano solo una parte del contenuto. . Poi ci sono alcune pagine del sito a cui si accede con una password.
Da queste pagine, il visitatore che ha digitato la password, può andare anche sulle altre pagine ad accesso libero, se però antra in queste pagine dopo che si è loggato (dopo che ha digitato la password), andrà reindirizzato alle equivalenti pagine che mostreranno in più il contenuto protetto.

Quindi, il visitatore che entra la prima volta nella pagina che contiene quel codice, se non ha digitato la password, accederà a quella pagina che ha solo il contenuto parziale, mentre se entra in quella pagina dopo aver digitato la password (su altre pagine del sito), andrà immediatamente reindirizzato alla pagina che conterrà il contenuto completo...
 
Era solo per spiegarti cosa dovrebbe fare quel codice. Ma una domanda te la voglio fare: quando dici:"valorizzare $_SESSION['login'] con TRUE se la password è corretta, con FALSE altrimenti, basando quindi la condizione sul valore assunto da tale variabile", quindi il codice

<?php
session_start();
if (isset($_SESSION['login'])) {
header("Location: password_corretta.php");
}
?>

come diventa?
 
La questione non si pone in questa pagina, bensì quando viene valutata la password immessa dall'utente.

In ogni caso si tratta solamente di un piccolo accorgimento tanto per stare sicuri, ma può anche funzionare benissimo così.
 

Discussioni simili