PHP / SQL - Code non fonctionnel (variable)
Résolu/Fermé
Utilisateur anonyme
-
Modifié le 9 mars 2023 à 07:34
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 14 janv. 2013 à 19:13
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 14 janv. 2013 à 19:13
A voir également:
- PHP / SQL - Code non fonctionnel (variable)
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
totof31
Messages postés
163
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
30 avril 2013
74
20 déc. 2012 à 09:05
20 déc. 2012 à 09:05
Bonjour,
Utiliser des sessions ne permet pas de partager toutes les variables, mais seulement la variable spéciale $_SESSION, de la façon suivante
$_SESSION['rank'] = 0;
print $_SESSION['rank'];
...
Utiliser des sessions ne permet pas de partager toutes les variables, mais seulement la variable spéciale $_SESSION, de la façon suivante
$_SESSION['rank'] = 0;
print $_SESSION['rank'];
...
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
20 déc. 2012 à 10:20
20 déc. 2012 à 10:20
Bonjour,
Petite explication générale.
Chaque page est indépendante.
Si l'utilisateur va sur une page, puis sur une autre (par un lien, ou directement en rentrant l'URL), la page nouvellement chargée est « neuve ».
Les variables ne sont pas transportées.
Il y a techniquement deux façons de porter une variable d'une page à une autre.
1 - Écrire ta variable en dur sur le serveur ;
2 - Transmettre ta variable au navigateur, qui lui-même la retransmettra à l'appel de la page suivante.
Le deuxième cas est à réserver aux variables non critiques, car tout ce que voit ton navigateur, l'utilisateur peut potentiellement le recréer. Ça peut être par exemple un formulaire (champ caché,
Dans ton cas, il faudra privilégier une écriture côté serveur.
Il y a plusieurs stratégies simples :
1 - Écrire en base de données.
Ça tombe bien, tu en as déjà une ! Quand tu passes dans paiement_accepte.php, tu enregistres que l'utilisateur en question est de rang 1 (table des utilisateurs...) éventuellement avec une date de péremption.
Ensuite, dans rank.php, tu lis la valeur de $rank dans la base de données.
2 - Utiliser les sessions.
Concrètement, une session, c'est quoi ? Le serveur attribue un numéro d'identification unique au navigateur, et écris « des choses » dans un fichier, sur le serveur, qui porte le nom de cet identifiant. À chaque fois que le navigateur communique avec le serveur, il lui redonne ce numéro (via un cookie, la plupart du temps).
Du coup le serveur peut enregistrer, d'une fois sur l'autre, certains paramètres.
Les sessions ont une durée de vie, généralement de 10 ou 15 minutes d'inactivité de l'utilisateur.
Ce qui signifie que la variable ne sera pas conservée au delà de ce délai.
En php, utiliser les sessions est relativement simple :
Puis
Après, il y a d'autres moyens... Tu pourrais écrire dans un fichier que tu gères toi-même... Mais c'est un peu réinventer la roue...
En espérant t'avoir aidé plutôt qu'embrouillé,
Xavier
Petite explication générale.
Chaque page est indépendante.
Si l'utilisateur va sur une page, puis sur une autre (par un lien, ou directement en rentrant l'URL), la page nouvellement chargée est « neuve ».
Les variables ne sont pas transportées.
Il y a techniquement deux façons de porter une variable d'une page à une autre.
1 - Écrire ta variable en dur sur le serveur ;
2 - Transmettre ta variable au navigateur, qui lui-même la retransmettra à l'appel de la page suivante.
Le deuxième cas est à réserver aux variables non critiques, car tout ce que voit ton navigateur, l'utilisateur peut potentiellement le recréer. Ça peut être par exemple un formulaire (champ caché,
<input type='hidden' name='rank' value='1' />, ou des paramètres dans des URL (liens du genre
href="rank.php?rank=1").
Dans ton cas, il faudra privilégier une écriture côté serveur.
Il y a plusieurs stratégies simples :
1 - Écrire en base de données.
Ça tombe bien, tu en as déjà une ! Quand tu passes dans paiement_accepte.php, tu enregistres que l'utilisateur en question est de rang 1 (table des utilisateurs...) éventuellement avec une date de péremption.
Ensuite, dans rank.php, tu lis la valeur de $rank dans la base de données.
2 - Utiliser les sessions.
Concrètement, une session, c'est quoi ? Le serveur attribue un numéro d'identification unique au navigateur, et écris « des choses » dans un fichier, sur le serveur, qui porte le nom de cet identifiant. À chaque fois que le navigateur communique avec le serveur, il lui redonne ce numéro (via un cookie, la plupart du temps).
Du coup le serveur peut enregistrer, d'une fois sur l'autre, certains paramètres.
Les sessions ont une durée de vie, généralement de 10 ou 15 minutes d'inactivité de l'utilisateur.
Ce qui signifie que la variable ne sera pas conservée au delà de ce délai.
En php, utiliser les sessions est relativement simple :
session_start();au début de ton code (pas forcément en première ligne, mais en tous cas avant d'envoyer la moindre donnée (genre echo...), pour des questions d'écriture de la réponse HTTP : en effet, les sessions utilisent les cookies, qui sont transmis dans les en-têtes de la réponse. Or si tu envoies d'abord un "echo", PHP commence la réponse, génère les en-têtes et les envoie... Ensuite, trop tard ! Les en-têtes sont déjà partis on ne peut plus les modifier / rappeler.
Puis
$_SESSION['rank'] = $rank;pour mettre une variable en session, et
$rank = $_SESSION['rank'];pour rappeler cette variable.
Après, il y a d'autres moyens... Tu pourrais écrire dans un fichier que tu gères toi-même... Mais c'est un peu réinventer la roue...
En espérant t'avoir aidé plutôt qu'embrouillé,
Xavier
Je suis désolé mais je n'ai pas tout compris.
Ne peux-tu pas me donner plus de précisions ?
Dans toutes tes informations, je ne sais plus ce que je dois mettre dans mySQL, dans paiement_accepte.php ou dans rank.php car la je ne comprends plus.
Peut-être est-ce trop demandé mais j'essaye : ne pouvez-vous pas me donner des codes faits car je sais pas coder le PHP, enfin le minimum, donc je préfère apprendre en lisant les codes et en les comprenant que de lire des longues phrases en français. Merci.
Ne peux-tu pas me donner plus de précisions ?
Dans toutes tes informations, je ne sais plus ce que je dois mettre dans mySQL, dans paiement_accepte.php ou dans rank.php car la je ne comprends plus.
Peut-être est-ce trop demandé mais j'essaye : ne pouvez-vous pas me donner des codes faits car je sais pas coder le PHP, enfin le minimum, donc je préfère apprendre en lisant les codes et en les comprenant que de lire des longues phrases en français. Merci.
Reivax962
Messages postés
3672
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
11 février 2021
1 011
20 déc. 2012 à 14:54
20 déc. 2012 à 14:54
Pour être plus précis, il faut que tu nous dises exactement ce que tu comptes faire.
Combien de temps veux-tu que le site se "souvienne" de qui a payer quoi ?
Est-ce que tu as déjà un mécanisme d'authentification ?
Combien de temps veux-tu que le site se "souvienne" de qui a payer quoi ?
Est-ce que tu as déjà un mécanisme d'authentification ?
Alors, déjà désolé de ne pas avoir été trop précis.
Donc je veux simplement que une fois avoir payé, que la personne soit VIP à vie (simple, non ?).
Il me suffit de créer un code PHP à mettre sur ma page paiement_accepte.php qui transforme le $rank == 0 (par défaut pour un user normal) en $rank == 1 (après avoir payé pour qu'il devienne VIP). Mais il faut que ceci s'applique à un utilisateur (celui qui paye et donc accède à paiement_accepte.php ) et cela pour tout le temps.
Et une fois sa fait (ce qui est loin de l'être T_T), il me faudrais un code pour qu'il n'y ai que les VIP qui puisse voir une certaine page.
Merci.
PS : qu'entends-tu par mécanisme d'authentification ? Je ne pense pas beaucoup t'aider et répondre à ta question, mais j'utilise un espace membre déjà fait, lien ici :
http://www.supportduweb.com/scripts_tutoriaux-code-source-84-espace-membre-en-php-mysql-utilisateurs-espace-membre-inscription-connection-sessions-php-mysql.html
Sachant que j'ai créer une autre table dans users avec ce code :
'rank' int(11) unsigned NOT NULL DEFAULT '0',
qui est à 0 pour un non VIP par défaut.
Donc je veux simplement que une fois avoir payé, que la personne soit VIP à vie (simple, non ?).
Il me suffit de créer un code PHP à mettre sur ma page paiement_accepte.php qui transforme le $rank == 0 (par défaut pour un user normal) en $rank == 1 (après avoir payé pour qu'il devienne VIP). Mais il faut que ceci s'applique à un utilisateur (celui qui paye et donc accède à paiement_accepte.php ) et cela pour tout le temps.
Et une fois sa fait (ce qui est loin de l'être T_T), il me faudrais un code pour qu'il n'y ai que les VIP qui puisse voir une certaine page.
Merci.
PS : qu'entends-tu par mécanisme d'authentification ? Je ne pense pas beaucoup t'aider et répondre à ta question, mais j'utilise un espace membre déjà fait, lien ici :
http://www.supportduweb.com/scripts_tutoriaux-code-source-84-espace-membre-en-php-mysql-utilisateurs-espace-membre-inscription-connection-sessions-php-mysql.html
Sachant que j'ai créer une autre table dans users avec ce code :
'rank' int(11) unsigned NOT NULL DEFAULT '0',
qui est à 0 pour un non VIP par défaut.
Désolé de reposter. Donc là j'ai réussit à mettre ce code qui permet de devenir VIP :
<?php
session_start();
include('config.php');
?>
<?php
$rank = $_SESSION['rank'];
$_SESSION['rank'] = 1;
?>
///// Vérification si sa marche /////
///// (doit afficher Tu es VIP) /////
<?php
if ($rank == 0)
{
echo "Tu n'est pas VIP !";
}
else
{
echo "Tu es VIP !";
}
?>
Le problème c'est que quand je vais sur une autre page avec ce code (ci-dessous), il affiche que je ne suis pas VIP. J'en conclu que ma variable $_SESSION['rank'] vaut 1 que sur la page que j'ai indiquée. Donc comment faire pour que $_SESSION['rank'] soit à 1 tout le temps juste pour cet user ?
<?php
if ($rank == 0)
{
echo "Tu n'est pas VIP !";
}
else
{
echo "Tu es VIP !";
}
?>
totof31
Messages postés
163
Date d'inscription
lundi 29 octobre 2012
Statut
Membre
Dernière intervention
30 avril 2013
74
20 déc. 2012 à 19:08
20 déc. 2012 à 19:08
Non, le
$rank = $_SESSION['rank'];
doit être fait avant le
if ($rank == 0)
!!!!!!!!!!!
$rank = $_SESSION['rank'];
doit être fait avant le
if ($rank == 0)
!!!!!!!!!!!
20 déc. 2012 à 18:52
20 déc. 2012 à 19:06