problème de code qui passe sous MAMP mais pas sur le serveur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : problème de code qui passe sous MAMP mais pas sur le serveur

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 24 sept. 2010, 10:50

Code avec logique et tente de savoir ce qui se passe, quelles sont les valeurs des variables et quel chemin est suivi et pourquoi.

Là ou tu as des redirections, commentes les lignes header('Location') et remplace par du var_dump en affichant des variables suspectes pour en vérifier la valeur. Dans tout débogage, il s'agit de cerner un problème, le code fonctionne bien jusqu'à un certain point et ne pas le résultat attendu au delà d'un autre point : tu dois être au moins en mesure de définir un point de départ où tu sais que jusque là tout est normal, ensuite tu sais qu'à un point donné, ce n'est pas bon. Commence par le départ, joue du var_dump() pour vérifier tes variables en décalant un cran plus loin tant que ce qui est affiché est satisfaisant. Tu vas forcément tomber à un moment donné à un endroit où le comportement n'est pas du tout ce que tu voulais parce que tu auras mal initialisé une variable ou encore tu l'auras simplement oubliée, quelque chose dans ce goût là.

C'est lent, laborieux voire pénible, mais si tu n'as pas un éditeur avancé assorti d'un système de débogage pas-à-pas (je ne suis pas certain qu'il y en ait un dans DreamWeawer, je n'ai jamais utilisé ce truc), il n'y a pas vraiment d'autre solution. Tu pourrais aussi peut-être explorer l'utilisation de FirePHP (une extension de Firebug avec Firefox, je ne sais pas trop comment ça fonctionne, je ne l'utilise pas, d'autres pourront peut-être t'indiquer des pistes sur le sujet au besoin.
Ok merci! C'est parti pour du debug laborieux :lol:

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par Cyrano » 24 sept. 2010, 10:45

Code avec logique et tente de savoir ce qui se passe, quelles sont les valeurs des variables et quel chemin est suivi et pourquoi.

Là ou tu as des redirections, commentes les lignes header('Location') et remplace par du var_dump en affichant des variables suspectes pour en vérifier la valeur. Dans tout débogage, il s'agit de cerner un problème, le code fonctionne bien jusqu'à un certain point et ne pas le résultat attendu au delà d'un autre point : tu dois être au moins en mesure de définir un point de départ où tu sais que jusque là tout est normal, ensuite tu sais qu'à un point donné, ce n'est pas bon. Commence par le départ, joue du var_dump() pour vérifier tes variables en décalant un cran plus loin tant que ce qui est affiché est satisfaisant. Tu vas forcément tomber à un moment donné à un endroit où le comportement n'est pas du tout ce que tu voulais parce que tu auras mal initialisé une variable ou encore tu l'auras simplement oubliée, quelque chose dans ce goût là.

C'est lent, laborieux voire pénible, mais si tu n'as pas un éditeur avancé assorti d'un système de débogage pas-à-pas (je ne suis pas certain qu'il y en ait un dans DreamWeawer, je n'ai jamais utilisé ce truc), il n'y a pas vraiment d'autre solution. Tu pourrais aussi peut-être explorer l'utilisation de FirePHP (une extension de Firebug avec Firefox, je ne sais pas trop comment ça fonctionne, je ne l'utilise pas, d'autres pourront peut-être t'indiquer des pistes sur le sujet au besoin.

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 24 sept. 2010, 10:39

J'ai finalement trouvé une parade (assez moyen certe) au problème qui est de mettre un
echo('<br />'); en haut de mon fichier "traitement.php".
Du coup il me met le warning du cannot modify headers mais a part ça, ça fonctionne.
Maintenant soit je résous mon problème, soit je cache le warning mais pas sur de pouvoir toucher au php.ini sur du mutualisé OVH...

edit: un petit "@" devant la fonction header et ca résous (masque en fait) le soucis

Je sais bien que ca n'est pas génial mais au moins ca permet au site de fonctionner

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 24 sept. 2010, 10:11

Les erreurs d'index indéfinis semblent indiquer que dans ton formulaire, le champ « mot de passe » a un attribut name qui n'est pas « passe ».
L'affichage de ces deux erreurs déclenchent la troisième, donc en résolvant la première, tu supprimeras automatiquement les deux autres.
erf, je me suis fait griller de quelque seconde. Et bien j'ai résolu cette erreur mais j'ai toujorus le probleme du header :/ voir post juste avant.

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 24 sept. 2010, 10:10

Je croi que je commence a comprendre certaine chose. Déjà, j'avais une erreur dans mon code pour ce qui est des undefined index. Cela dis, je ne vous apprend rien...
J'ai corriger ce le problème.
Ensuite j'ai pu remarque sur mon code de test qui si j'ai le warning du modify header, ca fonctionne et si je ne l'ai pas ca ne fonctionne pas.
Je m'explique
Voici mon traitement.php (dernière version)
<?php session_start(); //on initialise la session
var_dump($_POST);
require_once('Connections/memooh.php');
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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;
}
}

mysql_select_db($database_memooh, $memooh);
$query_Rs_cnx = "SELECT pseudo, passe, statut FROM mem_membre";
$Rs_cnx = mysql_query($query_Rs_cnx, $memooh) or die(mysql_error());
$row_Rs_cnx = mysql_fetch_assoc($Rs_cnx);
$totalRows_Rs_cnx = mysql_num_rows($Rs_cnx);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['pseudo'])) {
  $loginUsername=$_POST['pseudo'];
  $password2=$_POST['confirm-password'];
  $password = md5("8j1W7WYPo6frEh4".$_POST['confirm-password']);
  $MM_fldUserAuthorization = "statut";
  $MM_redirectLoginSuccess = "page_membre.php";
  $MM_redirectLoginFailed = "echoue.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_memooh, $memooh);
  	
  $LoginRS__query=sprintf("SELECT pseudo, passe, statut FROM mem_membre WHERE pseudo=%s AND passe=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $memooh) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'statut');
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
} ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/espace_membre.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Document sans titre</title>
<!-- InstanceEndEditable -->
<link href="css/mac.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
</head>

<body>
<div  id="topDiv"><img src="images/logo.png" /></div>
<!-- InstanceBeginEditable name="EditNav" -->
<div  id="navigation"> 
  <!--debut navigation -->
  <?php include("haut2.php"); ?> 
</div>
<!--fin navigation --> 
<!-- InstanceEndEditable -->
<div id="outerWrapper2"><!--debut  outerWrapper2 -->  
  <div  id="contentWrapper2"><!-- debut contentWrapper2 --><!-- InstanceBeginEditable name="EditColonneGauche" -->
    <div id="leftColumn1"> 
      <!--debut  gauche --> 
    </div>
    <!--fin  gauche --> 
    <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditCentre" -->
    <div id="content2"> 
      <!--debut content  -->
      <?php
  $msg_erreur = "<img src='images/sitemenu/erreur.png'  border='0' align='absmiddle'> <span class='redBold'> Les champs  suivants présentent les erreurs suivantes  :</span><br/><br/>";
  $msg_ok = "<img src='images/sitemenu/yes.png'  border='0' align='absmiddle'>   <span class='blueBold'>Votre inscription a bien été prise en compte.<br><a href='index.php'>Cliquez ici pour vous authentifier</a> <!-- Votre compte devra être validé par  l'administrateur--></span>";
  $message = $msg_erreur;
define('MAIL_DESTINATAIRE',$_POST["email"]); 
  define('MAIL_SUJET','Bienvenue sur Memooh'); 
// On définit chaque champ du formulaire.
  if(isset($_POST['pseudo']))  $pseudo = $_POST["pseudo"];
  if(isset($_POST['nom'])) $nom =  $_POST["nom"];
  if(isset($_POST['prenom']))  $prenom = $_POST["prenom"];
  if(isset($_POST['confirm-password']))  $passe = $_POST["confirm-password"];
  if(isset($_POST['statut']))  $statut = $_POST["statut"];
  if(isset($_POST['email']))  $email = $_POST["email"];
  if(isset($_POST['autemail']))  $autemail = $_POST["autemail"];
  if(isset($_POST['sexe'])) $sexe  = $_POST["sexe"];
  if(isset($_POST['time'])) $time  = $_POST["time"];
  if(isset($_POST['ip'])) $ip =  $_POST["ip"];
/* on vérifie que le code est toujours mémorisé en  session et qu'il fait 5 caractères */ 
/*print_r($_SESSION);
echo('<br />');
print_r($_SESSION['code']);
echo('<br />');
print_r(md5($_POST['verif'])); */
  if(!isset($_SESSION['captcha'])) die("Erreur !");
// on vérifie que la code entré est valide
  if($_SESSION['captcha'] != md5($_POST['verif'])) die("<span class='redBold'><img  src='images/sitemenu/erreur.png' border='0' align='absmiddle'> Erreur : le code de protection est invalide !</span><br>");

// vérification des champs 
 if (empty($_POST['pseudo'])) 
    $message .= "<span class='redBold'>Vous devez saisir un pseudo</span><br/>";
  if (empty($_POST['nom'])) 
    $message .= "<span  class='redBold'>Vous devez saisir votre nom</span><br/>";
  if (empty($_POST['prenom'])) 
    $message .= "<span  class='redBold'>Vous devez saisir votre  prenom</span><br/>";
  if (empty($_POST['password'])) 
    $message .= "<span class='redBold'>Vous devez saisir un  mot de passe</span><br/>";
  if (empty($_POST['confirm-password'])) 
    $message .= "<span class='redBold'>Vous devez  confirmer le mot de passe</span><br/>";
  //vérification du mot de passe
  if(!ereg("^[A-Za-z0-9]{4,}$",  $_POST["password"]))
  {
     $message .= "<span  class='redBold'>Votre mot de passe doit comporter au moins 4  caractères</span><br/>";
  }
  elseif($_POST["password"]  != $_POST["confirm-password"])
  {
     $message = "<span  class='redBold'>Votre mot de passe n'a pas été correctement  confirmé</span><br/>";
  }
//vérification de l'email
   if(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $_POST["email"]))
            {
                 $message  .= "<span class='redBold'>Votre adresse e-mail n'est pas  valide</span><br/>";
            }
            else
            {
				//vérification du couple  pseudo et email
mysql_select_db($database_memooh, $memooh) or die("cannot select DB");
  $sql="SELECT email FROM  mem_membre WHERE pseudo = '" . $_POST["pseudo"] . "'
  AND  email='".$_POST['email']."' ";
 $result=mysql_query($sql);
                  //si la requête ne retourne rien, cela signifie que le mail  n'existe pas
                  if(mysql_num_rows($result)  != 0)
                  {
                  $message .= "<span class='redBold'>Le couple Email - Pseudo existe deja</span><br/>";
                  }
            }
if (empty($_POST['sexe']))
    $message .= "<span class='redBold'>Vous devez cocher la case Homme ou Femme</span><br/>";
  if (empty($_POST['autemail']))
    $message .= "<span class='redBold'>Vous n'avez pas  précisé la visibilité de votre Email</span><br/>";
  // si un champ est vide, on affiche le message  d'erreur 
  if (strlen($message) >  strlen($msg_erreur)) {
  echo $message;

 
 // Si il y a une erreur le javascript réaffiche le  formulaire d'inscription
 ?>
      <script  language="JavaScript">
  setTimeout("window.location.href='./inscription.php  ' ", 5000);
  </script>
      <?php
//sinon c'est ok
 } else {
    foreach($_POST as $index => $valeur) {
      $$index =  mysql_real_escape_string(trim($valeur));
    }
 //Préparation de l'entête du mail:
  $mail_entete = "MIME-Version: 1.0\r\n";
  $mail_entete .= "From:  {$_POST['pseudo']} "
                ."<{$_POST['email']}>\r\n";
  $mail_entete .= 'Reply-To:  '.$_POST['email']."\r\n";
  $mail_entete .= 'Content-Type: text/plain;  charset="iso-8859-1"';
  $mail_entete .= "\r\nContent-Transfer-Encoding:  8bit\r\n";
  $mail_entete .= 'X-Mailer:PHP/' .  phpversion()."\r\n";
// préparation du corps du mail
  $mail_corps = "Bonjour $prenom et bienvenu sur le site de Memooh!\n";
  $mail_corps .= "Vous pourrez mémoriser vos idée cadeau\n";
  $mail_corps .= "Votre Pseudo : $pseudo\n";
  $mail_corps .= "Votre mot de passe : $passe gardez le présieusement\n";
  $mail_corps .= "A bientôt sur Memooh\n";
  //$mail_corps .= $comments;
  
  // Requête d'insertion dans la base si tout est ok
  $sql = "INSERT INTO mem_membre VALUES ('',  '".$pseudo."', '".$nom."', '".$prenom."',  '".md5("8j1W7WYPo6frEh4".$passe)."', 
  '".$statut."', '".$email."',  '".$autemail."', '".$sexe."', 
  '".$time."',  '".$ip."', '".$lasttime."', '".$online."')";
	$res = mysql_query($sql);
  if($res) {
      echo($msg_ok);
  // envoi du mail
  mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete);
  } else {
      echo mysql_error();
    }
  }
  // on détruit les variables de session, désormais  inutiles
  session_unset();
  session_destroy();
?>
    </div>
    <!--fin content --> 
    <!-- InstanceEndEditable --><br  class="clearFloat2" />  
    </div><!-- fin contentWrapper2  -->  
  <div id="footer2">  
  <p>© Copyright Goleobox © <a href="# target="_blank"></a> Tous droit  r&eacute;serv&eacute;s</p>    
    </div>  
</div><!--fin outerWrapper2 -->  
</body>
<script  type="text/javascript">  
  <!--  
  function AjoutFavoris(theURL,  theTITLE) {  
  window.external.AddFavorite(theURL,  theTITLE);  
  }  
  -->  
</script>  
<!-- InstanceEnd --></html>
Avec ce code, ca fonctionne mais j'ai l'erreur du modify header.

Code : Tout sélectionner

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/memooh/traitement.php:2) in /Applications/MAMP/htdocs/memooh/traitement.php on line 82
Ce qui est normal puisque j'ai un var_dump à la ligne 2.
Si je retire cette ligne, je n'ai plus le warning mais il me fait le meme "truc" que sur le serveur de prod a savoir qu'il redirige vers la mauvaise pas...
C'est vraiment curieux je trouve

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par Cyrano » 24 sept. 2010, 10:06

Les erreurs d'index indéfinis semblent indiquer que dans ton formulaire, le champ « mot de passe » a un attribut name qui n'est pas « passe ».
L'affichage de ces deux erreurs déclenchent la troisième, donc en résolvant la première, tu supprimeras automatiquement les deux autres.

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 24 sept. 2010, 09:19

J'ai cependant, en test, un warning:
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/memooh/traitement.php:51) in /Applications/MAMP/htdocs/memooh/traitement.php on line 79
Jette un coup d'oeil sur ce sujet
ok merci. J'ai bien regardé, je ne vois pas où j'envoie du code HTML ou du texte.
pour ce qui est des espaces ou des retours de ligne, j'ai vérifier, je n'en trouve pas.
Par soucis de simplicité, j'ai virée certaine balise <?php et ?>. Mon code est donc devenu:
<?php session_start(); //on initialise la session
require_once('Connections/memooh.php');
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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;
}
}

mysql_select_db($database_memooh, $memooh);
$query_Rs_cnx = "SELECT pseudo, passe, statut FROM mem_membre";
$Rs_cnx = mysql_query($query_Rs_cnx, $memooh) or die(mysql_error());
$row_Rs_cnx = mysql_fetch_assoc($Rs_cnx);
$totalRows_Rs_cnx = mysql_num_rows($Rs_cnx);

// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['pseudo'])) {
  $loginUsername=$_POST['pseudo'];
  $password2=$_POST['passe'];
  $password = md5("8j1W7WYPo6frEh4".$_POST['passe']);
  $MM_fldUserAuthorization = "statut";
  $MM_redirectLoginSuccess = "page_membre.php";
  $MM_redirectLoginFailed = "echoue.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_memooh, $memooh);
  	
  $LoginRS__query=sprintf("SELECT pseudo, passe, statut FROM mem_membre WHERE pseudo=%s AND passe=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $memooh) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'statut');
    
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;	      

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];	
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
} ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/espace_membre.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Document sans titre</title>
<!-- InstanceEndEditable -->
<link href="css/mac.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
</head>

<body>
<div  id="topDiv"><img src="images/logo.png" /></div>
<!-- InstanceBeginEditable name="EditNav" -->
<div  id="navigation"> 
  <!--debut navigation -->
  <?php include("haut2.php"); ?> 
</div>
<!--fin navigation --> 
<!-- InstanceEndEditable -->
<div id="outerWrapper2"><!--debut  outerWrapper2 -->  
  <div  id="contentWrapper2"><!-- debut contentWrapper2 --><!-- InstanceBeginEditable name="EditColonneGauche" -->
    <div id="leftColumn1"> 
      <!--debut  gauche --> 
    </div>
    <!--fin  gauche --> 
    <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditCentre" -->
    <div id="content2"> 
      <!--debut content  -->
      <?php
  $msg_erreur = "<img src='images/sitemenu/erreur.png'  border='0' align='absmiddle'> <span class='redBold'> Les champs  suivants présentent les erreurs suivantes  :</span><br/><br/>";
  $msg_ok = "<img src='images/sitemenu/yes.png'  border='0' align='absmiddle'>   <span class='blueBold'>Votre inscription a bien été prise en compte.<br><a href='index.php'>Cliquez ici pour vous authentifier</a> <!-- Votre compte devra être validé par  l'administrateur--></span>";
  $message = $msg_erreur;
define('MAIL_DESTINATAIRE',$_POST["email"]); 
  define('MAIL_SUJET','Bienvenue sur Memooh'); 
// On définit chaque champ du formulaire.
  if(isset($_POST['pseudo']))  $pseudo = $_POST["pseudo"];
  if(isset($_POST['nom'])) $nom =  $_POST["nom"];
  if(isset($_POST['prenom']))  $prenom = $_POST["prenom"];
  if(isset($_POST['confirm-password']))  $passe = $_POST["confirm-password"];
  if(isset($_POST['statut']))  $statut = $_POST["statut"];
  if(isset($_POST['email']))  $email = $_POST["email"];
  if(isset($_POST['autemail']))  $autemail = $_POST["autemail"];
  if(isset($_POST['sexe'])) $sexe  = $_POST["sexe"];
  if(isset($_POST['time'])) $time  = $_POST["time"];
  if(isset($_POST['ip'])) $ip =  $_POST["ip"];
/* on vérifie que le code est toujours mémorisé en  session et qu'il fait 5 caractères */ 
/*print_r($_SESSION);
echo('<br />');
print_r($_SESSION['code']);
echo('<br />');
print_r(md5($_POST['verif'])); */
  if(!isset($_SESSION['captcha'])) die("Erreur !");
// on vérifie que la code entré est valide
  if($_SESSION['captcha'] != md5($_POST['verif'])) die("<span class='redBold'><img  src='images/sitemenu/erreur.png' border='0' align='absmiddle'> Erreur : le code de protection est invalide !</span><br>");

// vérification des champs 
 if (empty($_POST['pseudo'])) 
    $message .= "<span class='redBold'>Vous devez saisir un pseudo</span><br/>";
  if (empty($_POST['nom'])) 
    $message .= "<span  class='redBold'>Vous devez saisir votre nom</span><br/>";
  if (empty($_POST['prenom'])) 
    $message .= "<span  class='redBold'>Vous devez saisir votre  prenom</span><br/>";
  if (empty($_POST['password'])) 
    $message .= "<span class='redBold'>Vous devez saisir un  mot de passe</span><br/>";
  if (empty($_POST['confirm-password'])) 
    $message .= "<span class='redBold'>Vous devez  confirmer le mot de passe</span><br/>";
  //vérification du mot de passe
  if(!ereg("^[A-Za-z0-9]{4,}$",  $_POST["password"]))
  {
     $message .= "<span  class='redBold'>Votre mot de passe doit comporter au moins 4  caractères</span><br/>";
  }
  elseif($_POST["password"]  != $_POST["confirm-password"])
  {
     $message = "<span  class='redBold'>Votre mot de passe n'a pas été correctement  confirmé</span><br/>";
  }
//vérification de l'email
   if(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $_POST["email"]))
            {
                 $message  .= "<span class='redBold'>Votre adresse e-mail n'est pas  valide</span><br/>";
            }
            else
            {
				//vérification du couple  pseudo et email
mysql_select_db($database_memooh, $memooh) or die("cannot select DB");
  $sql="SELECT email FROM  mem_membre WHERE pseudo = '" . $_POST["pseudo"] . "'
  AND  email='".$_POST['email']."' ";
 $result=mysql_query($sql);
                  //si la requête ne retourne rien, cela signifie que le mail  n'existe pas
                  if(mysql_num_rows($result)  != 0)
                  {
                  $message .= "<span class='redBold'>Le couple Email - Pseudo existe deja</span><br/>";
                  }
            }
if (empty($_POST['sexe']))
    $message .= "<span class='redBold'>Vous devez cocher la case Homme ou Femme</span><br/>";
  if (empty($_POST['autemail']))
    $message .= "<span class='redBold'>Vous n'avez pas  précisé la visibilité de votre Email</span><br/>";
  // si un champ est vide, on affiche le message  d'erreur 
  if (strlen($message) >  strlen($msg_erreur)) {
  echo $message;

 
 // Si il y a une erreur le javascript réaffiche le  formulaire d'inscription
 ?>
      <script  language="JavaScript">
  setTimeout("window.location.href='./inscription.php  ' ", 5000);
  </script>
      <?php
//sinon c'est ok
 } else {
    foreach($_POST as $index => $valeur) {
      $$index =  mysql_real_escape_string(trim($valeur));
    }
 //Préparation de l'entête du mail:
  $mail_entete = "MIME-Version: 1.0\r\n";
  $mail_entete .= "From:  {$_POST['pseudo']} "
                ."<{$_POST['email']}>\r\n";
  $mail_entete .= 'Reply-To:  '.$_POST['email']."\r\n";
  $mail_entete .= 'Content-Type: text/plain;  charset="iso-8859-1"';
  $mail_entete .= "\r\nContent-Transfer-Encoding:  8bit\r\n";
  $mail_entete .= 'X-Mailer:PHP/' .  phpversion()."\r\n";
// préparation du corps du mail
  $mail_corps = "Bonjour $prenom et bienvenu sur le site de Memooh!\n";
  $mail_corps .= "Vous pourrez mémoriser vos idée cadeau\n";
  $mail_corps .= "Votre Pseudo : $pseudo\n";
  $mail_corps .= "Votre mot de passe : $passe gardez le présieusement\n";
  $mail_corps .= "A bientôt sur Memooh\n";
  //$mail_corps .= $comments;
  
  // Requête d'insertion dans la base si tout est ok
  $sql = "INSERT INTO mem_membre VALUES ('',  '".$pseudo."', '".$nom."', '".$prenom."',  '".md5("8j1W7WYPo6frEh4".$passe)."', 
  '".$statut."', '".$email."',  '".$autemail."', '".$sexe."', 
  '".$time."',  '".$ip."', '".$lasttime."', '".$online."')";
    $res  = mysql_query($sql);
  if ($res) {
      echo $msg_ok;
  // envoi du mail
  mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete);
  } else {
      echo mysql_error();
    }
  }
  // on détruit les variables de session, désormais  inutiles
  session_unset();
  session_destroy();
?>
    </div>
    <!--fin content --> 
    <!-- InstanceEndEditable --><br  class="clearFloat2" />  
    </div><!-- fin contentWrapper2  -->  
  <div id="footer2">  
  <p>© Copyright Goleobox © <a href="# target="_blank"></a> Tous droit  r&eacute;serv&eacute;s</p>    
    </div>  
</div><!--fin outerWrapper2 -->  
</body>
<script  type="text/javascript">  
  <!--  
  function AjoutFavoris(theURL,  theTITLE) {  
  window.external.AddFavorite(theURL,  theTITLE);  
  }  
  -->  
</script>  
<!-- InstanceEnd --></html>
Et les erreurs:

Notice: Undefined index: passe in /Applications/MAMP/htdocs/memooh/traitement.php on line 52

Notice: Undefined index: passe in /Applications/MAMP/htdocs/memooh/traitement.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/memooh/traitement.php:52) in /Applications/MAMP/htdocs/memooh/traitement.php on line 80

Voici les ligne 52 et 53 :
$password2=$_POST['passe'];
  $password = md5("8j1W7WYPo6frEh4".$_POST['passe']);
La ligne 80:
header("Location: ". $MM_redirectLoginFailed );

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par Cyrano » 23 sept. 2010, 17:47

J'ai cependant, en test, un warning:
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/memooh/traitement.php:51) in /Applications/MAMP/htdocs/memooh/traitement.php on line 79
Jette un coup d'oeil sur ce sujet

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 23 sept. 2010, 17:00

En test, j'utilise la version 5.3.2 de php et en prod la version 5.2.13

Pour mysql, je ne sais pas comment voir :/

Re: problème de code qui passe sous MAMP mais pas sur le serveur

par Cyrano » 23 sept. 2010, 16:51

As-tu pris soin d'avoir les mêmes versions de PHP/MySQL sur ton serveur distant et sur ta machine ? Sinon, as-tu identifié les différences ? Le cas échéant, quelles sont-elles ?

problème de code qui passe sous MAMP mais pas sur le serveur

par niklos0 » 23 sept. 2010, 16:19

Bonjour a tous,

J'ai un soucis avec mon code qui passe bien en local mais pas sur mon serveur OVH.
J'ai fait un site dans lequel on peut s'inscrire.
Voici la page inscription.php:
<?php require_once('Connections/memooh.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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;
}
}

mysql_select_db($database_memooh, $memooh);
$query_Rs_cnx = "SELECT pseudo, passe, statut FROM mem_membre";
$Rs_cnx = mysql_query($query_Rs_cnx, $memooh) or die(mysql_error());
$row_Rs_cnx = mysql_fetch_assoc($Rs_cnx);
$totalRows_Rs_cnx = mysql_num_rows($Rs_cnx);
?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['pseudo'])) {
  $loginUsername=$_POST['pseudo'];
  $password2=$_POST['passe'];
  $password = md5("8j1W7WYPo6frEh4".$_POST['passe']);
  $MM_fldUserAuthorization = "statut";
  $MM_redirectLoginSuccess = "page_membre.php";
  $MM_redirectLoginFailed = "echoue.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_memooh, $memooh);
      
  $LoginRS__query=sprintf("SELECT pseudo, passe, statut FROM mem_membre WHERE pseudo=%s AND passe=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text")); 
   
  $LoginRS = mysql_query($LoginRS__query, $memooh) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    
    $loginStrGroup  = mysql_result($LoginRS,0,'statut');
    
    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;          

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];    
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/espace_membre.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Inscription</title>
<!-- InstanceEndEditable -->
<link href="css/mac.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="head" -->
<!--**SCRIPT AJAX  VERIF SPEUDO **-->  
  <script  type="text/javascript">  
  <!--  
  function writediv(texte)  
       {  
        document.getElementById('pseudobox').innerHTML = texte;  
       }  
function verifPseudo(pseudo)  
       {  
       if(pseudo != '')  
                 {  
                 if(pseudo.length<2)  
                           writediv('<span  style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo  est trop court</span>');  
                 else if(pseudo.length>30)  
                           writediv('<span  style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo  est trop long</span>');  
                 else if(texte =  file('verifpseudo.php?pseudo='+escape(pseudo)))  
                           {  
            if(texte == 1)  
                 writediv('<span  style="color:#cc0000"><b>'+pseudo+' :</b> ce pseudo  est deja pris</span>');  
            else if(texte == 2)  
                 writediv('<span  style="color:#1A7917"><b>'+pseudo+' :</b> ce pseudo  est libre</span>');  
             else  
                 writediv(texte);  
                           }  
                 }  
       }  
function file(fichier)  
       {  
       if(window.XMLHttpRequest) // FIREFOX  
            xhr_object = new XMLHttpRequest();  
       else if(window.ActiveXObject) // IE  
            xhr_object = new  ActiveXObject("Microsoft.XMLHTTP");  
       else  
            return(false);  
       xhr_object.open("GET", fichier,  false);  
       xhr_object.send(null);  
       if(xhr_object.readyState == 4)  return(xhr_object.responseText);  
       else return(false);  
       }  
  //-->  
  </script>  
<!-- InstanceEndEditable -->
</head>

<body>
<div  id="topDiv"><img src="images/logo.png" /></div>
<!-- InstanceBeginEditable name="EditNav" -->
<div  id="navigation">
  <!--debut navigation --><?php include("haut2.php"); ?>
  <!--debut navigation -->
  
</div>
<!--fin navigation -->
<!-- InstanceEndEditable -->
<div id="outerWrapper2"><!--debut  outerWrapper2 -->  
  <div  id="contentWrapper2"><!-- debut contentWrapper2 --><!-- InstanceBeginEditable name="EditColonneGauche" -->
      <div id="leftColumn1">
        <!--debut  gauche -->
      </div>
      <!--fin  gauche -->
    <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditCentre" -->
    <div id="content2">
      <!--debut content  -->
      <?php
  $time = time();
  $ip = $_SERVER["REMOTE_ADDR"];
  ?>
  <form action="traitement.php" method="post" name="form1" id="form1">
      <table width="600" border="1" class="tblrepeat">
  <tr>
    <th>Pseudo :</th>
    <th><input type="text" name="pseudo" id="pseudo" onkeyup="verifPseudo(this.value)"  style="text-transform:capitalize;" /></th>
  </tr>
  <tr>
    <th>Nom :</th>
    <th><input type="text" name="nom" id="nom" style="text-transform:capitalize;" /></th>
  </tr>
  <tr>
    <th>Prénom :</th>
    <th><input type="text" name="prenom" id="prenom" style="text-transform:capitalize;" /></th>
  </tr>
  <tr>
    <th>Mot de passe :</th>
    <th><input type="password" name="password" id="password" /></th>
  </tr>
  <tr>
    <th>Confirmer le mot de passe :</th>
    <th><input type="password" name="confirm-password" id="confirm-password" /></th>
  </tr>
  <tr>
    <th>E-mail :</th>
    <th><input type="text" name="email" id="email" /></th>
  </tr>
  <tr>
    <th>Vous êtes :</th>
    <th>Homme :&nbsp;<input type="radio" name="sexe" value="Homme" />
    Femme :&nbsp;<input type="radio" name="sexe" value="Femme" /></th>
  </tr>
  <tr>
    <th>Autoriser de voir votre email :</th>
    <th>Oui :&nbsp;<input type="radio" name="autemail" value="oui" />
    Non :&nbsp;<input type="radio" name="autemail" value="non" /></th>
  </tr>
  <tr>
    <th>Code de sécurité :</th>
    <th><input type="text" name="verif" size="10" maxlength="6" />&nbsp;<img src="captcha.php" alt="captcha" id="captcha" align="absmiddle" />
    <!-- (JavaScript) Changer d'image à la volée si elle est illisible  -->
 <a style="cursor:pointer" onClick="document.images.captcha.src='captcha.php?id='+Math.round(Math.random(0)*1000)+1">Actualisé</a>
                  </th>
  </tr>
  <tr>
    <th><input type="reset" value="Recommencer" /></th>
    <th><input type="submit" title="Effectuer l'inscription" name="Effectuer l'inscription" value="Effectuer l'inscription" /></th></th>
  </tr>
</table>
<input type="hidden" name="statut" id="statut" value="membre" />
<input type="hidden" name="time" id="time" value="<?php echo $time; ?>" />
<input type="hidden" name="ip" id="ip" value="<?php echo $ip; ?>" />
  </form>
    </div>
    <!--fin content -->
    <!-- InstanceEndEditable --><br  class="clearFloat2" />  
    </div><!-- fin contentWrapper2  -->  
  <div id="footer2">  
  <p>© Copyright Goleobox © <a href="# target="_blank"></a> Tous droit  r&eacute;serv&eacute;s</p>    
    </div>  
</div><!--fin outerWrapper2 -->  
</body>
<script  type="text/javascript">  
  <!--  
  function AjoutFavoris(theURL,  theTITLE) {  
  window.external.AddFavorite(theURL,  theTITLE);  
  }  
  -->  
</script>  
<!-- InstanceEnd --></html>
Comme on peut le voir, le formulaire renvoi vers traitement.php dont voici le code:
<?php session_start(); //on initialise la session
require_once('Connections/memooh.php');
if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
  if (PHP_VERSION < 6) {
    $theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($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;
}
}

mysql_select_db($database_memooh, $memooh);
$query_Rs_cnx = "SELECT pseudo, passe, statut FROM mem_membre";
$Rs_cnx = mysql_query($query_Rs_cnx, $memooh) or die(mysql_error());
$row_Rs_cnx = mysql_fetch_assoc($Rs_cnx);
$totalRows_Rs_cnx = mysql_num_rows($Rs_cnx);
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
  session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['pseudo'])) {
  $loginUsername=$_POST['pseudo'];
  $password2=$_POST['passe'];
  $password = md5("8j1W7WYPo6frEh4".$_POST['passe']);
  $MM_fldUserAuthorization = "statut";
  $MM_redirectLoginSuccess = "page_membre.php";
  $MM_redirectLoginFailed = "echoue.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_memooh, $memooh);

  $LoginRS__query=sprintf("SELECT pseudo, passe, statut FROM mem_membre WHERE pseudo=%s AND passe=%s",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));

  $LoginRS = mysql_query($LoginRS__query, $memooh) or die(mysql_error());
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {

    $loginStrGroup  = mysql_result($LoginRS,0,'statut');

    if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;

    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
    }
    header("Location: " . $MM_redirectLoginSuccess );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
} ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/espace_membre.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!-- InstanceBeginEditable name="doctitle" -->
<title>Document sans titre</title>
<!-- InstanceEndEditable -->
<link href="css/mac.css" rel="stylesheet" type="text/css" />
<!-- InstanceBeginEditable name="head" -->
<!-- InstanceEndEditable -->
</head>

<body>
<div  id="topDiv"><img src="images/logo.png" /></div>
<!-- InstanceBeginEditable name="EditNav" -->
<div  id="navigation"> 
  <!--debut navigation -->
<?php include("haut2.php"); ?>
</div>
<!--fin navigation --> 
<!-- InstanceEndEditable -->
<div id="outerWrapper2"><!--debut  outerWrapper2 -->  
  <div  id="contentWrapper2"><!-- debut contentWrapper2 --><!-- InstanceBeginEditable name="EditColonneGauche" -->
    <div id="leftColumn1"> 
      <!--debut  gauche --> 
    </div>
    <!--fin  gauche --> 
    <!-- InstanceEndEditable --><!-- InstanceBeginEditable name="EditCentre" -->
    <div id="content2"> 
      <!--debut content  -->
<?php
  $msg_erreur = "<img src='images/sitemenu/erreur.png'  border='0' align='absmiddle'> <span class='redBold'> Les champs  suivants présentent les erreurs suivantes  :</span><br/><br/>";
  $msg_ok = "<img src='images/sitemenu/yes.png'  border='0' align='absmiddle'>   <span class='blueBold'>Votre inscription a bien été prise en compte.<br><a href='index.php'>Cliquez ici pour vous authentifier</a> <!-- Votre compte devra être validé par  l'administrateur--></span>";
  $message = $msg_erreur;
define('MAIL_DESTINATAIRE',$_POST["email"]); 
  define('MAIL_SUJET','Bienvenue sur Memooh'); 
// On définit chaque champ du formulaire.
  if(isset($_POST['pseudo']))  $pseudo = $_POST["pseudo"];
  if(isset($_POST['nom'])) $nom =  $_POST["nom"];
  if(isset($_POST['prenom']))  $prenom = $_POST["prenom"];
  if(isset($_POST['confirm-password']))  $passe = $_POST["confirm-password"];
  if(isset($_POST['statut']))  $statut = $_POST["statut"];
  if(isset($_POST['email']))  $email = $_POST["email"];
  if(isset($_POST['autemail']))  $autemail = $_POST["autemail"];
  if(isset($_POST['sexe'])) $sexe  = $_POST["sexe"];
  if(isset($_POST['time'])) $time  = $_POST["time"];
  if(isset($_POST['ip'])) $ip =  $_POST["ip"];
/* on vérifie que le code est toujours mémorisé en  session et qu'il fait 5 caractères */ 
/*print_r($_SESSION);
echo('<br />');
print_r($_SESSION['code']);
echo('<br />');
print_r(md5($_POST['verif'])); */
  if(!isset($_SESSION['captcha'])) die("Erreur !");
// on vérifie que la code entré est valide
  if($_SESSION['captcha'] != md5($_POST['verif'])) die("<span class='redBold'><img  src='images/sitemenu/erreur.png' border='0' align='absmiddle'> Erreur : le code de protection est invalide !</span><br>");

// vérification des champs 
 if (empty($_POST['pseudo'])) 
    $message .= "<span class='redBold'>Vous devez saisir un pseudo</span><br/>";
  if (empty($_POST['nom'])) 
    $message .= "<span  class='redBold'>Vous devez saisir votre nom</span><br/>";
  if (empty($_POST['prenom'])) 
    $message .= "<span  class='redBold'>Vous devez saisir votre  prenom</span><br/>";
  if (empty($_POST['password'])) 
    $message .= "<span class='redBold'>Vous devez saisir un  mot de passe</span><br/>";
  if (empty($_POST['confirm-password'])) 
    $message .= "<span class='redBold'>Vous devez  confirmer le mot de passe</span><br/>";
  //vérification du mot de passe
  if(!ereg("^[A-Za-z0-9]{4,}$",  $_POST["password"]))
  {
     $message .= "<span  class='redBold'>Votre mot de passe doit comporter au moins 4  caractères</span><br/>";
  }
  elseif($_POST["password"]  != $_POST["confirm-password"])
  {
     $message = "<span  class='redBold'>Votre mot de passe n'a pas été correctement  confirmé</span><br/>";
  }
//vérification de l'email
   if(!ereg("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]{2,}[.][a-zA-Z]{2,4}$", $_POST["email"]))
            {
                 $message  .= "<span class='redBold'>Votre adresse e-mail n'est pas  valide</span><br/>";
            }
            else
            {
                //vérification du couple  pseudo et email
mysql_select_db($database_memooh, $memooh) or die("cannot select DB");
  $sql="SELECT email FROM  mem_membre WHERE pseudo = '" . $_POST["pseudo"] . "'
  AND  email='".$_POST['email']."' ";
 $result=mysql_query($sql);
                  //si la requête ne retourne rien, cela signifie que le mail  n'existe pas
                  if(mysql_num_rows($result)  != 0)
                  {
                  $message .= "<span class='redBold'>Le couple Email - Pseudo existe deja</span><br/>";
                  }
            }
if (empty($_POST['sexe']))
    $message .= "<span class='redBold'>Vous devez cocher la case Homme ou Femme</span><br/>";
  if (empty($_POST['autemail']))
    $message .= "<span class='redBold'>Vous n'avez pas  précisé la visibilité de votre Email</span><br/>";
  // si un champ est vide, on affiche le message  d'erreur 
  if (strlen($message) >  strlen($msg_erreur)) {
  echo $message;

 
 // Si il y a une erreur le javascript réaffiche le  formulaire d'inscription
 ?>
      <script  language="JavaScript">
  setTimeout("window.location.href='./inscription.php  ' ", 5000);
  </script>
<?php
//sinon c'est ok
 } else {
    foreach($_POST as $index => $valeur) {
      $$index =  mysql_real_escape_string(trim($valeur));
    }
 //Préparation de l'entête du mail:
  $mail_entete = "MIME-Version: 1.0\r\n";
  $mail_entete .= "From:  {$_POST['pseudo']} "
                ."<{$_POST['email']}>\r\n";
  $mail_entete .= 'Reply-To:  '.$_POST['email']."\r\n";
  $mail_entete .= 'Content-Type: text/plain;  charset="iso-8859-1"';
  $mail_entete .= "\r\nContent-Transfer-Encoding:  8bit\r\n";
  $mail_entete .= 'X-Mailer:PHP/' .  phpversion()."\r\n";
// préparation du corps du mail
  $mail_corps = "Bonjour $prenom et bienvenu sur le site de Memooh!\n";
  $mail_corps .= "Vous pourrez mémoriser vos idée cadeau\n";
  $mail_corps .= "Votre Pseudo : $pseudo\n";
  $mail_corps .= "Votre mot de passe : $passe gardez le présieusement\n";
  $mail_corps .= "A bientôt sur Memooh\n";
  //$mail_corps .= $comments;
  
  // Requête d'insertion dans la base si tout est ok
  $sql = "INSERT INTO mem_membre VALUES ('',  '".$pseudo."', '".$nom."', '".$prenom."',  '".md5("8j1W7WYPo6frEh4".$passe)."', 
  '".$statut."', '".$email."',  '".$autemail."', '".$sexe."', 
  '".$time."',  '".$ip."', '".$lasttime."', '".$online."')";
    $res = mysql_query($sql);
  if($res) {
      echo($msg_ok);
  // envoi du mail
  mail(MAIL_DESTINATAIRE,MAIL_SUJET,$mail_corps,$mail_entete);
  } else {
      echo mysql_error();
    }
  }
  // on détruit les variables de session, désormais  inutiles
  session_unset();
  session_destroy();
?>
    </div>
    <!--fin content --> 
    <!-- InstanceEndEditable --><br  class="clearFloat2" />  
    </div><!-- fin contentWrapper2  -->  
  <div id="footer2">  
  <p>© Copyright Goleobox © <a href="# target="_blank"></a> Tous droit  r&eacute;serv&eacute;s</p>    
    </div>  
</div><!--fin outerWrapper2 -->  
</body>
<script  type="text/javascript">  
  <!--  
  function AjoutFavoris(theURL,  theTITLE) {  
  window.external.AddFavorite(theURL,  theTITLE);  
  }  
  -->  
</script>  
<!-- InstanceEnd --></html>
Comme je l'ai dis, en test sous MAMP tout ce passe a merveille. En production sur mon serveur OVH, l'inscription me renvoie vers echoue.php (mais l'utilisateur est bien entré dans la base) au lieu de m'indiquer que l'utilisateur est bien enregistré.

J'ai cependant, en test, un warning:
Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/memooh/traitement.php:51) in /Applications/MAMP/htdocs/memooh/traitement.php on line 79

Je me demande si mon soucis ne viens pas de ce fameux warning mais je n'arrive pas a comprendre pourquoi çà ne passe pas.
J'ai vérifier qu'il n'y avais pas d'espace qui trainait dans mon code et je n'en ai trouvé qu'un que j'ai supprimé et qui n'a pas résolu mon problème.

Une idée?

edit, je vois que les ligne ne sont pas afficher grace aux balise PHP donc pour info, la ligne 51:
$password2=$_POST['passe'];
La ligne 79:
header("Location: ". $MM_redirectLoginFailed );