php cookies de session et des variables et de l'adresse ip
J'ai posté une question similaire avant, mais n'a jamais vraiment eu une réponse qui m'a aidé, donc je suis à la recherche d'essayer de nouveau. Comme un avertissement, je sais que beaucoup de l'information ici ne suit pas parfait pratiques de codage, mais c'est à des fins d'exercice seulement. J'ai essayé un million de choses et rien ne semble fonctionner car je ne suis pas vraiment sûr où tout devrait aller! J'ai désespérément besoin d'une certaine (de tout!) aider donc merci d'avance si vous pouvez offrir quoi que ce soit!
Je suis en train de créer un formulaire simple /page qui utilise une base de cookie de session et des trucs pour produire certaines données spécifiques à l'utilisateur. Je marche bien jusqu'à ce que je suis tombé sur quelques problèmes que je n'arrive pas à comprendre. Sur ma première page, tout est bon, sauf pour je veux juste le NOM du navigateur de l'utilisateur. (par exemple, je veux juste le simple titre: Firefox au lieu de l'ensemble de la version longue du navigateur.) Je l'ai vu faire donc je pense que c'est possible, je ne sais pas comment le faire!
Mes vrais problèmes viennent juste ici, parce que je ne suis pas exactement sûr de la façon de stocker l'adresse IP, le navigateur info et la date/heure actuelle (qui je veux indiqué à la page 2) que les variables de session. Essayé quelques choses que j'ai trouvé, mais je ne pense pas que j'étais en train de faire.
J'ai aussi travaillé sans cesse à essayer de stocker le nom d'utilisateur et les mots de passe des deux témoins chacun...des suggestions? Enfin, que dois-je faire pour avoir un endroit de l'en-tête (utilisé pour appeler form_data.php) avec le tampon de sortie?
(Pas sûr que ce sera utile, compte tenu que je l'ai probablement fait tout de travers! LOL) C'est totalement un stripped-down version de mon code. Essayé de poster ma propre version, même si elle n'a pas beaucoup d'infos, de sorte que vous pouvez facilement voir ce que j'essayais de faire.
principal fichier de code:
<?php
header('Location: form_data.php');
setcookie('username', $_POST['username']);
setcookie('password', $_POST['password']);
//I know this isn't working.
//honestly I just left this in here as to show where I had been
//trying to save the cookie data. Pretty obvious how bad my
//trial and error with this went!
}
?>
<?php
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
echo " By the way, your IP address is: </b>".$_SESSION['ip']."<br />";
echo " You already know this, but the browser you are currently using
to view this page is:<br/>"; //What is the correct function that I should be using here?
echo "<form action=\"form_data.php\" method=\"post\">";
echo "username:<input type=\"text\" name=\"username\" size=\"20\" value=\"\"><br/>";
echo "password:<input type=\"password\" name=\"password\" size=\"20\" value=\"\"><br/>";
echo "<input type=\"submit\" value=\"Submit, please\" />";
echo "<br /><input type=\"hidden\" name=\"submitted\" value=\"true\" />";
?>
form_data.php
<?php
echo "Hello, ".$username;//I'm trying to get the cookie data for the username
echo "Your password is ".$password; //Samething here (want cookie data)
echo "The date and time you entered this form is: ".date("F j, Y")." -- ".date("g:i a");
echo "<br/>Your IP:".$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
echo "<br/>Your broswer:".;//I want full broswer data here...dont know how to do it.
//Overall, was this the way to get the session variables for IP, date/time and browser?
echo "Thank you for filling out this form!";
?>
N'utilisez pas de
setcookie
, jamais. Il suffit de toujours utiliser $_SESSION
et de conserver toutes les données relatives à la session sur le serveur. Le seul témoin que le client a besoin est le cookie de session, et vous n'avez pas à manipuler explicitement (à l'exception de la régénération de la une fois si la connexion réussit à éviter la fixation).SB Cookies sont encore utiles à persister non sensibles au-delà de la durée de vie du serveur de session. Ils servent un autre but que celui de
$_SESSION
.OriginalL'auteur clk | 2011-06-28
Vous devez vous connecter pour publier un commentaire.
Pour obtenir le navigateur, utilisez la
get_browser()
fonction:Votre session et cookie de stockage ne marchera jamais parce que vous faites un
header("Location");
appeler avant de tenter de définir des cookies. Vous ne pouvez pas envoyer de sortie avant de mettre les cookies ou l'établissement d'une session.Avant toute sortie à l'écran, appel
session_start()
;ADDENDUM après les commentaires
Pendant que vous travaillez, assurez-vous que PHP affiche toutes les erreurs à l'écran. Assurez-vous d'éteindre
display_errors
lorsque votre code va à un serveur public.Pour récupérer des valeurs de cookies comme vous l'avez dit dans votre question, vous ne savez pas comment faire, utilisez la
$_COOKIE
superglobale:Essayer d'intégrer mon code dans le vôtre. Le plus important à se rappeler est d'appeler
session_start()
en haut de chaque page. Ensuite vous aurez accès à quoi que ce soit vous qui y sont stockées via$_SESSION
. Assurez-vous que vous avez activé ladisplay_errors
(voir ci-dessus) pendant que vous travaillez de sorte que vous pouvez voir ce qui ne fonctionne pas et pourquoi.OriginalL'auteur Michael Berkowski
Séances de n'utiliser les cookies sous le couvercle(seul magasin session_id à l'intérieur de cookie/set_cookie) et je vous conseille d'utiliser uniquement des séances, car les cookies peut entraîner une fuite de l'information(stocker toutes les informations à l'intérieur de cookie sur l'ordinateur de l'utilisateur), ce qui pourrait être dangereux tandis que la séance utilise le serveur de système de fichiers/base de données ou ce que vous voulez quand vous remplacez session_set_save_handler.
Comme Michael dit que vous pouvez utiliser get_browser:
Comme la page PHP, dit-il tente de déterminer et vous devriez PAS s'appuyer sur ces informations pour quelque chose d'important, car il peut être mal(vous pouvez tromper le système, si vous le souhaitez). Ce que je veux dire, c'est que vous ne devriez pas l'utiliser pour valider la preuve de quelque chose.
Plus d'informations à récupérer l'adresse IP peut être lu ici(proxy-serveur pourrait vous induire en erreur un peu peut-être?). Pour stocker de l'information juste de le stocker à l'intérieur d'une session, d'abord par l'émission
session_start()
en haut de chaque page(avant de sortir quoi que ce soit) qui veut des sessions d'utilisation(seulement ceux à ne pas placer des cookies sur chaque page, ce qui rend la page un peu plus lent) et le magasin suivant l'heure actuelle à l'intérieur d'une variable de session par faire quelque chose le long des lignes de$_SESSION['time'] = date(DATE_RFC822);
. Vous pouvez en lire plus à propos de la récupération de l'heure à date() page.De sorte que le code sur
page 1
ressemble à quelque chose comme:Puis sur
page 2
vous pouvez récupérer cette information en utilisant quelque chose comme:Ne pas les stocker dans un cookie(uniquement à l'aide de set_cookie et de ne pas utiliser les sessions pour stocker de l'information), mais de les stocker à l'intérieur d'une session pour plus de sécurité. Mais les sessions sont également vulnérables à fixation de session donc après le stockage de quelque chose de critique à l'intérieur de votre session, vous devriez régénérer l'id de session et jamais sortie/afficher que des informations sur le navigateur de l'utilisateur afin de prévenir toute fuite.
Comme Michael a dit, vous devriez être en utilisant l'en-tête fonction et sortie de résilier le script après que
P. S: ne Jamais stocker tout vraiment informations de carte de crédit(via paypal ou quelque chose) que des chiffres ou quoi que ce soit dans votre propre base de données. Aussi je vous conseille de ne pas stocker les mots de passe à l'intérieur de votre base de données, mais d'utiliser quelque chose comme openId(Google) par exemple pour gérer votre authentification pour la sécurité supplémentaire.
getRealIpAddr();
, l'usurpation d'identité l'HTTP_CLIENT_IP ou HTTP_X_FORWARDED_FOR est trivial. Et donc$_SERVER['REMOTE_ADDR']
est plus sécurisé. Ou garder une trace de tous les trois valeurs.. de sorte que vous pouvez forcer la ré-authentification de tout changement.OriginalL'auteur Alfred