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

PHP & Base de données Discussion :

Redirection après formulaire ne fonctionne pas


Sujet :

PHP & Base de données

  1. #1
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut Redirection après formulaire ne fonctionne pas
    Bonjour à tou(te)s !
    J'ai un peu le même souci que Sam01 mais la solution ne fonctionne pas avec moi...

    J'essaye de rediriger le visiteur vers l'index après son enregistrement dans un formulaire, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      $insertGoTo = "/index.html";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
    le message d'erreur apres l'envoi ( voir sur ma page ) est systématiquement le même : "Warning: Cannot modify header information - headers already sent in /home/ju53661/inscription.php on line 49"

    La ligne 49 correspond à < header(sprintf("Location: %s", $insertGoTo)); >

    et ju53661 étant le nom de ma DB sur MySQl...
    je suis un peu largué...

  2. #2
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    bonjour,
    si tu peux faire un echo pour ta requete sql là tu peux detecter l'erreur.
    sinon donne tout le code

  3. #3
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Bonjour,

    C'est une erreur classique. Tu as des octets qui sont envoyés vers le client avant que tu fasses header().

    Il faut que tu regardes dans ton script si tu ne fais pas un echo avec le header(). Ou bien qu'il n'y a pas un espace ou un retour chariot avant le <?

    Si tu fais des includes, il faut également les vérifier.

    un autre moyen serait de faire un ob_start() au tout début de ton script, puis un ob_end_flush après ce if

    Bonne chance
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  4. #4
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut tout le code ???
    euh... beh le voila ...
    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
     
    <?php virtual('/Connections/connexion.php'); ?>
    <?php
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      $insertSQL = sprintf("INSERT INTO userssolexensolo (Nom, Prenom, Pseudo, `Adresse Mail`, `Mot de passe`) VALUES (%s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['nom'], "text"),
                           GetSQLValueString($_POST['prenom'], "text"),
                           GetSQLValueString($_POST['pseudo'], "text"),
                           GetSQLValueString($_POST['mail'], "text"),
                           GetSQLValueString($_POST['motdep'], "text"));
     
      mysql_select_db($database_connexion, $connexion);
      $Result1 = mysql_query($insertSQL, $connexion) or die(mysql_error());
     
      $insertGoTo = "/index.html";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
      header(sprintf("Location: %s", $insertGoTo));
    }
     
    ?>
    ...ensuite c'est le reste de la page en html...

  5. #5
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    Il y a vraiment ce retour chariot en haut de page car s'il y est cela doit etre ca l'erreur.

    juste une remarque, pourquoi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php virtual('/Connections/connexion.php'); ?>
    <?php
    function ...
    alors que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php 
    virtual('/Connections/connexion.php'); 
    function ...
    marche aussi bien
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  6. #6
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    pardon, j'ai posté avant d'avoir lu le post de FCYPBA... je précise que je développe sous Dreamweaver... et euh... comment vous dire que je suis plus familier de l'onglet "création" que de l'onglet "code"...
    En d'autres termes... si tu pouvais expliquer lentement ca serait super
    Merci encore pour vos réponses rapides !

  7. #7
    Membre éprouvé Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Points : 952
    Points
    952
    Par défaut
    En gros le message stipule que tu as déjà envoyé les entêtes vers le client.
    Ceux-ci sont transmis de manière transparente si tu envoie du texte.

    Dans ton cas, tu dois avoir un retour à la ligne, ou un espace en dehors des balises php avant le header()
    Pierre
    1. Dans le manuel ( PHP, MySQL,..., rayez la mention inutile), tu te plongeras à deux fois plutôt qu'aucune.
    2. Dans la doc php, tu liras attentivement les sections Chaines de caractères, Tableaux et Système de fichiers
    3. Un code rapide c'est bien, un code maintenable c'est mieux
    ...

    Why was the font tag an orphan ? Because it didn't have a font-family.

  8. #8
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    bon... j'ai modifié mon code (et supprimé au passage la ligne inutile au début merci)... ça donne ça :

    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
     
    <?php virtual('/Connections/connexion.php');
    function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
    {
      $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;
     
      switch ($theType) {
        case "text":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;    
        case "long":
        case "int":
          $theValue = ($theValue != "") ? intval($theValue) : "NULL";
          break;
        case "double":
          $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
          break;
        case "date":
          $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
          break;
        case "defined":
          $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
          break;
      }
      return $theValue;
    }
     
    $editFormAction = $_SERVER['PHP_SELF'];
    if (isset($_SERVER['QUERY_STRING'])) {
      $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
    }
     
    if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
      $insertSQL = sprintf("INSERT INTO userssolexensolo (Nom, Prenom, Pseudo, `Adresse Mail`, `Mot de passe`) VALUES (%s, %s, %s, %s, %s)",
                           GetSQLValueString($_POST['nom'], "text"),
                           GetSQLValueString($_POST['prenom'], "text"),
                           GetSQLValueString($_POST['pseudo'], "text"),
                           GetSQLValueString($_POST['mail'], "text"),
                           GetSQLValueString($_POST['motdep'], "text"));
     
      mysql_select_db($database_connexion, $connexion);
      $Result1 = mysql_query($insertSQL, $connexion) or die(mysql_error());
     
      $insertGoTo = "/index.html";
      if (isset($_SERVER['QUERY_STRING'])) {
        $insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
        $insertGoTo .= $_SERVER['QUERY_STRING'];
      }
    header(sprintf("Location: %s", $insertGoTo));
    }
    ?>
    et j'ai toujours le même message d'erreur si ce n'est que le probleme est déporté à la "line 48" au lieu de 49

  9. #9
    Membre habitué Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Points : 197
    Points
    197
    Par défaut
    je vois que ton code marche.
    j'ai testé le lien que t'as mis au depart

  10. #10
    Candidat au Club
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2006
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    oui oui le code fonctionne parfaitement pour la page inscription.php mais une fois le formulaire rempli, je souhaite que le visiteur soit redirigé vers index.html, au lieu de cela la page reste affichée avec ce message d'erreur en en-tête...

  11. #11
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    En fait, je pense que l'erreur est provoquée dans la page index.htm, mais provient effectivement de la page inscription.
    En gros, la page inscription envoie le header, donc tu te bloque certaines fonctions dans la page index.htm, genre cookies, etc...
    Si tu dois gérer des choses avant le header, tu peux le faire avant de rediriger la page peut-être...
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

Discussions similaires

  1. Mon formulaire ne fonctionne pas
    Par misslinoa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 22/02/2008, 14h38
  2. [Cookies] Redirection Header qui ne fonctionne pas
    Par arnaudperfect dans le forum Langage
    Réponses: 10
    Dernier message: 20/03/2007, 09h19
  3. Redirection après formulaire
    Par Strix dans le forum Langage
    Réponses: 4
    Dernier message: 07/02/2007, 10h34
  4. Redirection après formulaire...
    Par kobe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 28/03/2006, 09h53
  5. Réponses: 16
    Dernier message: 01/02/2006, 19h09

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