php passage de variables - Programmation
Marsh Posté le 11-07-2001 à 14:20:57
Cookies !
DOC là : http://www.php.net/manual/fr/features.cookies.php
Marsh Posté le 11-07-2001 à 14:32:39
si les cookies sont desactives cela marche pas ?
et est ce que c'ets la meilleur solution pour faire utiliser le nom de l'utilisateur et le mot de passe?
les cookies marchent-ils dans tout les cas?
est-il possible de passer ces variables autrement que par cookies?
Marsh Posté le 11-07-2001 à 15:10:29
C'est sûr que çà marche pas si les cookies sont désactivés !
Sinon, faut que toutes tes pages se refillent les variables de page en page ou il utiliser les sessions.
Sessions DOC : http://www.php.net/manual/fr/ref.session.php
Marsh Posté le 11-07-2001 à 16:09:50
La super solution la plus mieux, c'est les sessions !
Mais j'ai jamais utilisé çà avec PHP, seulement en ASP.
Tu connais le principe ?
Marsh Posté le 11-07-2001 à 16:14:16
j'ai lu la doc mais c'est bien complique tout cela a gere moi je veux juste que des utilisateurs entre leur nom et mot de passe ce qui me permet d'ouvrir une liaison odbc avec ces paramètres
Marsh Posté le 11-07-2001 à 16:56:22
Te fache pas si tout çà t'es familier, c'est juste pour faire un récap de la situation !
Un peu de théorie donc :
Le protocole HTTP fonctionne en mode déconnecté, c'est à dire que le serveur réponds à une requête (demande de page web, d'image...) et se dépèche d'oublier qui la lui a demandée !
Il en résulte que si on veut garder de l'information d'une page à une autre, il faut que chaque page transmette cette information.
Pour cela, il y a 2 solutions:
Les variables en GET (Lien hypertext ou formulaire) donc codées dans l'url et visibles par l'utilisateur ou en POST (formulaire).
Les cookies.
Le mécanisme des sessions utilisent une de ces deux solutions.
Il permet de ne transmettre qu'une seule information (un ID de session) que le serveur utilise pour se remémorer toutes les autres. Imagine un site de e-commerce, il n'est pas pensable que chaque page transmette tout le contenu du caddie à chaque fois !
Le principe consiste donc à générer un identifiant (quelconque, mais unique) qui est atribué à un visiteur lors de sa première viste.
Si les cookies sont activé sur le navigateur, ils sont utilisés pour stocker cet identifiant, sinon, en général il est passé dans l'url d'une page à l'autre.
Cet identifiant est utilisé par le serveur pour référencer l'ensemble des informations que l'on doit garder sur le visiteur, d'une page à une autre.
En pratique, le visiteur demande une page et fournis un ID de session (par cookies ou url). Le script coté serveur récupère cet ID, et va chercher dans une base de donnée si cet ID existe. Si c'est le cas, il récupère les informations déja stockées, en stocke éventuellement d'autres ... et enfin fait sont boulot !
Ce mécanisme n'éxistait pas de manière native dans PHP3, mais chaque programmeur pouvait en mettre un en place si nécessaire.
Pour ton problème, tu peux essayer de réinventer la roue si tu trouve que les sessions de PHP4 sont trop compliquées.
Il te faudra donc :
Une tables des connexions avec:
ID ( pour les identifiant de sessions )
UserName
MotDePasse
DateHeure ( pour stocker l'heure de dernière visite )
Sur toutes tes pages (donc dans un include !) tu devra :
Vérifier qu'un ID a été reçu. Si ce n'est pas le cas, il faut rediriger vers la page qui demande le UserName et le MotDePasse. Cette page, une fois renseignée par l'utilisateur renvoie vers une page qui génère l'id et enregistre les informations en base.
Si il y a un ID, il faut aller lire les infos (user + pass) en base.
Il faut aussi faire un travail de nettoyage de la table des connexions, genre ; supprimer tout les enregs dont la DateHeure date de plus . . . d'un certain temp à déterminer.
En effet, tu sais quand un user arrive sur ton site, mais tu ne sais pas quand il part !
Ne pas oublier non plus dans chaque page de transmettre l'ID si c'est par url, il faut penser à tous les liens de la page !
Bon courage !
Marsh Posté le 11-07-2001 à 17:06:57
moi c'ets pas si complique que cela je veux rien tester du tout ej veux dans une page on puisse entrer le nom utilisateur et le mot de passe et que ej puisse le recuperer dans les autres pages c'est tt
mais je n'ai pas compris cet exemple
<?php
session_register("compteur" );
$compteur++;
?>
Salut visiteur, vous avez vu cette page <?php echo $compteur; ?> times.<P>
<php?
# le <?=SID> est nécessaire pour transmettre l'identifiant de session
# au cas oú les utilisateurs auraient inactivé les cookies
?>
Pour continuer, <A HREF="nextpage.php?<?=SID"?>clique ici</?>
Le <?=SID-> n'est pas nécessaire, si l'option --enable-trans-sid a été utilisé pour compiler PHP.
Note : Les URL absolues
t upeux m'aider???
Marsh Posté le 11-07-2001 à 17:21:55
Relis mon dernier message, et compare le à ton besoin !
C'est Exactement çà ! Tu as des infos à passer d'une page à une autre : le USER et le MOT de passe !
Met toi dans le crâne que c'est comme çà que çà marche !
Je sais bien que ton problème est simple, mais çà veux pas dire que la solution l'est !
Il y a une solution simple, c'est les cookies, mais il faut une condition que tu ne peux pas maitriser : le navigateur de ton visiteur doit les accepter !
Je sais pas où t'as pris ton exemple, mais à mon avis, y'en manque un bout !
Marsh Posté le 11-07-2001 à 17:26:55
il dise que ce'ts possible par url masi je n'y arrive pas
Marsh Posté le 11-07-2001 à 17:29:51
l'esmple se trouve dans le deuxième lien que tu m'as donne
exemple3
Marsh Posté le 11-07-2001 à 17:36:26
Par l'url, c'est possible, mais le user et le mot de passe sont alors visibles par l'utilisateur et il me semble avoir lu que cette solution ne te conviens pas !
Quoi qu'il en soit, il suffit de rajouter à la fin de chaque lien : ?user=$user&pass=$pass
Ou bien, si ta page contient un formulaire, tu ajoute 2 champs cachés :
echo( "<input type=hidden name=user value=$user>" );
echo( "<input type=hidden name=pass value=$pass>" );
Tu peut aussi les crypter, masi c'est une autre histoire...
Marsh Posté le 11-07-2001 à 18:07:19
Bon un exemple simple avec les sessions PHP4
Mais je pense qu'il utilise les cookies pour passer l'ID de session !
fichier acceuil.php :
Code :
|
fichier page1.php :
Code :
|
fichier page2.php :
Code :
|
Les vars global sont des variables visibles par toutes les focntions. Rien à voir avec ton PB.
[edtdd]--Message édité par Mara's dad--[/edtdd]
Marsh Posté le 12-07-2001 à 10:24:04
si je fait un tableau et je teste dans ce tableau le mot de passe et le nom est ce que la securite est bonne?
peut on acceder à un tableau?
Marsh Posté le 12-07-2001 à 10:48:17
Tu veux dire que les User et MotDePasse sont en clair dans ton script PHP ?
Point de vue sécurité, c'est pas trop un problème. S'ils était dans une BDD, il faudrait bien qu'un de tes scripts d'accès à la base ait en clair le user et le mot de passe !
Pour augmenter la sécurité, tu peux crypter les users et mots de passe (avec crypt()) avant de les mettre dans ton tableaux. Ensuite, quand un utilisateur se présente, tu crypte ce qu'il saisie, et tu cherche le résultat dans ton tableaux !
Comme crypt() est injective, il n'y a pas moyen de décrypter. Tout ce qu'on peut faire, c'est comparer deux chaînes cryptées pour vérifier qu'elles sont identiques. Celà implique que si un utilisateur à perdu sont mot de passe il faut lui en générer un autre, car l'ancien est irrécupérable !
Truc : Quand un mot de passe n'est pas bon, ne met pas un message du genre, "Le mot de passe ne correspond pas au user $user !", mais plutôt "Identification incorrecte, ressaisiez le User et le Mot de Passe.". Il faut éviter de faire comprendre à l'intru que le user qu'il à mit est bon et qu'il lui reste le mot de passe à trouver.
En revanche, pour la mise à jour, le tableau c'est pas trop cool, surtout si un utilisateur veux changer de mot de passe.
Marsh Posté le 12-07-2001 à 10:58:11
normalement il y a pas de personne qui peuvent se rajouter comme cela
comme cela si on doit rajouter une personne il faut aller sur le serveur et rajouter dans le tableau
Marsh Posté le 12-07-2001 à 11:35:46
Pourquoi pas !
Marsh Posté le 11-07-2001 à 13:51:59
je voudrais faire une page ou l'utilisateur entre son nom et son mot de passe puis que ces données puissent être utilisés deux pages plus loin coment puis je faire?