2012-05-01 3 views
2

J'écris du code pour permettre à l'utilisateur de réserver une table dans un restaurant. Mais mon client m'a demandé de permettre à l'utilisateur de choisir parmi le menu du restaurant certains articles, puis de revenir et de réserver la table. Si l'utilisateur ne veut pas choisir le menu, il peut simplement ignorer l'étape. Pour ce faire, j'ai juste imprimé un message "Voulez-vous choisir le menu?" puis un lien hypertexte vers la page du menu. J'ai utilisé l'événement iavascript onClick pour écouter si l'utilisateur a cliqué ou non et si je clique dessus, j'appelle une fonction setsession pour configurer ma session afin de suivre l'activité de mon utilisateur sur mon site web. J'ai déclaré ma fonction sur le haut de la page. J'aime-pourquoi je ne peux pas mettre la session en php?

<script> 
    function setsession(){ 
    <?php $_session['reservation']= TRUE; 
    } 
    </script> 
<form action="" method="post"> 
    <p>Do you want to choose menu? Then <a href="somepage.php" onClick="setsession()">Click here.</a></p> 
<p>rest of my code</p> 
<p>confirm to reserve.</p> 
<a href="javascript:{}" onclick="return Validate();submitform();">Confirm</a> 
</form> 

<?php if(isset($addnew) && !$error) ?> 
<div class="success"> 
<p>sucess</p> 
<?php $_SESSION['reservationprocess'] = FALSE;?> 
</div> 
<?php } ?> 

tout a bien fonctionné. Lorsque j'ai cliqué sur le lien hypertexte ma variable de session avec succès. Et quand j'ai cliqué sur le bouton de confirmation (le lien hypertexte ci-dessus), il stocke avec succès les données dans la base de données et réussit le succès du message et désactive la session.

mais le problème est que je ne sais pas comment et pourquoi ma session est à nouveau réglée. Combien j'ai essayé d'annuler ma session mais j'ai échoué. mon reste du code fonctionne bien et il n'y a pas de problème, autant que je sache. Je l'ai testé. Y a-t-il une solution de la part des experts? Merci d'avance.

+3

Avez-vous appelé 'session_start()' en haut de la page? –

+0

oui. mon site a un système de connexion. – maksbd19

+1

Couple de choses .. le PHP est évalué sur le serveur avant le rendu du javascript. Je ne suis pas sûr que vous pouvez mettre à jour une variable php basée sur une condition javascript. Deuxièmement, votre première balise

Répondre

0

Désolé de vous déranger à nouveau. Mais cette fois, ne pas poser une question novice, mais répondre à ma propre question.

Tout d'abord, je vais écrire ma question en bref. Je voulais attraper un événement et je voulais utiliser l'événement pour stocker de la valeur dans ma session pour reconnaître cet événement dans le reste de mon site à moins que la session ne soit détruite d'une manière ou d'une autre. Toutes les variables utilisées dans le fichier .php stockent des valeurs dans celles-ci et exécutent toutes les opérations lorsqu'elles se trouvent sur le serveur. Le navigateur affiche le résultat. Comment peut-on s'attendre à ce qu'un utilisateur fasse quelque chose [dans mon cas cliqué] et il stocke simplement une valeur dans une variable php alors qu'il n'y a pas de variables php dans le navigateur. Alors que pouvons-nous faire est de simplement stocker le résultat dans une variable javascript ou retourner au serveur et définir la valeur à la variable. Pour appeler le serveur en utilisant ajax est une méthode d'experts et honnêtement je ne sais pas grand-chose. Je devais donc chercher quelque chose que je connais déjà.Bien sûr, basé sur PHP. Enfin j'ai eu le COOKIE. Pour attraper l'événement, il est évident d'utiliser javascript. J'ai utilisé un écouteur d'événement en utilisant jQuery et à l'intérieur je stocke une valeur dans le cookie de mon navigateur. puis utilisé à la fois javascript et php pour vérifier le cookie dans mon site Web. Ceci a un repli. Si l'utilisateur désactive le cookie, vous n'aurez pas la possibilité de l'utiliser.

1

Il est assez peu naturel, mais pour détruire la session, vous devez vous assurer que vous avez déjà appelé session_start() auparavant.

Pour détruire la session, vous ne pouvez pas le faire dans cette fonction JavaScript. Vous aurez besoin de faire une requête HTTP au serveur, cette requête devra alors déclencher une fonction 'PHP' supprimant votre session.

A la lecture de votre commentaire sur le post ci-dessous, je suppose que vous voulez seulement supprimer une seule variable de la session. Peut-être essayer ceci:

session_start(); 
unset($_SESSION['reservationprocess']); 
+1

Si PHP n'a pas démarré la session, comment connaitrait-elle la session à détruire? C'est pourquoi vous devez commencer en premier. –

+1

De javascript suffit de supprimer le cookie PHPSID. – Pablo

+0

@Pablo, cool Je ne l'ai jamais essayé de cette façon. – Jack

0

séance doivent être initialisés (s'il n'y a pas d'initialisation avant) session_start() va faire, et une autre astuce est d'utiliser session_destroy() istead unset.

+0

Je ne veux pas détruire toute ma session parce que j'ai besoin de mon système de connexion pour fonctionner. Je veux juste annuler cette variable $ _SESSION ['reservationprocess']. Merci. – maksbd19

+0

Merci à tous. J'ai découvert où était mon problème. J'ai essayé de mettre la session quand ce n'est pas dans le serveur, c'est déjà dans mon navigateur. C'est pourquoi combien j'ai essayé je n'ai pas pu définir sa valeur. Seulement comme je peux le faire, par un ajax. J'y travaille. Quand j'aurai ma réponse, je partagerai avec vous. Merci – maksbd19

0

Ce que vous devez faire ici est de déplacer cet appel:

<?php $_session['reservation']= TRUE;?> 

.. à votre page de menu. Ainsi, lorsque la page de menu charge cette session est définie. Lorsque vous avez terminé, vous pouvez désactiver la variable avec session_destroy().

+0

Merci. Mais je dois définir cette session uniquement lorsqu'un utilisateur clique sur mon lien. – maksbd19

+0

Donc, vous dites que la page Menu est accessible à partir d'autres parties du site? Vous pouvez ajouter un champ masqué au tableau $ _POST qui spécifie que ce lien a été cliqué puis configurer la variable de session. Vous pouvez le faire quand vous voulez. Je dis simplement que je ne ferais pas comme vous le faites. –

0

Je ne sais pas pourquoi avez-vous une variable de session dans le script sans raison? Deuxièmement, je pense que lorsque vous chargez votre page, votre variable est assignée et c'est peut-être la raison pour laquelle elle se redéfinit. mettre une sorte de contrôle lors de l'initialisation ou de l'assignation de votre variable.

Questions connexes