Bonjour,
(j'ai repost ce sujet ici, que j'ai placé il y a quelques jour de sa dans la catégorie Javascript, dans le but d'avoir plus d'entraide à ce sujet car je n'ai toujours pas eut de réponse dans l'autre catégorie, peut être que je n'étais pas placé au bon endroit car celà pourrai plus concerner plus le PHP que je Javascript )

Je suis actuellement en train de créer un petit site, mais je suis bloqué, je rencontre actuellement un problème dont je n'ai pas encore trouvé la solution depuis 3 jours de recherche déjà.

Je m'explique : J'ai conçu un formulaire d'inscription complet en PHP (ref: tuto créer espace membre n°1), et j'aimerai que quand l'utilisateur valide le formulaire d'inscription en PHP, qu'après la redirection sur la page de connexion (qui se trouve sur la même page, car l'inscription et la connexion est placé sur la même page) qu'il y ai une notification qui s'affiche (ref: Tutoriel Jquery : système de notification) comme quoi l'email de confirmation a bien été envoyé.

Mon code PHP fonctionne correctement, et mon code JS fonctionne correctement mais quand je combine les deux, il n'y a que la requête PHP qui est prit en compte, je reçois l'e-mail, la redirection a bien eut lieu mais la notification n’apparaît pas

if(!empty($_POST)){

        /*Du code PHP  */

        if(empty($errors)){
            /*Du code PHP  */
            mail("test@test.com", "Confirmez votre inscription sur le site", "$message", $header);
            header('Location : login.php')
                ?>
                <script>

                (function(event){
                $('body').notif({title:'Email envoyé', content:'Vous recevrez un email contenant le lien de confirmation de votre compte', icon: '<div class="icon"/>', cls:'success'});
                })(jQuery);

                </script>
            <?php
            exit();

        }else{ 
                        ?>

            <script> 
            (function(event){
            $('body').notif({title:'Erreur', content:'Le lien de confirmation de votre compte ne peut vous être envoyé', icon: '<div class="icon"/>', cls:'error'});
            })(jQuery);
            </script> 

                        <?php
        }
    }
    ?>

Côté Js :

(function($){

    $.fn.notif = function showNotification(options){

        var options = $.extend({
            html : '<div class="notification animated slideInDown {{cls}}">\
                <div class="left">\
                    <div class="icon">\
                    {{{icon}}}\
                    </div>\
                </div>\
                <div class="right">\
                    <h2 id="notif-title">{{title}}</h2>\
                    <p id="notif-content">{{content}}</p>\
                </div>\
            </div>'
        }, options);

        return this.each(function(){
            var $this = $(this);
            var $notifs = $('> .notifications', this);
            var $notif = $(Mustache.render(options.html, options));
            if($notifs.length == 0){
                $notifs = $('<div class="notifications"/>');
                $this.append($notifs);
            }
            $notifs.append($notif);
            $notif.click(function(event){
                event.preventDefault();
                $notif.addClass('slideOutUp').delay(300).slideUp(300, function(){
                    $notif.remove();
                })
            })

        })

    }
})(jQuery);

J'ai déjà essayé avec la redirection avant le script JS, après le script JS, appler la fonction avec la ligne : echo '<script></script>'; :

if(!empty($_POST)){

        /*Du code PHP  */

        if(empty($errors)){
            /*Du code PHP  */
            mail("test@test.com", "Confirmez votre inscription sur le site", "$message", $header);
            header('Location : login.php')
            echo '<script>showNotification();</script>';
            exit();

        }else{ 
                        ?>

            <script> 
            (function(event){
            $('body').notif({title:'Erreur', content:'Le lien de confirmation de votre compte ne peut vous être envoyé', icon: '<div class="icon"/>', cls:'error'});
            })(jQuery);
            </script> 

                        <?php
        }
    }
    ?>

et 6 ou 7 autres façon de ré-organiser le script de façon à ce que sa marche mais j'ai pas réussis à trouver une solution. Merci de votre aide !

3 réponses


Defy
Réponse acceptée

tu peut essayer de passer par un systeme d'inscription en ajax, ca te permet d'avoir de l'asynchrone et de gerer plus facilement l'affichage de notification sur le front de ton site.

Lartak
Réponse acceptée

Bonjour.
Techniquement, tu ne peux pas exécuter de code Javascript après avoir fait une redirection de cette manière.
Si tu veux que du code Javascript soit exécuté après une redirection, il faut que le code Javascript soit présent dans la page cible et non dans la page qui fait la redirection.
Au passage, tu ne devrais pas oublier de fermer tes instructions PHP avec des ;, car tu n'en as mis après aucun de tes header().

Merci beaucoup à vous, Defy et Lartak (oui, petite erreur de syntaxte qui survient lors de la fatigue)
Le sujet est donc clos !