authentification

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 11:49

Comme je te le disait à la fin d'un de mes post (ilfaut bien lire jusqu'a la fin), le header() doit se trouver AVANT le code HTML

Donc :
<?
//Si le formulaire a été validé
session_start();

if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    //exemple de mémorisation de connexion
    $_SESSION["identification"] = $log;
    header("index.php?page=administration");
  } else {
    header("index.php?page=news");
  }
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>
<body>
<form name="login" method="post">
  <div align="center">
    <input name="user_name" type="text">
    <input name="password" type="text">
    <br>
    <input type="submit" name="Submit" value="Connecter" >
    <br>
  </div>
</form>
</body>
</html>
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 419 Messages

15 juin 2005, 11:50

desole j'ai cru qu'il avait pas ete envoye

Eléphant du PHP | 419 Messages

15 juin 2005, 11:55

il me renvoie la meme chose
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\index.php:7) in c:\program files\easyphp1-8\www\identification.php on line 15

Eléphant du PHP | 214 Messages

15 juin 2005, 11:57

Avec la fonction header on est pas obligé de mettre location ?
header('location: page.html');

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 12:00

Et est-ce que tu t'es assuré que il n'y avais aucun espace entre le début de la page et la balise <?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 12:01

bingo MissAube
if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    //exemple de mémorisation de connexion
    $_SESSION["identification"] = $log;
    header("Location: index.php?page=administration");
  } else {
    header("Location: index.php?page=news");
  }
}
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 419 Messages

15 juin 2005, 12:04

non il n'y a en a pas
j'ai essaye en mettant location avant ca change rien

Eléphant du PHP | 419 Messages

15 juin 2005, 12:07

j'ai essaye avec ta modif ca donne rien non plus

bon desole j dois y aller j reprend a 14h

Eléphant du PHP | 214 Messages

15 juin 2005, 13:06

bingo MissAube
Lol, en fait je pensais qu'il était pas obligatoire vu que tu l'avais pas mis :D

Eléphant du PHP | 214 Messages

15 juin 2005, 13:11

if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    //exemple de mémorisation de connexion
    $_SESSION["identification"] = $log;
    header("Location: index.php?page=administration");
  } else {
    header("Location: index.php?page=news");
  }
}
Je pense avoir compris pourquoi ça marche pas mais je suis pas sure. Je vous expose ma théorie :

Pour rentrer dans le if il faut remplir la condition qui est que le login et le pass rentrés doivent être bons, seulement le formulaire n'a pas encore été rempli si on met le php avant le formulaire.
Donc quand le code est parcouru on va toujours dans le else non ?
Et même si quand on envoie le formulaire il appelle le code php vu que les headers doivent être envoyés avant on revient au problème de départ.

Je crois que je suis pas très claire et autant je dis n'importe quoi en plus...

Eléphant du PHP | 128 Messages

15 juin 2005, 13:54

J'ai pas tout suivi le test se fait avant la validation du formulaire?? oO

Si c'est le cas effectivement ca peut pas marcher.

Pour revenir sur le header, le probleme peut etre contourner avec les fonctions ob_start() et ob_end_flush() (il me semble en avoir deja parler)

En debut de script on appelle ob_start()
En fin de script ob_end_flush()

Et ainsi le header peut etre appele : avec ce systeme tous les texte de sorties sont "bufferisés" et on ne fait l'affichage que lors de l'appel de ob_end_flush()

en gros ton script ressemblerait a ca
<?
ob_start();


// traitement avec des header


ob_end_flush();
?>
La seul chose a laquelle il faut penser c'est d'eviter de mettre un saut de ligne ou meme du html avant "<?"

Enfin dernier point essayer quand vous coder de dissocier presentation et traitement du contenu, ainsi les applications deviennent beaucoup plus simple a debugger et a maintenir, ca evite enormement de complication...
C'est pas moi qui ai volé l'orange !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 14:05

Je suis d'accord avec toi Guakamol, mais visiblement sausee2005 ne maitrise pas encore le PHP alors plutôt que de partir dans de grand discours avec elle, je me contente de lui apprendre les bases.

Sinon, le test est réalisé avant le formulaire mais ça marche. Je vous explique l'algo :

si formulaire validé alors
si bon login et bon mot de passe alors
on redirige vers Administration
sinon
on redirige vers news
finsi
finsi

On ne teste rien tat qu'on a pas validé le formulaire et on ne raffiche pas le formulaire après validation car dans tu les cas, on est redirigé ailleurs.

Maintenant, je vais tester ce code chez moi pour voir si ça marche parce que je ne comprend pas d'où viens l'erreur sausee2005
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Invité
Invité n'ayant pas de compte PHPfrance

15 juin 2005, 14:19

ca marche toujours pas j'ai deplace le formulaire pour voir mais ca change rien
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>
<body>
<?
ob_start();
if (isset($_POST["Submit"])) {
  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    //exemple de mémorisation de connexion
    $_SESSION["identification"] = $log;
    header("Location: index.php?page=administration");
  } else {
    header("Location: index.php?page=news");
  }
}
ob_end_flush(); 
?>
<form name="login" method="post">
  <div align="center">
    <input name="user_name" type="text">
    <input name="password" type="text">
    <br>
    <input type="submit" name="Submit" value="Connecter" >
    <br>
  </div>
</form>
</body>
</html>
il me renvoi ca maintenant
Warning: Cannot modify header information - headers already sent by (output started at c:\program files\easyphp1-8\www\index.php:7) in c:\program files\easyphp1-8\www\identification.php on line 16
et au fait
Je suis d'accord avec toi Guakamol, mais visiblement sausee2005 ne maitrise pas encore le PHP alors plutôt que de partir dans de grand discours avec elle, je me contente de lui apprendre les bases.
c'est pas elle c'est lui :-s

Eléphant du PHP | 419 Messages

15 juin 2005, 14:20

desole oublie de me connecter

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 14:21

Alors là, désolé mais dans un post il m'avait semblé voir un "sûre" et j'en ai déduis que tu était du sexe féminin

Désolé :oops:

A l'occasion, je rechercherais ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer