Transférer des variables entre des pages PHP
Question
Je souhaite obtenir la saisie de l'utilisateur dans une page, la stocker dans une variable php et l'utiliser dans une autre page php. J'ai essayé d'utiliser 'sessions' mais cela ne semble pas fonctionner. Y a-t-il une autre alternative sûre? Ces informations sont probablement des noms d’utilisateur et des mots de passe.
La solution
Essayez de changer votre code de session car c'est le meilleur moyen de le faire.
Par exemple:
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');
}
?>
Cependant, je stockerais probablement quelque chose de plus sûr, tel qu'un ID utilisateur dans une session, plutôt que les informations de connexion de l'utilisateur.
Autres conseils
Je suis d’accord avec Carson, les sessions devraient fonctionner pour cela. Assurez-vous que vous appelez session_start () avant toute autre page sur laquelle vous voulez utiliser les variables de session.
De plus, je ne stockerais pas directement les informations de mot de passe, mais utiliserais plutôt un mécanisme de jeton d'authentification. À mon humble avis, il n’est pas intrinsèquement intrinsèquement sûr de stocker les données de mot de passe dans une session, mais s’il n’est pas nécessaire de le faire, vous devriez probablement essayer de l’éviter.
Il y a plusieurs façons:
- utilisez les sessions (mais n'oubliez pas d'appeler < un href = "http://de2.php.net/manual/en/function.session-start.php" rel = "aucune erreur de suivi"> session_start () sur chaque page où vous utiliserez les données de session magasin ( $ _SESSION ))
- ajoutez vos données à la chaîne de requête du " next " page ( $ _GET )
- publiez vos données sur le " next " page ( $ _POST )
Le mode session est le seul moyen de ne pas laisser les données & "laisser &"; le serveur tel qu'il est stocké sur le serveur lui-même. Pour tous les autres moyens mentionnés ci-dessus, vous devez veiller à la désinfection et à la validation des données sur la page de réception.
Le moyen le plus simple serait
//page1.php
session_start();
$_SESSION['user']='user';
$_SESSION['password']='password';
//page2.php
session_start();
echo $_SESSION['user'] . ' ' . $_SESSION['password'];
Je suis d’accord aussi, les sessions sont la meilleure solution. Voir ce chapitre à partir de applications de base de données Web avec PHP & Amp; MySQL pour quelques exemples.