Probleme de redirection php
Hors ligneKefren Le 16/04/2008 à 16:11 Profil de Kefren Configuration de Kefren

Lorsqu'une personne se connecte, tout est bon, les données s'insèrent mais la page s'affiche pas correctement, et puis le changement de page ne s'effectue pas !!

donc comme les données sont insérées, jarrive à cette condition :




     else
     {
          mysql_query('INSERT INTO client VALUES("","'.$nom_clt.'","'.$prenom_clt.'","'.$mail.'",md5("'.$mdp.'"),"'.$adr_clt.'","'.$cp_clt.'","'.$ville_clt.'","'.$pays_clt.'","","","","","","","","","","","","","","","","","","","")') OR die(mysql_error());
          $_SESSION['login']=$mail;

          mysql_close();
          header('location:accueil.php');
                                exit;
     }


Je ne comprend pas pouquoi je ne suis pas renvoyé sur la page d'accueil :/

Car dès que je remplace le header location et le exit par un affiche de "inscription correcte" cela s'affiche correctement...
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneAnthony Le 16/04/2008 à 17:56 Profil de Anthony Configuration de Anthony

Admin
Je parierai que tu as une erreur de Headers already sent mais qui ne s'affiche pas :)
--

Hors ligneRyuzaki Le 16/04/2008 à 21:24 Profil de Ryuzaki Configuration de Ryuzaki

salut
je pense que tu dois laissé de l'espace entre : et le nom de la page càd:


  header('Location: accueil.php');
Hors ligneKefren Le 16/04/2008 à 21:27 Profil de Kefren Configuration de Kefren

J'ai déjà essayé Ryuzaki avant de venir embeter Anthony :/
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneRyuzaki Le 16/04/2008 à 21:50 Profil de Ryuzaki Configuration de Ryuzaki

si tu as l'erreur de Headers already sent
essaye avec @header("Location: nom_de_page");
Hors ligneAnthony Le 16/04/2008 à 23:50 Profil de Anthony Configuration de Anthony

Admin
Ca ne marchera pas avec cette solution. En fait l'erreur des headers already sent vient du fait que tu as déjà envoyé du texte au navigateur (ou du html peu importe, ou toute chaîne de caractères à afficher). Pour pouvoir faire ça, le serveur envoie les headers de la page au navigateur, or une fois que ces headers sont envoyés, on ne peut plus les réenvoyer puisque le navigateur s'attend à recevoir le contenu de la page, non ses headers. Voilà d'où sort l'erreur des headers already sent.

Pour pallier à cette erreur tu peux utiliser la bufferisation de sortie qui te permet de ne pas envoyer les headers tant que la page n'est pas entièrement préparée par le serveur. En contrepartie, cela nécessite plus de mémoire vive.
--

Hors ligneKefren Le 17/04/2008 à 11:41 Profil de Kefren Configuration de Kefren

Je comprend pas pourtant, j'ai créée ma page grace au tuto de création d'espace membre que tu m'avais fait passer ..

Pourtant au debut elle fonctionnait très bien jusqu'au moment où j'ai modofier ma requête d'insert...

le code :

<?php
session_start
();
require 
'configmysql.php';

include(
"header.php");

?>

<td class="milieu">

<?php

$erreur
=0;

if(isset(
$_GET['action'],$_POST['mdp_clt'],$_POST['confirm_mdp_clt']) AND $_POST['mdp_clt']===$_POST['confirm_mdp_clt'])
{
     if(get_magic_quotes_gpc()===1)
     {
          $mail          $_POST['mail_clt'];
          $mdp          $_POST['mdp_clt'];
          $nom_clt     $_POST['nom_clt'];
          $prenom_clt     $_POST['prenom_clt'];
          $adr_clt     $_POST['adr_clt'];
          $cp_clt          $_POST['cp_clt'];
          $ville_clt     $_POST['ville_clt'];
          $pays_clt     $_POST['pays_clt'];
          
     
}
     else
     
{
          $pseudo=addslashes($_POST['mail_clt']);
          $passe=addslashes($_POST['mdp_clt']);
     }

     if(!trim($mail) OR !trim($mdp))
     {
          header('location:inscription.php');
          exit;
     }

     mysql_connect($serv_bdd,$user_bdd,$mdp_bdd) OR die('<p>Connexion impossible à la base de données. Réessayez plus tard.</p>');

     mysql_select_db($nom_bdd) OR die('<p>sélection impossible</p>');
     $requete=mysql_query('SELECT COUNT(*) FROM client WHERE mail_clt="'.$mail.'"') OR die(mysql_error());

     $r=mysql_fetch_row($requete);

     if($r[0]!=='0')
     {
          mysql_close();
          $erreur=1;
     }
     else
     
{
          mysql_query('INSERT INTO client VALUES("","'.$nom_clt.'","'.$prenom_clt.'","'.$mail.'",md5("'.$mdp.'"),"'.$adr_clt.'","'.$cp_clt.'","'.$ville_clt.'","'.$pays_clt.'","","","","","","","","","","","","","","","","","","","")') OR die(mysql_error());
          $_SESSION['login']=$mail;

          mysql_close();
          

          
//echo "Inscription r&eacute;ussie";
          header('location:accueil.php');
          exit;
          
     
}

}

if(
$erreur===1)
     {
          echo '<p>Cet adresse mail est déjà utilisée. Veuillez en choisir une autre</p>';
     }

?>

 <div align="center">
   <p><u>Inscription Client : </u></p>
   <p>&nbsp;</p>
   <p>&nbsp;  </p>
 </div>
 <div align="center">
   <table width="54%" border="0" cellspacing="0" cellpadding="0">
     <form method="post" class="forminscription" action="<?php echo $wwwroot?>/inscription.php?action=ajout">
       
       <tr>
         <td width="44%"><p>Nom (*) </p><p>&nbsp;</p></td>
          <td width="56%"><p><input type="text" size="50" name="nom_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Pr&eacute;nom (*) </p><p>&nbsp;</p></td>
          <td><p><input type="text" size="50" name="prenom_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Mail (*1)</p><p>&nbsp;</p></td>
          <td><p><input type="text" size="50" name="mail_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Mot de passe (*2)</p><p>&nbsp;</p></td>
          <td><p><input type="password" size="50" name="mdp_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Confirmer le mot de passe (*)</p><p>&nbsp;</p></td>
          <td><p><input type="password" size="50" name="confirm_mdp_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Adresse (*)</p><p>&nbsp;</p></td>
          <td><p><input type="text" size="50" name="adr_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Code Postal (*)</p><p>&nbsp;</p></td>
          <td><p><input type="text" size="50" name="cp_clt"></p><p>&nbsp; </p></td>
        </tr>
       
       <tr>
         <td><p>Ville (*)</span>      
          <p>          
          <p></td>
          <td><p>
            <input type="text" size="50" name="ville_clt"></p>
          <p>&nbsp;</p></td>
        </tr>
       <tr>
         <td><p>Pays (*) </p>
          <p>&nbsp;</p></td>
         <td><p>
           <input type="text" size="50" name="pays_clt" />
         </p>
          <p>&nbsp; </p></td>
       </tr>
       <tr>
         <td colspan="2"><div align="center">
           <p>
             <input type="submit" value="Inscription" />
             </p>
            <p>&nbsp;          </p>
          </div></td>
        </tr>
      </form>
    </table>
 </div>
 <p align="center">&nbsp;</p>
<blockquote>
   <p>* : Les champs not&eacute;s d'un * sont obligatoires</p>
   <p>*1 : Votre mail vous servira d'identifiant pour vous connecter sur le site basebio</p>
   <p>*2 : Veuillez utiliser un mot de passe de s&eacute;curit&eacute; convenable utilisant des lettres majuscules et miniscules ainsi que des chiffres (ex : Mdp14)</p>
</blockquote> <p>&nbsp;</p>
 
 </td>

<?php
include("pied.php");
?>
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneAnthony Le 17/04/2008 à 12:12 Profil de Anthony Configuration de Anthony

Admin
Ouais regarde le début de ton code :

<?php 
session_start
(); 
require 
'configmysql.php'

include(
"header.php"); 

?> 

<td class="milieu">


Tu envoies <td class="milieu"> qui est du texte (html, peu importe), donc la redirection en PHP ne peut plus se faire :)

Pour pouvoir le faire faut inclure ce code html dans le php avec un echo et puis faire de la bufferisation de sortie ;)
--

Hors ligneKefren Le 17/04/2008 à 12:55 Profil de Kefren Configuration de Kefren

mais j'applique la buferisation de sortie sur l'ensemble de la page ? Enfin sur l'ensemble du code php de la page ?
--
Si les poules traversent juste devant les voitures ... c'est pour aller de l'autre coté de la route !!!
Hors ligneAnthony Le 17/04/2008 à 19:29 Profil de Anthony Configuration de Anthony

Admin
En haut de la page tu mets le ob_start() et tout en bas le ob_end_flush()
--

Vous avez résolu votre problème avec VIC ? Faites-le savoir sur les réseaux sociaux !
Vulgarisation-informatique.com
Cours en informatique & tutoriels