header fait des siennes

header fait des siennes - PHP - Programmation

Marsh Posté le 25-04-2005 à 05:27:57    

voici mon petit script

<?session_start();?>
 
<form method="post">
<input type="password" size="20"  name="pass">
<input type="submit">
</form>
<?
if (isset($_POST['pass']))
{
$pass=$_POST['pass'];
 if ($pass==bibi){
  $_SESSION['admin']=true;
  header('location: ../index.php');}
 else
  echo "<br>mauvais password";
}
?>


 
voici mon erreur  

Warning: Cannot modify header information - headers already sent by (output started at /var/www/free.fr/0/1/badze/fonctions php/admin_test.php:9) in /var/www/free.fr/0/1/badze/fonctions php/admin_test.php on line 13


je me creuse un peu la tete (il est quand meme 5heure du mat :sleep: ), mais pas moyen, et j'ai fait mes recherches si cela peut rassuré certain.  
 
il aime pas header('location: ../index.php');
 
merci

Reply

Marsh Posté le 25-04-2005 à 05:27:57   

Reply

Marsh Posté le 25-04-2005 à 09:22:28    

Tiens ca devrais t'aidé, j'avais déjà posté le sujet:
http://forum.hardware.fr/forum2.ph [...] ash_post=0
 
 
Au faite ! Dans ton code je vois

Code :
  1. if($pass==bibi)
  2. // etc...


"bibi" c'est une chaine de caractère ? Si oui, oubli pas les double quotes. Et Tu peux faire un truc du style:

Code :
  1. if(strcmp($pass, "bibi" ) == 0)
  2. {
  3.   // ton code
  4. }
  5. //...


Message édité par AlphaZone le 25-04-2005 à 09:29:07
Reply

Marsh Posté le 25-04-2005 à 09:43:36    

C'est normal, tu commences à afficher des bouts de ton formulaires, puis tu fait ton header location, ce qui est incorrect. Un header location doit se faire avant tout outputting

Reply

Marsh Posté le 25-04-2005 à 10:52:24    

Et oui, je suis d'accord avec FlorentG, c'est pour cela que l'erreur est: "Cannot modify header information - headers already sent by (output started at"

Reply

Marsh Posté le 25-04-2005 à 13:44:41    

On peut mexpliquer le output, quest ce que ca signifie, et comment puis je corriger lerreur svp.

Reply

Marsh Posté le 25-04-2005 à 14:42:35    

Dès le départ où t'as quelque chose en dehors des <?php ?> (dans ton cas c'est <form method="post">...), l'header HTTP est envoyé. Donc tu ne peux pas le modifier par après. Donc tout ce qui touche à l'header doit être envoyé avant de mettre des trucs genre <form>. Donc petite correction :

<?php session_start();  
 
if (isset($_POST['pass'])) {
  $pass=$_POST['pass'];
 
  if ($pass==bibi){
    $_SESSION['admin']=true;
    header('location: ../index.php');
  } else {
  echo "<br>mauvais password";
 }
 
?>
 
<form method="post">
<input type="password" size="20"  name="pass">
<input type="submit">
</form>
?>


D'ailleurs je vois pas l'interêt d'afficher le formulaire, puis de tester le mot de passe pour enfin rediriger sur une autre page :/

Reply

Marsh Posté le 25-04-2005 à 15:07:57    

moi l'interet je le vois, dans mon cas de figure, il me faut ca.
 
malgré ton script bourré d'erreur, il marche tout le meme ;)
 
merci

Reply

Marsh Posté le 25-04-2005 à 15:11:10    

Quoi mon script bourré d'erreur ? :heink: C'est le tiens repris tel quel avec juste l'ordre des choses modifié, hein ;)

Reply

Marsh Posté le 25-04-2005 à 15:12:00    

Et pis comme dit y'a aucun interêt : Tu veux envoyer le formulaire au mec pour tout de suite après changer de page, donc ça sert strictement à rien d'afficher le formulaire [:itm]

Reply

Marsh Posté le 25-04-2005 à 15:23:28    

oui ton script a des erreurs,
il manque un } et il y a ?> en trop.
 
En fait je cree juste un formulaire pour l'admin.
il rentre le mot de passe, la session admin s'actionne, et toutes les options du site s'actionne.

Reply

Marsh Posté le 25-04-2005 à 15:23:28   

Reply

Marsh Posté le 25-04-2005 à 15:24:09    

c'est de l'arrache jadmet, mais pour un faux projet comme le mien, je ne vais pas chercher bien loin

Reply

Marsh Posté le 25-04-2005 à 15:35:43    

Badze a écrit :

oui ton script a des erreurs,
il manque un } et il y a ?> en trop.
 
En fait je cree juste un formulaire pour l'admin.
il rentre le mot de passe, la session admin s'actionne, et toutes les options du site s'actionne.


C'est pas un script, c'est un vague copié-collé histoire de montrer le truc :D

Reply

Marsh Posté le 25-04-2005 à 15:42:30    

"Vague", en effet, c'est le mot :D
 
En tout cas merci, je n'avais pas calculer le truc de mettre le code php en priorité en haut.
 
Thx florentG

Reply

Marsh Posté le 25-04-2005 à 15:49:07    

Utiliser le meme code pour faire l'affichage du formulaire et son traitement je trouve pas ca tres "top moumoute".
 
Dans ton cas tu as :
1) affichage form html
2) variables en post ? non
[envoi formulaire]
3) affichage form html
4) variables en post ? oui
5) bon password ?  
5a) oui => redirection
5b) non => msg d'erreur.
 
Je suis desole, mais afficher de nouveau le formulaire lors de la "2e passe" n'est pas tres logique...
Et c'est d'ailleurs a cause de ca (ainsi que du code html qui precede [tu crees bien un <html><header> qqpart non ? ]) que tu as ton probleme.

Reply

Marsh Posté le 25-04-2005 à 16:36:33    

cerel a écrit :


 
Je suis desole, mais afficher de nouveau le formulaire lors de la "2e passe" n'est pas tres logique...


 
Je ne vois pas vraiement ce que tu veut dire par la.
Je trouve logique que l'on vois mon formulaire sur mon password est faux.
 
Montre moi alors un meilleur script que le mien, donne moi conseil en montrant mieux stp.
Je verrai mieux la situation.

Reply

Marsh Posté le 25-04-2005 à 16:37:04    

S'il est faux, oui. Mais s'il est vrai c'est pas cool de balancer le formulaire pour rien :(

Reply

Marsh Posté le 25-04-2005 à 16:38:48    

ba dans tes modification, le formulaire n'est pas employer si la reponse est bonne :?

Reply

Marsh Posté le 25-04-2005 à 16:42:05    

Non, vu qu'il y a le header location

Reply

Marsh Posté le 25-04-2005 à 16:42:25    

Enfin j'ai oublié de trifouiller les accolades :D

Reply

Marsh Posté le 25-04-2005 à 16:47:06    

ba je vois pas ce que Cerel veut dire alors.
A moins qu'il me parle de mon 1er script, la je suis d'accord.
 
Confirmation Cerel ??

Reply

Marsh Posté le 25-04-2005 à 16:50:54    

Bon, voilà le truc :

<?php
  session_start();  
  $pouet = '';
 
  if(isset($_POST['pass'])) {
 
    if ($_POST['pass'] == 'bibi') {
 
      $_SESSION['admin'] = true;
      header('location: ../index.php');
 
    } else {
     
      $pouet = 'Mauvais password'
 
    }
  }
 
?>
 
<form method="post">
  <div>
    <label for="pass">Password</label> <input type="password" size="20"  name="pass" id="pass" />
    <p id="error"><?php echo $pouet ?></p>
    <input type="submit">
  </div>
</form>

Reply

Marsh Posté le 25-04-2005 à 17:12:57    

un truc que je nai toujours pas compris au niveau du html.
 
Pourquoi faite vous des Label, car je ne vois pas du tout l'utilité.
 
C'est pareil pour le id="error", ce serait des class CSS, je comprendrai mais la ??

Reply

Marsh Posté le 25-04-2005 à 18:08:56    

Pour l'id je compatis, en effet j'aurais utilisé une classe, mais le côté ultra-light du form peut expliquer cela.
 
Le label, c'est un peu à ça qu'il sert, en plus d'ajouter un petit truc que n'aurait pas un texte simple et une bonne simplification de la mise en page/forme :)

Reply

Marsh Posté le 25-04-2005 à 18:24:28    

mouai, si on veut, je ne suis pas convaincu.

Reply

Marsh Posté le 25-04-2005 à 19:24:19    

Badze a écrit :

un truc que je nai toujours pas compris au niveau du html.
 
Pourquoi faite vous des Label, car je ne vois pas du tout l'utilité.
 
C'est pareil pour le id="error", ce serait des class CSS, je comprendrai mais la ??


Recommandation HTML 4.01 :

Citation :

17.9 Les labels
 
Quelques commandes de formulaire ont des labels qui leur sont automatiquement associés (les boutons poussoirs) tandis que la plupart d'entre elles en sont dépourvues (les champs de texte, les cases à cocher et les boutons radio ainsi que les menus).
 
Pour celles des commandes qui ont un label implicite, les agents utilisateurs devraient utiliser la valeur de l'attribut value comme chaîne pour le label.
 
On utilise l'élément LABEL pour spécifier les labels des commandes qui n'ont pas de labels implicites.


 
De manière générale, on ne balance jamais de texte comme ça au beau milieu de nulle part. Avec ton formulaire, t'as tes contrôles, et de manière générale un texte associé. Et justement pour associer ce texte au contrôle, on utilise un label. Tu clique sur le label, ça t'ammène sur le contrôle. Pour ceux qui utilisent un lecteur d'écran, le lecteur va pouvoir énumérer chaque label associé, sans faire un gros mix incompréhensible avec du texte perdu. C'est tout. C'est comme ça, et on discute pas :D C'est comme ça qu'on fait des pages webs : on utilise des éléments pour un certain but. Si tu vois pas l'utilité des label, alors je pense que tu ne vois pas l'utilité des balises <p>... En effet, suffit de foutre un bloc de texte, un <br />, un bloc de texte, un <br />, etc. ;) :D

Reply

Marsh Posté le 25-04-2005 à 19:28:52    

je ne savais pas du tout, c'est tres bien expliquer,
cela sert juste a relier les 2 élément du formulaire, meme si ce n'est pas obligatoire pour l'éxécution de la page, il est quand meme conseiller de le faire.
 
merci

Reply

Marsh Posté le 25-04-2005 à 19:37:17    

Voilà :jap:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed