Headers... - Apprendre-PHP.com

Rechercher
Boutique en ligne, solution e-commerce, script PHP et PERL : RAYNETTE

Headers...

Par icez -  5 reponses -  Le 15/02/2008 -  Flux RSS - 

J'ai vu ton tutorial sur les header sur phpcs.. Et j'ai penser que tu pourrais surment m'aider...

J'obtien 1 erreur sur mon script... Quand je vais a la ligne 39, c'est une session start, alors j'ai compris que j'avais 1 header a quelque part de mal placer, mais je le trouve vraiment pas... Alors si possible tu pourrais me guider 1 peu, dit moi juste quoi que tu as besoin de savoir, ma te le dire.

Merci

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/icez/public_html/test/index2.php:5) in /home/icez/public_html/test/f/login.php on line 39

 

 

 

Réponses apportées à cette discussion

Par Geoffroy -  Le 15/02/2008 - 

un header s'envoit automatiquement lorsque tu affiche quelque chose à l'écran.

Si tu a utilisé le moindre echo, print, printf ou quoi que ce soit s'affichant du coté client (navigateur), c'est comme pour les cookies : ils utilisent ce header, donc étant déjà envoyé, ça ne fonctionnerai pas.

J'espère avoir bien répondu à ta question.

Geoffroy

http://www.planquart.fr 

 

 
Par Emacs -  Le 15/02/2008 - 

Peux-tu déposer les 10 / 15 lignes de code qui entourent la ligne 39 de ton fichier index2.php stp ?

 
Par Emacs -  Le 15/02/2008 - 

J'ai supprimé tes messages. Peux-tu reposter tes 15 lignes de code en utilisant la coloration syntaxique stp (icônes avec les accolades bleues). 

 
Par icez -  Le 15/02/2008 - 

Bien sure.

Index2.php

  1. <?
  2. require ("sources/header.php");
  3. require ("sources/functions.php");
  4. ?>
  5. <table width="100%">
  6. <td width="20%" valign="top" align"center"><b>
  7. <BR><BR>
  8. </b></td>
  9. <td valign="top">
  10. <?php
  11. if(file_exists($file))
  12. include($file);
  13. else
  14. require("f/main.php");
  15. ?>
  16. </td>
  17. </tr>
  18. </table>
  19. </body>
  20. </html>
  21. <BR><BR><BR><BR>
  22. <?
  23. require ("f/footer.php");
  24. ?>

Login.php

  1. <?
  2. include ('f/conf.php');
  3. $login=$_POST['login'];
  4. $_SESSION['login']=$login;
  5. $password=$_POST['password'];
  6. $mail=$_POST['mail'];
  7. if($login=='' || $password=='' || $mail=='')
  8. {
  9. echo '<script language=javascript> alert ("You forgot a field.");</script>';
  10. include('?act=Login');
  11. }
  12. $sql = "SELECT password FROM membres_tbl WHERE login='$login'";
  13. $req = mysql_query($sql) or die('SQL error !<br>'.$sql.'<br>'.mysql_error());
  14. $data = mysql_fetch_array($req);
  15. if($data['password'] != $password)
  16. {
  17. echo '<script language=javascript> alert ("Bad username / password. Try again");</script>';
  18. include('?act=Login');
  19. }
  20. else
  21. {
  22. $requete = "SELECT desti FROM private WHERE desti='$login'";
  23. $suite = mysql_query($requete) or die('SQL error !<br>'.$requete.'<br>'.mysql_error());
  24. $titi = mysql_fetch_array($suite);
  25. if ($titi['desti'] == $login)
  26. {
  27. session_register("login");
  28. }
  29. else
  30. {
  31. session_register('login');
  32. $_SESSION['login']=$login;
  33. }
  34. }
  35. ?>
 
Par Emacs -  Le 15/02/2008 - 

Aie aie aie... Ton code est rempli de potentielles failles de sécurité très dangereuses comme :

  • Inclusion de code à distance dans ton index2.php si allow_url_include du php.ini est à On
  • Injection SQL si magic_quotes_gpc est à Off

Ensuite, session_register() est obsolète. Je t'invite à relire les tutoriels des sessions et des traitements des formulaires présents sur ce site pour améliorer ton code.

Il y'a aussi de gros problèmes de conception. En effet, on ne traite pas les erreurs avec des Javascript. Le Javascript peut être désactivé chez le client, ce n'est pas fiable du tout.

Il faut penser aussi à retirer les or die() lorsque ton site passe en production finale. Les or die() doivent être utilisés uniquement pour débugguer le code en phase de développement.

Enfin, pense à utiliser les tags originaux de PHP ( <?php ) plutôt que les shorts tags ( <? ) qui peuvent être désactivés sur certaines configurations de php, et qui en plus provoquent des confusions avec les tags XML.

Concernant ton problème, il doit surement venir d'un espace blanc ou d'un défaut d'encodage du fichier php.

++

 

Ajouter une réponse à la discussion

Seuls les membres loggués sont autorisés à poster dans les forums !