La définition de Plusieurs Cookies en PHP
Merci de nous aider avec ceci.
J'ai un script qui vérifie les connexions et définit certains cookies. Il y a 4 cookies qui sont à l'étude (plus tard, je vais probablement déplacer certains de session sur le serveur, mais pour l'instant je suis en utilisant des cookies.
Le problème que je rencontre est que seuls les 2 premiers de la 4 sont mis en avant que le reste du script est en cours d'exécution. Peut-on savoir pourquoi?
//If there is a row, and only 1 row, then the details are correct. Set the cookie and re-direct
$row = mysqli_fetch_array($data);
setcookie('user_id', $row['User_ID'], time()+ (60*15),"/");
setcookie('user_name', $row['UserName'], time()+ (60*15),"/");
setcookie('access_Level', $row['Access_Level'], time()+ (60*15),"/");
setcookie('db_con', $row['Db_Con'], time()+ (60*15),"/");
$home_url = $link . "application/views/Dashboard.php";
header('Location: ' . $home_url);
Dont deux ne sont pas définies?
Aussi, si la valeur de la configuration de l'cookie est vide ou nulle, il ne va pas créer le cookie.
Les deux qui SONT de travail sont user_id et user_name. Les informations de la base de données est en cours de réception (et peut-être l'écho des caractères) @ Michael, le niveau d'Accès est tout simplement un nombre de 1 à 5, qui permet aux utilisateurs de contrôler les capacités des autres membres de leurs profils, mais je vais passer beaucoup de ces à la session que je n'ai pas besoin de la persistance vraiment.
Comment êtes-vous de la vérification pour déterminer s'ils sont ensemble ou pas? Êtes-vous de vérifier dans le navigateur? Par exemple, Firefox vous permet de voir les témoins d'une page par un clic droit sur la page,
Ouais je suis vérification à l'aide de Firefox et Chrome, qui montrent les deux premiers mais pas les deux derniers. Aussi mon application ne peut pas y accéder si nécessaire. bonne prise sur le boîtier tho, Bien que je n'ai pas mis en œuvre les access_level chose, il doit être le même boîtier.
Aussi, si la valeur de la configuration de l'cookie est vide ou nulle, il ne va pas créer le cookie.
Les deux qui SONT de travail sont user_id et user_name. Les informations de la base de données est en cours de réception (et peut-être l'écho des caractères) @ Michael, le niveau d'Accès est tout simplement un nombre de 1 à 5, qui permet aux utilisateurs de contrôler les capacités des autres membres de leurs profils, mais je vais passer beaucoup de ces à la session que je n'ai pas besoin de la persistance vraiment.
Comment êtes-vous de la vérification pour déterminer s'ils sont ensemble ou pas? Êtes-vous de vérifier dans le navigateur? Par exemple, Firefox vous permet de voir les témoins d'une page par un clic droit sur la page,
View Page Info
, Security
onglet, View Cookies
bouton. La raison pour laquelle je dis cela est que la access_Level
clé ne correspond pas à la clé d'autres corps (tout en minuscules lettres initiales). De sorte que vous pourriez être à la recherche de quelque chose de mal.Ouais je suis vérification à l'aide de Firefox et Chrome, qui montrent les deux premiers mais pas les deux derniers. Aussi mon application ne peut pas y accéder si nécessaire. bonne prise sur le boîtier tho, Bien que je n'ai pas mis en œuvre les access_level chose, il doit être le même boîtier.
OriginalL'auteur Paul Chambers | 2011-07-17
Vous devez vous connecter pour publier un commentaire.
À l'aide de:
http://jfcoder.com/test/setcookie.php
Dans Firefox, je vérifie pour voir les cookies pour une page en cliquant-droit sur la page,
View Page Info
,Security
onglet,View Cookies
bouton. Tous les quatre témoins apparaître sur cette page dans mon navigateur. Le dernier n'a pas (puisqu'il est n'a pas de valeur).Je suis penser que votre colonne les noms ne sont pas précisés/capitalisés correctement, ou de quelque autre problème, et que
$row['Access_Level']
et$row['Db_Con']
sont des colonnes vides dans votre suite.Je n'ai aucune idée de comment je l'ai fait! mais j'ai déplacé le "Db_Con" à une autre table (comme j'allais le faire quand même) et ré-écrit la requête afin d'inclure une jointure interne et hop le tout fonctionne... doit avoir été une faute de frappe quelque part que je ne vois pas!!!
Ma conjecture est que ce
$row
avait en pour que column_name était vide ou nulle, de la signification de la requête ne retourne pas ce que vous pensiez que c'était (sans se soucier de ce qui était à la base de données).OriginalL'auteur Jared Farrish
Tout d'abord, la question évidente: Avez-vous essayé de copier les variables que vous êtes en train d'enregistrer des cookies, et les coller dans un
print_r()
déclaration, de sorte que vous pouvez prouver qu'ils ont les valeurs que vous attendez. Il est possible que vous fait une faute de frappe ou incorrect de capitalisation, ou quelque chose de similaire.La prochaine chose à vérifier sont les valeurs de ces variables. Vous n'avez pas spécifié les valeurs possibles pour
Access_Level
etDb_Con
, mais si elles sont définies àfalse
ou vide, alors le cookie sera effacé, plutôt que d'être fixé à cette valeur. C'est rare d'être ce que vous voulez.Si ce n'est pas le problème, un autre problème (bien que j'en doute, dans ce cas) est le total de la longueur de vos cookies. Un site ne peut servir un maximum de 4 ko dans son cookie chaîne. Si vous êtes en utilisant l'encodage UTF-8 (ce qui est recommandé), cela signifie qu'environ un millier de caractères, y compris tous les noms de champ et la mise en forme du cookie de la chaîne, ainsi que les valeurs. Cookies au-delà de cette longueur ne seront pas enregistrées. Il ne ressemble pas c'est votre problème ici, mais je suppose que c'est possible, vous êtes au service des autres témoins ainsi que de ces quatre, ce qui pourrait être pencher la balance.
Je voudrais également fortement recommandé de ne pas utiliser les cookies pour les sortes de données que vous utilisez pour ici.
Il est important de savoir que les cookies sont une grande insécurité des moyens de stockage de données. Ils peuvent être espionné par des tiers, et sont facilement manipulés. Si votre site est en s'appuyant sur
Access_Level
pour être précis dans la suite du chargement de la page et de l'est de l'utiliser pour décider si ou de ne pas accorder l'accès à certaines pages, vous avez donné votre site un massive trou de sécurité.Deuxièmement, les Cookies sont inefficaces. L'ensemble du cookie de la chaîne est envoyée dans les deux directions pour chaque requête faite au serveur. Cela inclut les graphiques et autres fichiers qui ne sont pas en mesure de les affecter. Donc, si une page a un nombre important d'images, feuilles de style css et des fichiers javascript qu'il charge, alors vous allez être l'envoi de tous vos cookies en haut et en bas du fil, éventuellement, des dizaines de fois à chaque fois que l'utilisateur passe à une nouvelle page.
Je recommande l'utilisation de sessions PHP au lieu de. Accordée, ils utilisent également un cookie, mais il ne contient pas toutes les données qui peuvent être facilement modifiés et il n'est qu'un seul cookie variable, de sorte qu'il minimise ces deux questions. Il est aussi très facile à utiliser.
Espère que ça aide.
OriginalL'auteur Spudley