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 :

Faire une simple redirection


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut Faire une simple redirection
    Bonjour,

    Ne connaissant rien en php j'ai téléchargé un script pour un formulaire simple de contact. Tout fonctionne, je reçois bien le message par email. Seulement à la fin de mon script il y a un echo "Le message a été envoyé."; résultat le message est envoyé mais une page vide s'ouvre avec ce seul texte.

    Je souhaiterais donc ajouter une redirection de mon script. J'ai bien cherché avant de poster et essayé avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <SCRIPT>
    window.location = "merci.html";
    </SCRIPT>
    , ou encore ou l'utilisation de "header". Au final rien ne marche et je suis perdu.

    Je souhaiterais soit rediriger directement vers ma page merci.html, soit comme on le voit beaucoup une page intermédiaire "votre message a été envoyé, vous allez être redirigé, cliquez ici pour ne pas attendre", puis la page merci.html.

    Voici donc mon script php:
    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
     
    <?php
     
    /* Email du destinataire (mettez ici votre email) */
    $destinataire = "XXX";
     
    /* Récupération */
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
    $header = "From: " . $_POST['email'];
     
    /* Vérification */
    if ( $objet == "" ) {
      echo "Veuillez indiquer un objet.";
      $erreur = true;
    }
    if ( $message == "" ) {
      echo "Veuillez indiquer un message.";
      $erreur = true;
    }
     
    /* Vérification du mail */
    $email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
    if ( $email == "" OR !eregi( $email_regex , $email ) ) {
      echo "Veuillez indiquer un email valide.";
      $erreur = true;
    }
     
    /* Envoi du mail */
    if ( !$erreur ) {
      mail( $destinataire , $objet , $message , $header );
      echo "Le message a été envoyé.";
    }
    Et le code html correspondant, qui je ne pense pas sera utile:
    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
    <div id="contact"><form action="send_email.php" method="post">
      <p>
        Adresse email : *<br />
        <input name="email" type="text" />
      </p>
      <p>
        Objet : *<br />
        <input name="objet" type="text" />
      </p>
      <p>
        Message : *<br />
        <textarea name="message" rows="5" cols="30"></textarea>
      </p>
      <p> <input type="submit" value="Envoyer" /> </p>
      <p>*champs obligatoires</p>
      </form>
      </div>
    Merci d'avance pour votre patience envers les grands débutants

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Avec une redirection en HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="refresh" content="5;tapage.php" />
    5 etant ici le nombre de secondes avant la redirection.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    J'ai mis ce code dans mon fichier php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="refresh" content="5;merci.html" />
    à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "Le message a été envoyé.";
    Dois-je laisser l'echo? Aurais-je du le mettre dans mon fichier html? Après ma balise </form> ? Car cela me met un message d'erreur

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Dois-je laisser l'echo?
    Il n'y a que toi qui peut savoir si tu veux afficher un message ou non.

    Mais dans le cas ou tu n'afficherais rien, il n'y a plus trop d'intérêt a utiliser une redirection avec delai.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Oui d'accord je vois, je pense donc que je vais me passer de redirection.

    Cependant si je supprime ma dernière ligne contenant l'echo et que je la remplace par celle que tu m'as donné cela m'indique un message d'erreur et le formulaire n'est pas envoyé. En gros ce que je veux est simplement remplacer mon echo par une redirection

  6. #6
    Membre émérite Avatar de alain31tl
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 935
    Par défaut
    Salut

    Avec javascript dans ce cas là et à la fin de ton traitement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript">window.location.href = "tapage.html";</script>

  7. #7
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Merci pour ta contribution alain31tl

    Mon script devient donc cela:
    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
    <?php
    /* Email du destinataire (mettez ici votre email) */
    $destinataire = "reggio82@gmail.com";
     
    /* Récupération */
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
    $header = "From: " . $_POST['email'];
     
    /* Vérification */
    if ( $objet == "" ) {
      echo "Veuillez indiquer un objet.";
      $erreur = true;
    }
    if ( $message == "" ) {
      echo "Veuillez indiquer un message.";
      $erreur = true;
    }
     
    /* Vérification du mail */
    $email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
    if ( $email == "" OR !eregi( $email_regex , $email ) ) {
      echo "Veuillez indiquer un email valide.";
      $erreur = true;
    }
     
    /* Envoi du mail */
    if ( !$erreur ) {
      mail( $destinataire , $objet , $message , $header );
    }
     
    <script type="text/javascript">window.location.href = "merci.html";</script>
    Mais j'ai cette erreur lorsque je clique sur envoyer:
    Parse error: syntax error, unexpected '<' in /homepages/7/d196205126/htdocs/new/send_email.php on line 34
    la ligne 34 contenant la ligne de javascript...

  8. #8
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    le code qui t'est donné est du HTML et non du PHP il faut donc que tu fasses un echo pour l'afficher (comme quand tu affiches un texte) ou, plus simple, que tu fermes ta balise PHP avant ce code.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?>
    <script type="text/javascript">window.location.href = "merci.html";</script>
    Mais bon autant faire une redirection en PHP à coup de header :
    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
    <?php
    /* Email du destinataire (mettez ici votre email) */
    $destinataire = "reggio82@gmail.com";
     
    /* Récupération */
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
    $header = "From: " . $_POST['email'];
     
    /* Vérification */
    if ( $objet == "" ) {
      echo "Veuillez indiquer un objet.";
      $erreur = true;
    }
    if ( $message == "" ) {
      echo "Veuillez indiquer un message.";
      $erreur = true;
    }
     
    /* Vérification du mail */
    $email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
    if ( $email == "" OR !eregi( $email_regex , $email ) ) {
      echo "Veuillez indiquer un email valide.";
      $erreur = true;
    }
     
    /* Envoi du mail */
    if ( !$erreur ) {
      mail( $destinataire , $objet , $message , $header );
     
    /* Redirige vers la page indiquée */
    /* Attention il est important de n'avoir eu aucun echo avant
        ou aucune balise html ou autre sinon ca ne marchera pas*/
    header("Location: merci.html");
    }

  9. #9
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Ca m'embete de faire le boulet qui comprend pas, d'habitude j'essaie de me débrouiller tout seul, désolé.

    En suivant tes instructions koopajah, j'ai soit ce script:
    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
    <?php
    /* Email du destinataire (mettez ici votre email) */
    $destinataire = "monmail@gmail.com";
     
    /* Récupération */
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
    $header = "From: " . $_POST['email'];
     
    /* Vérification */
    if ( $objet == "" ) {
      echo "Veuillez indiquer un objet.";
      $erreur = true;
    }
    if ( $message == "" ) {
      echo "Veuillez indiquer un message.";
      $erreur = true;
    }
     
    /* Vérification du mail */
    $email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
    if ( $email == "" OR !eregi( $email_regex , $email ) ) {
      echo "Veuillez indiquer un email valide.";
      $erreur = true;
    }
     
    /* Envoi du mail */
    if ( !$erreur ) {
      mail( $destinataire , $objet , $message , $header );
     
    /* Redirige vers la page indiquée */
    /* Attention il est important de n'avoir eu aucun echo avant
        ou aucune balise html ou autre sinon ca ne marchera pas*/
    header("Location: merci.html");
    }
    ?>
    Il y a simplement une page vierge qui s'ouvre, le formulaire n'est pas envoyé.

    Soit en rajoutant du javascript j'obtiens donc:
    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
    <?php
     
    /* Email du destinataire (mettez ici votre email) */
    $destinataire = "monmail@gmail.com";
     
    /* Récupération */
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
    $header = "From: " . $_POST['email'];
     
    /* Vérification */
    if ( $objet == "" ) {
      echo "Veuillez indiquer un objet.";
      $erreur = true;
    }
    if ( $message == "" ) {
      echo "Veuillez indiquer un message.";
      $erreur = true;
    }
     
    /* Vérification du mail */
    $email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
    if ( $email == "" OR !eregi( $email_regex , $email ) ) {
      echo "Veuillez indiquer un email valide.";
      $erreur = true;
    }
     
    /* Envoi du mail */
    if ( !$erreur ) {
      mail( $destinataire , $objet , $message , $header );
      echo "Le message a été envoyé.";
    ?>
    <script type="text/javascript">window.location.href = "merci.html";</script>
    }
    Dans ce cas la redirection fonctionne mais le formulaire n'est pas envoyé. Etrange car le formulaire de base fonctionnait correctement.

  10. #10
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    J'ai initialisé ton $erreur à false au début et ajouté un cas d'erreur

    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
    42
    43
    44
    45
    <?php
     
    /* Initialisons la variable d'erreur */
    $erreur = false;
     
    /* Email du destinataire (mettez ici votre email) */
    $destinataire = "monmail@gmail.com";
     
    /* Récupération */
    $email = $_POST['email'];
    $objet = $_POST['objet'];
    $message = $_POST['message'];
    $header = "From: " . $_POST['email'];
     
    /* Vérification */
    if ( $objet == "" ) {
      echo "Veuillez indiquer un objet.";
      $erreur = true;
    }
    if ( $message == "" ) {
      echo "Veuillez indiquer un message.";
      $erreur = true;
    }
     
    /* Vérification du mail */
    $email_regex = "^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+.[a-z0-9-]";
    if ( $email == "" OR !eregi( $email_regex , $email ) ) {
      echo "Veuillez indiquer un email valide.";
      $erreur = true;
    }
     
    /* Envoi du mail */
    if ( !$erreur ) {
      mail( $destinataire , $objet , $message , $header );
     
    /* Redirige vers la page indiquée */
    /* Attention il est important de n'avoir eu aucun echo avant
        ou aucune balise html ou autre sinon ca ne marchera pas*/
    header("Location: merci.html");
    }
    else
    {
      echo "Une erreur semble s'être produite avant de pouvoir envoyer le mail.";
    }
    ?>
    Si ca ne marche tjs pas est ce que le script que tu nous donnes contient tout? ou est ce que tu as enlevé des morceaux?

  11. #11
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Oui je vous donne toutes les informations, j'ai copié tout ton code dans mon fichier send_email.php, en changeant bien sur mon adresse mail. Je n'ai pas touché à mon formulaire sur ma page contact.html, il renvoie bien au fichier php.

    Là encore le script s'exécute, la page merci.html s'ouvre bien mais toujours pas de message reçu dans ma boite mail. Je suis hébergé chez 1&1 et mon adresse est du type gmail.com, si ça peut être pertinent comme info.

  12. #12
    Membre expérimenté
    Profil pro
    Développeur Web
    Inscrit en
    Mai 2008
    Messages
    185
    Détails du profil
    Informations personnelles :
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2008
    Messages : 185
    Par défaut
    Bonjour,

    Tu devrais tenter la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mail( ... ) or die( error_get_last( ) )
    Il est assez courant que des hébergeurs mettent les serveurs en mode production, donc les erreurs arrivent, sont logguées dans les logs serveur ( auxquels on a pas accès, pour compliquer le tout ) , mais jamais affichées à l'écran... Pas pratique pour le débug.
    Sinon, essaye avec différentes solutions pour l'adresse de réception. Il est pas rare que certains serveurs mail refusent les mails envoyés par les fonctions mail et autres du même genre.

    Bonne journée.

  13. #13
    Membre averti Avatar de Reggio
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2009
    Messages : 18
    Par défaut
    Merci pour ton aide LoveAngel mais le formulaire d'origine, avec le très laid echo lorsque le script est effectué, fonctionne très bien mais dès que l'on modifie quelque chose ca plante

    Sinon j'en rechercherai un autre, sans echos, qui ne nécessite pas de solides connaissances en php.

Discussions similaires

  1. [À télécharger] Faire une simple capture d'écran (screenshot)
    Par SfJ5Rpw8 dans le forum Vos téléchargements VB6
    Réponses: 0
    Dernier message: 14/11/2010, 17h53
  2. comment faire une simple rotation au centre
    Par Manau2000 dans le forum Flex
    Réponses: 4
    Dernier message: 04/12/2008, 10h14
  3. Réponses: 4
    Dernier message: 11/12/2007, 18h01
  4. [C# Dataset] Je n'arrive pas a faire une simple requête.?
    Par zoltix dans le forum Accès aux données
    Réponses: 4
    Dernier message: 16/02/2007, 16h22
  5. Comment faire une simple boucle de décrementation
    Par marcus333 dans le forum Langage
    Réponses: 5
    Dernier message: 05/02/2006, 13h24

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