Comment faire une boucle par le biais du tableau de session en php
Je suis en train de faire une boucle par la session. Mais je n'arrive pas à obtenir les résultats escomptés.
Je suis encore en train d'explorer des choses. Merci donc de m'enseigner une meilleure façon de le faire. Si vous trouver mon code non sécurisé ou inapproprié.
D'abord, j'ai ce formulaire de connexion:
<form name="x" action="login.php" method="post">
Username:<input type="text" name="uname" value=""></input><br/>
Password:<input type="password" name="pword" value=""></input>
<input type="submit" value="login"></input>
</form>
Et voici login.php qui définit la session si l'enregistrement est trouvé sur la base de données mysql:
<?php
require_once("conn.php");
$username=$_POST['uname'];
$pword=md5($_POST['pword']);
echo $username."<br/>";
echo $pword;
$check=mysql_query("SELECT * FROM users WHERE Uname='$username' AND Hpword='$pword'");
if(mysql_num_rows($check)==0){
header('Location:loginform.php');
}else{
session_start();
while($result=mysql_fetch_assoc($check)){
$_SESSION['uid'].=$result['ID'];
$_SESSION['uname'].=$result['Uname'];
}
}
?>
Et voici le fichier qui boucle le long de la séance:
<?php
session_start();
echo "Logged in users:<br/>";
foreach($_SESSION as $sir){
}
echo "User id: ". $_SESSION['uid']."<br/>";
echo "Username: ".$_SESSION['uname']."<br/>";
?>
J'obtiens ceci:
Alors que je suis l'espoir d'obtenir quelque chose comme ceci:
Id de l'utilisateur: 1
Nom d'utilisateur: yoh
Id de l'utilisateur: 2
Nom d'utilisateur: max
Essayez d'éviter les injection SQL ou de problèmes: l'utilisation
seulement string les données de tous source qu'il devrait être.
De toute évidence, cependant merci pour ce pour n'importe quel débutant la lecture de ce.
mysql_real_escape_string()
lors de l'insertion de publier des données dans une requêteseulement string les données de tous source qu'il devrait être.
De toute évidence, cependant merci pour ce pour n'importe quel débutant la lecture de ce.
OriginalL'auteur Wern Ancheta | 2011-03-23
Vous devez vous connecter pour publier un commentaire.
$_SESSION est disponible uniquement pour le visiteur qui ouvre la page en fait. (Il serait agréable de voir tout le monde est $_SESSION variables, n'est-ce pas?)
Vous pouvez stocker ces $_SESSION vars dans votre base de données puis la boucle à travers eux.
Mise à jour:
last_seen
last_seen
la valeur est plus petite quenow
- serveur de la durée de sessionjuste mis à jour ma réponse avec un aperçu sur la façon de le faire facilement.
OriginalL'auteur fabrik
De côté de très correct fabrik la réponse, juste quelques lignes dans votre code:
cette boucle n'est évidemment rien. vous ne pouvez pas obtenir la sortie à partir du code que les sorties de rien 🙂
Aussi, si vous souhaitez stocker plusieurs valeurs dans la session, comme dans le panier, vous devez les stocker dans le tableau, pas le long de la chaîne concaténée:
va produire un tableau nommé $_SESSION['panier'] qui peut être réitéré la façon dont vous le souhaitez:
OriginalL'auteur Your Common Sense
OriginalL'auteur Pere
Mise à JOUR : non indice numérique.
Dans login.php
Et vous foreach
Comme cela vous n'avez qu'une entrée pour chaque utilisateur.
Je l'ai mise à jour mon code pour avoir des index numériques.
ça ne fonctionne toujours pas, comme PHP nom de la variable ne peut pas être démarré à partir du numéro.
aussi, c'est juste une mauvaise pratique pour effectuer une itération sur $_SESSION lui-même. il peut y avoir (et le plus probable serait) d'autres éléments, comme le panier d'achat, les préférences de l'utilisateur, etc
OriginalL'auteur Yoann
pourquoi ne pas les stocker comme
$_SESSION[$uid] = $nom; $_SESSION[] = array('uid' => $uid, 'nom' => $nom);
alors vous pouvez simplement parcourir toutes les entrées..
ou
$_SESSION ne prend pas en charge des indices numériques
OriginalL'auteur sharpner