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 :

[PHP-JS] Erreur : modification d'URL après rechargement de page


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut [PHP-JS] Erreur : modification d'URL après rechargement de page
    Bonjour.

    J'ai un formulaire qui se compose ainsi :
    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <form name="forml" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    	<?php	
    	if($_POST['action'] == 'submitted') {
    	if((empty($nom ))
    	||(empty($prenom ))
    	||(empty($sujet2 ))
    	||(empty($mess ))
    	||(!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$",$email)))
    	echo "ERREUR"; 
    	else
    	{
    	$adress = "web@strix.fr";
    	$sujet = "$_POST[sujet2]";
    	$from = "From: ".$_POST[email]."\n";
    	$from .= "MIME-version: 1.0\n";
    	$from .= "Content-type: text/html; charset= iso-8859-1\n";
     
    	$message="
    	$_POST[nom] $_POST[prenom]<br>
    	$_POST[societe]<br>
    	$_POST[email]<br><br>
    	$_POST[sujet2]<br>
    	$_POST[mess]";
     
    	mail($adress, $sujet, $message, $from);
    			}
    	$insertGoTo = "http://www.strix.fr/sondmerci.php?lang=$lang";
    	//		if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    	// 		$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    	// 		$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
    	// 		}
    	 header(sprintf("Location: %s", $insertGoTo));			
    	}
    	?>
          <table border="0" cellspacing="0" cellpadding="0">
             <tr>
               <td>Nom</td>
               <td><input name="nom" type="text" id="nom" value="<?php echo $nom ; ?>"><span class="obl">*</span></td>
             </tr>
             <tr>
               <td>Prénom</td>
               <td><input name="prenom" type="text" id="prenom" value="<?php echo $prenom ; ?>"><span class="obl">*</span></td>
             </tr>
             <tr>
               <td>Société</td>
               <td><input name="societe" type="text" id="societe" value="<?php echo $societe ; ?>"></td>
             </tr>
             <tr>
               <td>E-mail</td>
               <td><input name="email" type="text" id="email" value="<?php echo $email ; ?>"><span class="obl">*</span></td>
             </tr>
             <tr>
               <td>Sujet</td>
               <td><input name="sujet2" type="text" id="sujet2" value="<?php echo $sujet2 ; ?>"></td>
             </tr>
             <tr>
               <td>Message</td>
               <td><textarea name="mess" cols="68" rows="9" id="mess"><?php echo $mess ; ?></textarea></td>
             </tr>
             <tr>
               <td>&nbsp;</td>
               <td><span class="obl">* Champs obligatoires</span></td>
             </tr>
           </table>
          <table cellpadding="2" cellspacing="0">
              <tr>
                <td class="centre" colspan="3"><input name="Annuler" type="reset" id="Annuler2" value="<?php echo annule; ?>">
                  <input type="hidden" name="action" value="submitted">
                  <input name="Envoyer" type="submit" id="Envoyer2" value="<?php echo envoie; ?>">
                </td>
              </tr>
          </table>
          </form>
    Alors le formulaire marche en grande partie, les infos sont vérifiées et si elles sont bonnes, je reçois bien un mail.

    Mais voici les problèmes que je rencontre :
    [Résolu] 1 / Que le formulaire soit valide ou pas, l'erreur suivante apparait :
    "Warning: Cannot modify header information - headers already sent by (output started at /home.10.2/strixlab/www/contact2.php:10) in /home.10.2/strixlab/www/contact2.php on line 96"

    2 / Quand la page est rechargée (formulaire valide ou non), la page chargée n'est pas http://www.strix.fr/contact2.php?lang=fr mais http://www.strix.fr/contact2.php

    [Résolu] 3 / Si le formulaire est valide, la redirection vers /sondmerci.php?lang=XX ne se fait pas.

    Je pense que c'est trois erreur sont liées car quand je ne mets pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $insertGoTo = "http://www.strix.fr/sondmerci.php?lang=$lang";
    //		if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
    // 		$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
    // 		$insertGoTo .= $HTTP_SERVER_VARS['QUERY_STRING'];
    // 		}
    header(sprintf("Location: %s", $insertGoTo));
    aucune n'erreur apparait (mais bien sûr la redirection non plus).

    Voilà, donc si vous aviez une petite idée...

    Ah oui j'ai un cookie qui se créé à partir de mes pages concernant la partie multilingue. Je ne le mets pas mais si vous pensez que ça peut-être ça, je le rajouterai.

    Merci d'avance

  2. #2
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Normal que tu est une erreur... Tu ne peut utiliser header que si il n'y a aucun element html affiché dans la page avant le header. Hors tu a deja une balise form...

  3. #3
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Alors :

    les points 1 et 3 ont été résolu avec un Include à la fin du else
    redir.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Refresh" content="3; URL=accueil.php?lang=<? echo lang; ?>">
    Mais par contre j'ai toujours ce soucis de rechargement de page où le ?lang=XX disparait

  4. #4
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Bon après pas mal de recherche, je ne trouve pas comment faire. si j'arrive bien à rajouter ?lang=XX une fois la page rechargée, les champs valides se retrouvent vides...

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Points : 319
    Points
    319
    Par défaut
    Utilise plutot une redirection en javascript en modifiant les paramètres en PHP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <script language="javascript">
            alert("Alerte!"); /*On peut la retirer. */
    	parent.location.replace('accueil.php?lang=<?php echo $lang; ?>');
    </script>
    Prend garde à bien mettre la balise <?php et non pas <? qui est réservée au PEARL, cela risque de te provoquer des erreurs même si ton code est parfait(sa m'est arrivé , deux heures pour trouver l'erreur la ). Et n'oublie pas le '$' avant la variable lang.Tu peut placer la balise à la place de ta redirection

  6. #6
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par meliandah
    Utilise plutot une redirection en javascript en modifiant les paramètres en PHP
    La redirection marche mais je vais voir qd même

    Citation Envoyé par meliandah
    Prend garde à bien mettre la balise <?php et non pas <?
    Voui, je fais pas assez attention...

    Et pour cette histoire de ?lang=xx qui disparait, une idée ?

  7. #7
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Fais plutot ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo '<meta http-equiv="Refresh" content="3; URL=accueil.php?lang=' . $lang . '">';
    ?>

  8. #8
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par cerede2000
    Fais plutot ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    echo '<meta http-equiv="Refresh" content="3; URL=accueil.php?lang=' . $lang . '">';
    ?>
    Aussi

    Bon ce qui m'embête c'est cette histoire de ?lang=xx. Je ré-explique :
    Quand vous arrivez sur la page contact, vous arrivez forcément sur contact2.php?lang=fr ou contact2.php?lang=en. Quand PHP traite le formulaire et recharge la page, l'URL devient contact2.php.
    Pourquoi ? En ce qui me concerne je ne fais aucun traitement pour supprimer la partie ?lang=xx !!

  9. #9
    Membre expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Points : 3 338
    Points
    3 338
    Par défaut
    Ben normal dans ta balise form, a l'attribut action tu a du mettre contact2.php, alors qu'il faudrai mettre contact2.php?lang=xx ...

  10. #10
    Membre confirmé Avatar de Strix
    Inscrit en
    Novembre 2006
    Messages
    632
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 632
    Points : 607
    Points
    607
    Par défaut
    Citation Envoyé par cerede2000
    Ben normal dans ta balise form, a l'attribut action tu a du mettre contact2.php, alors qu'il faudrai mettre contact2.php?lang=xx ...
    C'est ça qui m'énerve dans le codage.
    C'est les réponse simples qui commencent par "Ben normal..." alors que tu te fais ch##r toutes une journée

    Merci cerede2000, ça marche nickel

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recharger la page après fonction php
    Par leroidje dans le forum Langage
    Réponses: 3
    Dernier message: 08/10/2009, 16h31
  2. modifier l'URL sans recharger la page
    Par damien77 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 18/08/2008, 17h22
  3. Réponses: 6
    Dernier message: 19/04/2008, 14h03
  4. Réponses: 2
    Dernier message: 01/02/2008, 14h30
  5. [SQL] (PHP/SQL) Erreur de modification d'une valeur
    Par ymoreau dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 15/09/2006, 14h55

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