Trasferisci variabili tra le pagine PHP
Domanda
Voglio ottenere l'input dell'utente in una pagina, memorizzarlo in una variabile php e usarlo in un'altra pagina php. Ho provato a usare 'sessioni' ma non sembra funzionare. C'è un'altra alternativa sicura? È probabile che queste informazioni siano nomi utente e password.
Soluzione
Prova a cambiare il codice della sessione poiché questo è il modo migliore per farlo.
Ad esempio:
index.php
<?php
session_start();
if (isset($_POST['username'], $_POST['password']) {
$_SESSION['username'] = $_POST['username'];
$_SESSION['password'] = $_POST['password'];
echo '<a href="nextpage.php">Click to continue.</a>';
} else {
// form
}
?>
nextpage.php
<?php
session_start();
if (isset($_SESSION['username'])) {
echo $_SESSION['username'];
} else {
header('Location: index.php');
}
?>
Tuttavia probabilmente memorizzerei qualcosa di più sicuro come un ID utente in una sessione piuttosto che le credenziali di accesso dell'utente.
Altri suggerimenti
Sono d'accordo con Carson, le sessioni dovrebbero funzionare per questo. Assicurati di chiamare session_start () prima di qualsiasi altra cosa su qualsiasi pagina in cui desideri utilizzare le variabili di sessione.
Inoltre, non vorrei memorizzare direttamente le informazioni sulla password, ma piuttosto utilizzare un qualche tipo di meccanismo di token di autenticazione. IMHO, non è intrinsecamente sicuro archiviare i dati della password in una sessione, ma se non è necessario farlo, probabilmente dovresti cercare di evitarlo.
Esistono diversi modi:
- usa sessioni (ma non dimenticare di chiamare < a href = "http://de2.php.net/manual/en/function.session-start.php" rel = "nofollow noreferrer"> session_start () su ogni pagina utilizzerai i dati della sessione store ( $ _SESSION ))
- aggiungi i tuoi dati alla stringa di query del " next " pagina ( $ _GET )
- pubblica i tuoi dati nella " successiva " pagina ( $ _POST )
Il modo sessione è l'unico modo in cui i dati non " lascia " il server così come è memorizzato sul server stesso. Per tutti gli altri modi di cui sopra, è necessario occuparsi della sanificazione e della convalida dei dati nella pagina di ricezione.
Il modo più semplice sarebbe
//page1.php
session_start();
$_SESSION['user']='user';
$_SESSION['password']='password';
//page2.php
session_start();
echo $_SESSION['user'] . ' ' . $_SESSION['password'];
Sono d'accordo anche io, le sessioni sono la soluzione migliore. Vedi questo capitolo da Applicazioni database Web con PHP & Amp; MySQL per alcuni esempi.