Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL Webou Webou Pro
Recherche avancée  
*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
25 Novembre 2017, 10:39:42


Connexion avec identifiant, mot de passe et durée de la session


Pages: [1]   Bas de page
  Imprimer  
Auteur Fil de discussion: bug code  (Lu 2291 fois)
0 Membres et 1 Invité sur ce fil de discussion.
ruru23
Nouveau
*
Hors ligne Hors ligne

Messages: 5


Voir le profil WWW
« le: 29 Juillet 2009, 16:59:02 »

Bonjour, j'ai un petit problème avec mon code qui m'indique les erreurs suivantes:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/ruru23/public_html/index.php:1) in /home/ruru23/public_html/index.php on line 3

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/ruru23/public_html/index.php:1) in /home/ruru23/public_html/index.php on line 3

Warning: Cannot modify header information - headers already sent by (output started at /home/ruru23/public_html/index.php:1) in /home/ruru23/public_html/index.php on line 4

j'aimerais savoir d'où cela provient Clin d'oeil
Merci beaucoup Clin d'oeil

« Dernière édition: 29 Juillet 2009, 17:35:04 par ruru23 » Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« le: 29 Juillet 2009, 16:59:02 »

 Journalisée
pokermaster
Nouveau
*
Hors ligne Hors ligne

Messages: 14


Voir le profil
« Répondre #1 le: 30 Juillet 2009, 00:44:48 »

Bonjour ruru23,

Ce message d'erreur s'affiche quand tu essaies d'instancier une session sur ta page alors que des données ont déjà été envoyées au navigateur.
Le demarrage de la session par la fonction session_start() doit être la première ligne de code afin de fonctionner correctement, il ne doit même pas y avoir ne serait-ce qu'un espace qui le précéde.

Si tu as un soucis n'hésites pas à poster le code de ta page afin d'obtenir de plus amples informations de notre part car sans cela difficile de te guider dans les modifications à y apporter...

Voilà en espérant que cela pourra t'aider, bon code  Cool
Journalisée
ruru23
Nouveau
*
Hors ligne Hors ligne

Messages: 5


Voir le profil WWW
« Répondre #2 le: 30 Juillet 2009, 16:40:34 »

Ok pokermaster, je vais donc vous donner le code:
Code:
<?php
session_start
();
header('Content-type: text/html; charset=utf-8');
include(
'config.php');

include(
'fonctions.php');
connexionbdd();
actualiser_session();

$titre '...';

include(
'haut.php'); 

include(
'menu.php');
?>


<div id="debut_corps">
   </div>

  <div id="corps">

<img src="letableau6.png" style="height: 178px; width: 470px; margin-left: auto; margin-right: auto; display: block;" /><br />

<p>.....</p>

<a href="inscription.php" class="bouton_inscr"></a><br />

   </div>

<div id="fin_corps"></div>

<div id="debut_livre_d_or">
<a href="#" class="lien_ldo">Livre d'or :</a>

</div>

<div id="livre_d_or">
<p class="inline">"...."
<br />
de .....        le ..
</p>
</div>

<div id="fin_livre_or"></div>
<div id="fin"></div>

<?php
mysql_close();
?>


</body>
</html>
Journalisée
pokermaster
Nouveau
*
Hors ligne Hors ligne

Messages: 14


Voir le profil
« Répondre #3 le: 30 Juillet 2009, 19:49:45 »

Re ruru23,

Rectification, l'erreur provient de ta redéfinition du header en ligne 3 qui n'est pas possible dans ce contexte en effet comme te le signales le message d'erreur que tu obtiens il est impossible de redéfinir les en-têtes lorsque l'output est déjà démarré (des données sont déjà envoyées avant cette commande).

Ta redéfinition du header est-elle nécessaire ?

Ne peux-tu pas à la place utiliser la balise meta Content-Type à la place ?

En espérant que cela puisse t'aider, bon code  Cool
Journalisée
chrmag
Bavard
***
Hors ligne Hors ligne

Messages: 131


Voir le profil WWW
« Répondre #4 le: 01 Août 2009, 12:48:59 »

Tu envoies un contenu deja a la ligne 1. Il se peut que tu aies des espaces avant le tag <?php, si tu ne voies pas d'espaces change l'encodage ou utilise un editeur hexadecimal pour effacer les quelques premiers caracteres.
Journalisée
Forums Webou.net - Hébergement gratuit et sans publicités avec PHP/MySQL
« Répondre #4 le: 01 Août 2009, 12:48:59 »

 Journalisée
ruru23
Nouveau
*
Hors ligne Hors ligne

Messages: 5


Voir le profil WWW
« Répondre #5 le: 02 Août 2009, 20:33:28 »

Code:
Je vous remercie pour vos réponses qui m'ont aidé, mais il fallait en fait encoder les pages en UFT-8 sans BOM ;).

Par contre, j'ai un autre petit problème avec mon traitement d'inscription, ca me dit qu'il y a une erreur dans la base de données. Je ne vois pas trop pourquoi...

code de trait-inscription.php:
[code]
<?php
session_start
();
header('Content-type: text/html; charset=utf-8');
include(
'config.php');

include(
'fonctions.php');
connexionbdd();
actualiser_session();

if(isset(
$_SESSION['membre_id']))
{
header('Location: '.ROOTPATH.'/index.php');
exit();
}


if(
$_SESSION['inscrit'] == $_POST['pseudo'] && trim($_POST['inscrit']) != '')
{
$informations = Array(/*Déjà inscrit (en cas de bug...)*/
true,
'Vous êtes déjà inscrit',
'Vous avez déjà complété une inscription avec le pseudo <span class="pseudo">'.htmlspecialchars($_SESSION['inscrit'], ENT_QUOTES).'</span>.',
' - <a href="'.ROOTPATH.'/index.php">Retourner à l\'index</a>',
ROOTPATH.'/connexion.php',
5
);
require_once('information.php');
exit();
}

function 
checkpseudo($pseudo)
{
if($pseudo == '') return 'empty';
else if(strlen($pseudo) < 3) return 'tooshort';
else if(strlen($pseudo) > 32) return 'toolong';

else
{
$result sqlquery("SELECT COUNT(*) AS nbr FROM membres WHERE membre_pseudo = '".mysql_real_escape_string($pseudo)."'"1);
global $queries;
$queries++;

if($result['nbr'] > 0) return 'exists';
else return 'ok';
}
}

function 
checkmdp($mdp)
{
if($mdp == '') return 'empty';
else if(strlen($mdp) < 4) return 'tooshort';
else if(strlen($mdp) > 50) return 'toolong';

else return 'ok';

}

function 
checkmdpS($mdp$mdp2)
{
if($mdp != $mdp2 && $mdp != '' && $mdp2 != '') return 'different';
else return checkmdp($mdp);
}

function 
checkmail($email)
{
if($email == '') return 'empty';
else if(!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#is'$email)) return 'isnt';

else
{
$result sqlquery("SELECT COUNT(*) AS nbr FROM membres WHERE membre_mail = '".mysql_real_escape_string($email)."'"1);
global $queries;
$queries++;

if($result['nbr'] > 0) return 'exists';
else return 'ok';
}
}

function 
checkmailS($email$email2)
{
if($email != $email2 && $email != '' && $email2 != '') return 'different';
else return 'ok';
}

function 
birthdate($date)
{
if($date == '') return 'empty';

else if(substr_count($date'/') != 2) return 'format';
else
{
$DATE explode('/'$date);
if(date('Y') - $DATE[2] <= 4) return 'tooyoung';
else if(date('Y') - $DATE[2] >= 135) return 'tooold';

else if($DATE[2]%== 0)
{
$maxdays = Array('31''29''31''30''31''30''31''31''30''31''30''31');
if($DATE[0] > $maxdays[$DATE[1]-1]) return 'invalid';
else return 'ok';
}

else
{
$maxdays = Array('31''28''31''30''31''30''31''31''30''31''30''31');
if($DATE[0] > $maxdays[$DATE[1]-1]) return 'invalid';
else return 'ok';
}
}
}

function 
vidersession()
{
foreach($_SESSION as $cle => $element)
{
unset($_SESSION[$cle]);
}
}

$_SESSION['erreurs'] = 0;

//Pseudo
if(isset($_POST['pseudo']))
{
$pseudo trim($_POST['pseudo']);
$pseudo_result checkpseudo($pseudo);
if($pseudo_result == 'tooshort')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudoENT_QUOTES).' est trop court, vous devez en choisir un plus long (minimum 3 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}

else if($pseudo_result == 'toolong')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudoENT_QUOTES).' est trop long, vous devez en choisir un plus court (maximum 32 caractères).</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}

else if($pseudo_result == 'exists')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudoENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}

else if($pseudo_result == 'ok')
{
$_SESSION['pseudo_info'] = '';
$_SESSION['form_pseudo'] = $pseudo;
}

else if($pseudo_result == 'empty')
{
$_SESSION['pseudo_info'] = '<span class="erreur">Vous n\'avez pas entré de pseudo.</span><br/>';
$_SESSION['form_pseudo'] = '';
$_SESSION['erreurs']++;
}
}

else
{
header('Location: index.php');
exit();
}

//Mot de passe
if(isset($_POST['mdp']))
{
$mdp trim($_POST['mdp']);
$mdp_result checkmdp($mdp'');
if($mdp_result == 'tooshort')
{
$_SESSION['mdp_info'] = '<span class="erreur">Le mot de passe entré est trop court, changez-en pour un plus long (minimum 4 caractères).</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}

else if($mdp_result == 'toolong')
{
$_SESSION['mdp_info'] = '<span class="erreur">Le mot de passe entré est trop long, changez-en pour un plus court. (maximum 50 caractères)</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}

else if($mdp_result == 'nofigure')
{
$_SESSION['mdp_info'] = '<span class="erreur">Votre mot de passe doit contenir au moins un chiffre.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;
}

else if($mdp_result == 'ok')
{
$_SESSION['mdp_info'] = '';
$_SESSION['form_mdp'] = $mdp;
}

else if($mdp_result == 'empty')
{
$_SESSION['mdp_info'] = '<span class="erreur">Vous n\'avez pas entré de mot de passe.</span><br/>';
$_SESSION['form_mdp'] = '';
$_SESSION['erreurs']++;

}
}

else
{
header('Location: index.php');
exit();
}

//Mot de passe suite
if(isset($_POST['mdp_verif']))
{
$mdp_verif trim($_POST['mdp_verif']);
$mdp_verif_result checkmdpS($mdp_verif$mdp);
if($mdp_verif_result == 'different')
{
$_SESSION['mdp_verif_info'] = '<span class="erreur">Le mot de passe de vérification diffère du mot de passe.</span><br/>';
$_SESSION['form_mdp_verif'] = '';
$_SESSION['erreurs']++;
if(isset($_SESSION['form_mdp'])) unset($_SESSION['form_mdp']);
}

else
{
if($mdp_verif_result == 'ok')
{
$_SESSION['form_mdp_verif'] = $mdp_verif;
$_SESSION['mdp_verif_info'] = '';
}

else
{
$_SESSION['mdp_verif_info'] = str_replace('passe''passe de vérification'$_SESSION['mdp_info']);
$_SESSION['form_mdp_verif'] = '';
$_SESSION['erreurs']++;
}
}
}

else
{
header('Location: index.php');
exit();
}

//mail
if(isset($_POST['mail']))
{
$mail trim($_POST['mail']);
$mail_result checkmail($mail);
if($mail_result == 'isnt')
{
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mailENT_QUOTES).' n\'est pas valide.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}

else if($mail_result == 'exists')
{
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mailENT_QUOTES).' est déjà pris, <a href="../contact.php">contactez-nous</a> si vous pensez à une erreur.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}

else if($mail_result == 'ok')
{
$_SESSION['mail_info'] = '';
$_SESSION['form_mail'] = $mail;
}

else if($mail_result == 'empty')
{
$_SESSION['mail_info'] = '<span class="erreur">Vous n\'avez pas entré de mail.</span><br/>';
$_SESSION['form_mail'] = '';
$_SESSION['erreurs']++;
}
}

else
{
header('Location: index.php');
exit();
}

//date de naissance
if(isset($_POST['date_naissance']))
{
$date_naissance trim($_POST['date_naissance']);
$date_naissance_result birthdate($date_naissance);
if($date_naissance_result == 'format')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Date de naissance au mauvais format ou invalide.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}

else if($date_naissance_result == 'tooyoung')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Agagagougougou areuh ? (Vous êtes trop jeune pour vous inscrire ici.)</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}

else if($date_naissance_result == 'tooold')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Plus de 135 ans ? Mouais...</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}

else if($date_naissance_result == 'invalid')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Le '.htmlspecialchars($date_naissanceENT_QUOTES).' n\'existe pas.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}

else if($date_naissance_result == 'ok')
{
$_SESSION['date_naissance_info'] = '';
$_SESSION['form_date_naissance'] = $date_naissance;
}

else if($date_naissance_result == 'empty')
{
$_SESSION['date_naissance_info'] = '<span class="erreur">Vous n\'avez pas entré de date de naissance.</span><br/>';
$_SESSION['form_date_naissance'] = '';
$_SESSION['erreurs']++;
}
}

else
{
header('Location: index.php');
exit();
}

//mail suite
if(isset($_POST['mail_verif']))
{
$mail_verif trim($_POST['mail_verif']);
$mail_verif_result checkmailS($mail_verif$mail);
if($mail_verif_result == 'different')
{
$_SESSION['mail_verif_info'] = '<span class="erreur">Le mail de vérification diffère du mail.</span><br/>';
$_SESSION['form_mail_verif'] = '';
$_SESSION['erreurs']++;
}

else
{
if($mail_result == 'ok')
{
$_SESSION['mail_verif_info'] = '';
$_SESSION['form_mail_verif'] = $mail_verif;
}

else
{
$_SESSION['mail_verif_info'] = str_replace(' mail'' mail de vérification'$_SESSION['mail_info']);
$_SESSION['form_mail_verif'] = '';
$_SESSION['erreurs']++;
}
}
}

else
{
header('Location: index.php');
exit();
}

//captcha
if($_POST['captcha'] == $_SESSION['captcha'] && isset($_POST['captcha']) && isset($_SESSION['captcha']))
{
$_SESSION['captcha_info'] = '';
}

else
{
$_SESSION['captcha_info'] = '<span class="erreur">Vous n\'avez pas recopié correctement le contenu de l\'image.</span><br/>';
$_SESSION['erreurs']++;
}

unset(
$_SESSION['reponse1'], $_SESSION['reponse2'], $_SESSION['reponse3']);
unset(
$_SESSION['captcha']);

//charte
if(isset($_POST['regle_ok']))
{

}

else
{
$_SESSION['regle_ok_info'] = '<span class="erreur">Vous n\'avez pas accepté la charte.</span><br />';
$_SESSION['erreurs']++;
}


/*************Fin étude******************/


function inscription_mail($mail$pseudo$passe)
{
$to $mail;
$subject 'Inscription sur '.TITRESITE.' - '.$pseudo;

$message '<html>
<head>
<title></title>
</head>

<body>
<div>Bienvenue sur '
.TITRESITE.' !<br/>
Vous avez complété une inscription avec le pseudo
'
.htmlspecialchars($pseudoENT_QUOTES).' à l\'instant.<br/>
Votre mot de passe est : '
.htmlspecialchars($passeENT_QUOTES).'.<br/>
Veillez à le garder secret et à ne pas l\'oublier.<br/><br/>

En vous remerciant.<br/><br/>
Moi - Wembaster de '
.TITRESITE.'
</body>
</html>'
;

//headers principaux.
$headers  'MIME-Version: 1.0' "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' "\r\n";
//headers supplémentaires
$headers .= 'From: "Mon super site" <contact@.......>' "\r\n";
$headers .= 'Cc: "Duplicata" <duplicata@.....>' "\r\n";
$headers .= 'Reply-To: "Membres" <membres@.....>' "\r\n";

$mail mail($to$subject$message$headers); //marche

if($mail) return true;
return 
false;
}





/********Entête et titre de page*********/
if($_SESSION['erreurs'] > 0$titre 'Erreur : Inscription 2/2';
else 
$titre 'Inscription 2/2';

include(
'haut.php');

/**********Fin entête et titre***********/

?>


<?php
include('menu.php');
?>


<div id="debut_corps">
   </div>

  <div id="corps">

<a href="index.php">Accueil</a> <span class="color_p">‹ Inscription 2/2</span>

<?php
echo stripos('abcdefg''ab'); //echo 0, car a est le premier caractère de abcdefg;
echo stripos('abcdefg''gh'); //FALSE
echo stripos('abcdefg''d'); //echo 3;, car d est le 4e caractère de abcdefg
?>


<?php
if($_SESSION['erreurs'] == 0)
{
$insertion "INSERT INTO membres VALUES(NULL, '".mysql_real_escape_string($pseudo)."',
'"
.md5($mdp)."', '".mysql_real_escape_string($mail)."',
"
.time().", '".mysql_real_escape_string($date_naissance)."',
'', '',
'', '',
'', '',
'', '',
"
.time().", 0)";

if(mysql_query($insertion))
{
$queries++;
vidersession();
$_SESSION['inscrit'] = $pseudo;
/*informe qu'il s'est déjà inscrit s'il actualise, si son navigateur
bugue avant l'affichage de la page et qu'il recharge la page, etc.*/
?>

<h1>Inscription validée !</h1>
<p>Nous vous remercions de vous être inscrit sur notre site, votre inscription a été validée !<br/>
Vous pouvez vous connecter avec vos identifiants <a href="connexion.php">ici</a>.
</p>
<?php
}

else
{
if(stripos(mysql_error(), $_SESSION['form_pseudo']) !== FALSE// recherche du pseudo
{
unset($_SESSION['form_pseudo']);
$_SESSION['pseudo_info'] = '<span class="erreur">Le pseudo '.htmlspecialchars($pseudoENT_QUOTES).' est déjà pris, choisissez-en un autre.</span><br/>';
$_SESSION['erreurs']++;
}

if(stripos(mysql_error(), $_SESSION['form_mail']) !== FALSE//recherche du mail
{
unset($_SESSION['form_mail']);
unset($_SESSION['form_mail_verif']);
$_SESSION['mail_info'] = '<span class="erreur">Le mail '.htmlspecialchars($mailENT_QUOTES).' est déjà pris, <a href="contact.php">contactez-nous</a> si vous pensez à une erreur.</span><br/>';
$_SESSION['mail_verif_info'] = str_replace('mail''mail de vérification'$_SESSION['mail_info']);
$_SESSION['erreurs']++;
$_SESSION['erreurs']++;
}

if($_SESSION['erreurs'] == 0)
{
$sqlbug true//plantage SQL.
$_SESSION['erreurs']++;
}
}
}

if($_SESSION['erreurs'] > 0)
{
if($_SESSION['erreurs'] == 1$_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu 1 erreur.</span><br/>';
else $_SESSION['nb_erreurs'] = '<span class="erreur">Il y a eu '.$_SESSION['erreurs'].' erreurs.</span><br/>';
?>

<h1>Inscription non validée.</h1>
<p>Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons
pas pu valider votre inscription, en voici les raisons :<br/>
<?php
echo $_SESSION['nb_erreurs'];
echo $_SESSION['pseudo_info'];
echo $_SESSION['mdp_info'];
echo $_SESSION['mdp_verif_info'];
echo $_SESSION['mail_info'];
echo $_SESSION['mail_verif_info'];
echo $_SESSION['date_naissance_info'];
echo $_SESSION['ville_info'];
echo $_SESSION['pays_info'];
echo $_SESSION['qcm_info'];
echo $_SESSION['captcha_info'];

if($sqlbug !== true)
{
?>

Nous vous proposons donc de revenir à la page précédente pour corriger les erreurs. (Attention, que vous
l'ayez correctement remplie ou non, la partie sur la charte et l'image est à refaire intégralement.)</p>
<div class="center"><a href="inscription.php">Retour</a></div>
<?php
}

else
{
?>

Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc
il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.</p>

<div class="center"><a href="inscription.php">Retenter une inscription</a> - <a href="contact.php">Contactez-nous</a></div>
<?php
}
}
?>

</div>


<div id="fin_corps"></div>

<div id="debut_livre_d_or">
<a href="#" class="lien_ldo">Livre d'or :</a>

</div>

<div id="livre_d_or" onclick="location.href='toilokdo.net';">
<p class="inline">"Super site mais gry  yr dhrdt s tyhd xrth hfrdy dg d  xdfh  df hfyr  rdy dhf dfhg d gydsgf wsdgg fyi sdgf sg ft sg gdf d gfgd  t sgrgs e r sg er ygsd  gfd gh g degr hgder gesy gtgdsfg  dgf  f d ds fws"
<br />
de ...............        le ..........
</p>
</div>

<div id="fin_livre_or"></div>
<div id="fin"></div>

</body>
</html>

quand on s'inscrit, il y a aussi marqué 03 avec les stripos('abcdefg').
Ma base de données est composée d'une table "membres" et de 15 champs Clin d'oeil

le message d'erreur est:
Vous avez rempli le formulaire d'inscription du site et nous vous en remercions, cependant, nous n'avons pas pu valider votre inscription, en voici les raisons :
Il y a eu 1 erreur.
Une erreur est survenue dans la base de données, votre formulaire semble ne pas contenir d'erreurs, donc il est possible que le problème vienne de notre côté, réessayez de vous inscrire ou contactez-nous.

Merci Clin d'oeil
[/code]
« Dernière édition: 02 Août 2009, 20:35:28 par ruru23 » Journalisée
Pages: [1]   Haut de page
  Imprimer  
 
Aller à:  

Propulsé par MySQL Propulsé par PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Dilber MC Theme by HarzeM
Page générée en 0.072 secondes avec 21 requêtes.