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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    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
    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 confirmé 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
    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 émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    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

  4. #4
    Membre régulier
    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
    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 émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    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

  6. #6
    Membre régulier
    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
    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 émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    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()

  8. #8
    Membre régulier
    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
    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

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