Bonjour,

J'ai fini de coder la partie espace membre de mon site et j'aimerais donc pouvoir intégrer des messages flash, j'utlise de l'ajax pour la communication avec mes différents script PHP.
Le problème c'est que dans le cas où la connexion à réussi je fais une redirection en Javascript vers ma page d'accueil et c'est justement une fois sur la page d'accueil que j'aimerais pouvoir afficher un message flash "Connexion réussi" par exemple.
J'y ai pas mal réfléchis et j'ai plusieurs questions sans réponse :

  • Comment je peux savoir que je suis sur la page d'accueil et que je suis ici suite à une connexion réussi (le but étant de ne pas afficher ce message à chaque fois qu'on va sur la home mais bien après la connexion).
  • Comment faire ça côté javascript pour par exemple appliquer un effet de disparition ?
  • Comment faire ceci sans faire du code "sale", mélanger du PHP avec du JS par exemple :
    <?php
    if($connected){
    echo "<script>MaSuperFonctionDeFlashMessage();</script>";
    }
    ?>
  • Comment faire ceci "maison", j'aimerais si possible ne pas a devoir utiliser une librairie toute prête me permettant d'avoir un module de flash message.

Merci d'avance pour votre aide.

2 réponses


Markus51
Réponse acceptée

Bonsoir,

Ce que je ferais à ta place, puisque tu as une redirection vers une page d'acceuil j'imagine que tu parles d'un serveur apache php (ou autre) qui renvoit une page HTML, ca serait de stocker tes flash messages en session dans un tableau et ensuite lors du retour vers l'acceuil lors de la création de ta vue d'afficher le tableau des flash messages (tout ou sur un type de message c'est toi qui filtre).

Ensuite pour faire apparaite et/ou disparaitre automatiquement là, et seulement là ca se passe en CSS et/ou JS pas avant. Tu appliques une classe qui a une transition avec un delay qui mène vers une opacité/display none ou tu réduis la hauteur pour un effet slide ou bien tu y dispose une croix pour fermer manuellement avec un petit fadeout puis remove en callback.

Pour la transition CSS, un truc dans ce genre :

animation: myAnimation 1s;
animation-delay: 10s;
animation-fill-mode:forwards;

myAnimation :
ce que tu veux, exemple 0 % -> 100 % opacity: 0; display: none;
(avec un remove eventuel du dom en js)

Je sais pas si tout est suffisament amené dans mes explications mais je pense que tu y verras plus clair si c'est bien la configuration que tu souhaites.

Bonne soirée.

Laznet
Auteur

L'idée de stocker le message flash dans un tableau est bonne, parce que qu'une fois le message affiché j'ai juste a détruire la session pour qu'il ne s'affiche plus.
Mais j'ai quand même l'impression que je vais avoir un problème quelque part, je vais te décrire le fonctionnement :
L'utilisateur se connecte (il a entrée ses identifiants et a cliqué sur le bouton Connexion), mon code envoi grâce à une requête Ajax les informations de connexion à un script PHP pour s'occuper du traitement, de son côté PHP lui vérifie que l'utilisateur existe etc... puis selon le résultat obtenu envoi une réponse, dans le cas où la connexion est considéré comme réussi je fais une redirection depuis mon javascript vers la page d'accueil.

Donc en imaginant que je stock un message de succès dans une session quand je considère ça comme réussi. Ça veut dire que sur ma page je peux faire une condition (si session est rempli alors afficher le message puis on vide la session pour que le message ne s'affiche plus), mais c'est là où je bloque, comment appliqué un effet de slide. Parce que si je fais un echo en PHP il faut que le javascript sache quand lancer l'animation...

EDIT, j'avais pas lu la fin de ton message, merci :D