IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Gerer la redirection par lien "a href" et par redirection automatique


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut Gerer la redirection par lien "a href" et par redirection automatique
    Bonsoir,

    Je rouvre un nouveau sujet parce que l'autre est résolu et aussi parce que le sujet est différent.
    Quand on clique sur OK dans mon formulaire, un popup s'ouvre pour dire que le message est bien envoyé et une redirection est faite vers ma page d'accueil.

    J'ai également fait en sorte que si on clique sur envoyer du formulaire, on arrive sur un page qui dit que le message est bien envoyé et il y a un lien qui permet de retourner sur la page d'accueil.

    Je souhaiterais que la solution du lien ne se passe que si l'utilisateur n'a pas le javascript d'utiliser ou qu'il l'a désactivé sur son navigateur.

    Je pense qu'un if doit inclure toute la solution ci dessous mais je ne vois pas qu'elle condition mettre.

    POuvez vous m'aider?

    Je joins le code qui fonctionne. Je précise que si je laisse les lignes avec le lien à cliquer, la popup et la redirection automatique ne fonctionne plus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo '<p>'.$message_envoye.'</p>'."\n";	
    				echo '<p>'.$redirection_validation.'</p>'."\n";			
    				echo "<script language='Javascript'> window.open('/pictures/contact/popup.jpg','validation_formulaire','width=369,height=150','resizable=no','scrollbar=no')</script>";
                    echo "<script language='Javascript'>document.location='http://mon_site/accueil.html'</script>";
    Les 2 variables que j'utilise : $message_envoye et $redirection_validation sont définies comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $message_envoye = "Votre message a bien été envoyé ! Je vous répondrai dans les plus bref délais";
    $redirection_validation = " Cliquez sur ce lien pour être redirigé vers la page d'accueil <a href=http://mon_site/"accueil.html">Page d'accueil </a>.";
    Merci beaucoup

  2. #2
    Membre expert
    Avatar de Dendrite
    Femme Profil pro
    Développeuse informatique
    Inscrit en
    Juin 2008
    Messages
    2 129
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 58
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeuse informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2008
    Messages : 2 129
    Points : 3 628
    Points
    3 628
    Billets dans le blog
    8
    Par défaut
    Bonjour Princesse

    Avant de te répondre, je suis allée voir ton fil antérieur.

    http://www.developpez.net/forums/d69...on-formulaire/

    Je vais être franche, je me demande un peu si on ne t'a pas mal aiguillée au départ :

    Je m'explique, tu arrives avec une problématique PHP, on te dit que pour ça, faut javascript, tu te lances dans js, puis tu reviens... en nous disant "Mais si js est désactivé, je veux faire ça"...



    Du coup, j'ai envie de reprendre un peu ton problème tel que tu le présentes sur le fil d'avant... Et voici ce que je te conseille, tout en PHP :

    Disons que tu as une page index.php et que tu boucles quel que soit le cas de figure sur ta page avec ton formulaire. Pour ce genre de trucs qui font vite des noeuds, voici ce que je fais toujours, une structure de ce type :
    D'abord remonte de la condition la plus avancée vers la moins avancée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    //les conditions en remontant
    if(isset($_POST['submit'])){
    $cas='envoimail';
    }
    //l'écran d'arrivée avec son form
    else{
    $cas='debut';
    }
    //les procédures dans un switch
    //On remet tout "à l'endroit"
    switch($cas){
    case 'debut':
    echo'<html>
    <head><title>Mon titre</title></head>
    <body>
    <form method="post" action="index.php">
    Votre sujet : <input type="text" name="subject"/><br/>
    Votre message : <input type="textarea" name="message"/><br/>
    <input type="submit" name="submit" value="ok"/>
    </form>
    </body>
    </html>';
    break;
    case 'envoimail':
    $cible='princesse@sonfournisseur.fr';
    $subject=$_POST['subject'];
    $message=$_POST['message'];
    mail($cible, $subject, $message);
     
    echo'<html>
    <head><title>Mail envoyé</title></head>
    <body>
    <p>Merci de votre message !</p>
    <p>Nous le lirons avec attention.</p>
    </body>
    </html>';
    // Refresh et redirection
    echo'<META HTTP-EQUIV="Refresh" CONTENT="2;URL=monAutrePage.php">';
    }
    ?>
    Ainsi le client voit deux "pages", mais toi, tu es resté sur index tout le long, en "cloisonnant" deux procédures... Une redirection finale au bout de 2 secondes, sans javascript...
    Mais bon, j'ai peut-être lu trop vite ta problématique...

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2008
    Messages
    221
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 221
    Points : 104
    Points
    104
    Par défaut
    Alors en fait, oui c'est un peu compliqué.... Je m'explique
    J'ai une page .html qui contient mon formulaire et une page .php qui gère les variables du formulaire et du coup l'envoi du formulaire vers ma boite mail. Tout cela fonctionne à merveille. Dès que le user clique sur envoyer dans mon formulaire, ca redirige vers la page d'accueil de mon site et ca ouvre un pop up disant que le message a bien été envoyé.

    Seulement j'ai lu sur internet que certaines personnes désactivées le javascript sur leur navigateur. Du coup ce que j'ai fait en JS (à savoir rdirection et popup) ne fonctionnera pas.

    J'ai donc eu l'idée pour ces utilisateurs, quand il clique sur envoyer du formulaire, ca ouvre une page qui dit message envoyé et il y a un lien qui permet de retourner sur la page d'accueil. J'avais pensé à la redirection automatique sans JS mais je sais pas le faire.

    Et donc mon problème c'est que si j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    echo '<p>'.$message_envoye.'</p>'."\n";	
    				echo '<p>'.$redirection_validation.'</p>'."\n";			
    				echo "<script language='Javascript'> window.open('/pictures/contact/popup.jpg','validation_formulaire','width=369,height=150','resizable=no','scrollbar=no')</script>";
                    echo "<script language='Javascript'>document.location='http://mon_site/accueil.html'</script>";
    du coup le popup et la redirection ne marche plus.
    Y a t-il un moyen de gérer ça avec un if disant si le user n'a pas javascript sur son navigateur alors la page avec le lien s'affiche sinon s'il possède JS, la redirection et le popup fonctionne.

    Je sais pas si je suis très claire

    Merci d'avance

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 838
    Points
    2 838
    Par défaut
    Tu fais pointer ton <form> vers la page php (normal jusque là), cette page ne doit contenir aucun "design", à la fin si le mail a bien été envoyé tu écris :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    header("Location: index.php?showpopup=1"); // normalement ça devrait te retourner à la homepage de ton site
    // sinon tu peux écrire :
    // header("Location: maPage.php?showpopup=1");

    ensuite sur ta page d'accueil, tu fais un check JS
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <script type="text/javascript">
    var popup = <?php $_GET['showpopup']; ?>;
    if( popup == 1 ) {
        // --
        // on affiche la popup
    }
    </script>
    <?php
    // -- 
    // tu peux refaire un header("Location: page_home.php"); ici si tu veux pas garder l'URL moche "index.php?showpopup=1" ^^
    ?>

Discussions similaires

  1. Réponses: 10
    Dernier message: 28/02/2006, 21h21
  2. passer d'une cellule d'un tableau a une autre par lien hyper
    Par jack_1981 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 12
    Dernier message: 28/12/2005, 14h53
  3. Réponses: 4
    Dernier message: 09/11/2005, 18h44
  4. Ouvrir un fichier Excel par lien Hypertexte
    Par illight dans le forum Access
    Réponses: 4
    Dernier message: 27/10/2005, 15h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo