PHP / SQL - Code non fonctionnel (variable)
RésoluReivax962 Messages postés 3672 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Tout d'abord voici tous mes codes :
config.php :
<?php
session_start();
mysql_connect('mysql2.alwaysdata.com', 'Utilisateur', 'mdp');
mysql_select_db('base-de-donnee');
$mail_webmaster = 'mail';
?>
rank.php :
<?php
include('config.php');
?>
<?php
if ($rank == 0)
{
echo "Tu n'est pas VIP !";
}
else
{
echo "Tu es VIP !";
}
?>
paiement_accepte.php :
<?php
include('config.php');
?>
<?php
$rank = 1;
?>
Voilà.
Donc ce que je veux faire est simple : je veux que quand une personne paye 1 allopass par exemple, que cette personne soit rediriger vers la page paiement_accepte.php (sa je l'ai fait)
Donc au début son rank était de 0. Et quand elle paye son rank devienne 1.
Sur rank.php ,Et donc que si son rank est 0, cela affiche quelque chose (ici, Tu n'es pas VIP), et aussi que sa affiche quelque chose si elle est VIP (ici, Tu es VIP).
Mais j'ai essayé avec la fonction echo d'afficher si oui ou non elle est VIP, mais il m'affiche que je suis pas VIP avant d'avoir été sur la page paiement_accepte.php (normal) mais même après y avoir été on m'affiche que je ne suis pas VIP. Aidez-moi :'(
- PHP / SQL - Code non fonctionnel (variable)
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
2 réponses
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'];
...
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
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.
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 !";
}
?>