authentification

Eléphant du PHP | 214 Messages

15 juin 2005, 11:31

Non non c'était juste pour savoir s'il y avait juste un utilisateur qui pouvait aller sur ta page ou si tu avais plusieurs utilisateurs dans une base de données. Avec le dernier code que Zeus t'a donné ça marche pas ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 11:31

1) MissAube voulait te demander si tu n'avais que 1 log et 1 pass pour acceder à ta page

2) Quand tu crée un lien, il faut mettre du texte entre <a> et </a>

Comment j'ai trouvé l'erreur, en allant voir le code source généré où j'ai vu que le lien était bien présent, mais sans texte à afficher...

Essaye ce code et tout va allez mieux :
<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>
<?
//Si le formulaire a été validé
if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    ?><a href='index.php?page=administration'>Administration</A><?
  } else {
    echo('erreur de login ou de mot de passe');
    ?><a href='index.php?page=news'>News</a><?
  }
} else {
  echo "Le formulaire n'est pas validé";
}
?>
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:33

non il doit pas reconnaitre les liens pourtant il devrait etre bon je les utilise ailleurs

Eléphant du PHP | 419 Messages

15 juin 2005, 11:37

oui ca marche mais on doit cliquer sur le lien il y a pas moyen que ca se fasse automatiquement en cliquant sur le bouton connecter

Eléphant du PHP | 214 Messages

15 juin 2005, 11:37

Tu es sûr que les identifiants de ton code et ceux que tu rentres dans ton formulaire sont exactement les mêmes ?
Si je me trompe pas quand tu rentres les bons identifiants ça doit t'afficher un lien qui t'amène vers ta page d'administration. Si c'est bien ça en rentrant directement l'adresse de ta page on doit pouvoir y accèder sans s'identifier, tu devrais alors utiliser des sessions. Mais bon autant j'ai mal compris et j'ai tout faux...

EDIT :

Si tu veux être redirigé directement mets une balise META :

Code : Tout sélectionner

<META http-equiv='refresh' content='0;URL=url de ta page'>

Eléphant du PHP | 419 Messages

15 juin 2005, 11:39

j'avais pas vu le nouveau code de zeus au debut

Eléphant du PHP | 419 Messages

15 juin 2005, 11:40

je créé comment les sessions j'ai lu le tuto mais j'ai pa tout compris

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 11:41

Je voudrais juste te poser une question :

Selon toi, est-ce que tu t'attendais à ce que les <a></a> te redirige vers une autre page ?

Si c'est ke cas, il faut que tu utilise la fonction header(). L'ennui, c'est qu'elle doit être appellé avant tout envoi de code HTML au navigateur, il faut donc que tu place ton script PHP au dessus de ton formulaire :
<?
//Si le formulaire a été validé
if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    header("index.php?page=administration");
  } else {
    echo('erreur de login ou de mot de passe');
    header("index.php?page=news");
  }
} else {
  echo "Le formulaire n'est pas validé";
}
?>
<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>
Mais prend bien garde à ne pas laisser d'espace entre le début de ta page et la balise <?
Modifié en dernier par zeus le 15 juin 2005, 11:44, modifié 1 fois.
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:41

le meta je le met ou ?
dans le test?

Eléphant du PHP | 419 Messages

15 juin 2005, 11:43

ca marche plus comme ca zeus il me renvoie ca

Parse error: parse error in c:\program files\easyphp1-8\www\identification.php on line 18

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 juin 2005, 11:43

Les balises META pour rediriger sont, selon moi, à utiliser en dernier recours car ily a un temps d'attente, même si on met à 0

De plus, si on passe par include, le transfert se fait sur le serveur et le client ne recoit que la page finale alors qu'avec META, l'utilisateur recoit la page intermédiaire qui demande la page finale. Côté performance, c'est pas négligeable
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, 11:45

Désolé, j'avais mis un : à la place d'un ;

Je viens d'éditer le code, réessaye.

Mais vu le numéro de ligne, je pense que tu doit avoir du code avant.

Donne moi le code du début de la page jusqu'au formulaire
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:46

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>
<body>
<?
//Si le formulaire a été validé
if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    header("index.php?page=administration");
  } else {
    echo('erreur de login ou de mot de passe');
    header("index.php?page=news");
  }
} else {
  echo "Le formulaire n'est pas validé";
}
?>
<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>

Eléphant du PHP | 214 Messages

15 juin 2005, 11:47

<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>
<?
//Si le formulaire a été validé
if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
  	session_start();
	
		// On enregistre la variable login qu'on fera passer sur ttes les pages
		// ATTENTION : Notez bien l'absence de $ devant login
		
		$_SESSION['login'] = $log;
    ?><META http-equiv='refresh' content='0;URL=index.php?page=administration'><?
  } else {
    echo('erreur de login ou de mot de passe');
    ?><a href='index.php?page=news'>News</a><?
  }
} else {
  echo "Le formulaire n'est pas validé";
}
?>

Si ton log et ton pass sont bons, tu crées une session dans laquelle tu enregistres le login.
Sur toutes tes pages suivantes tu commences ton code par session_start() (rien avant surtout) et tu vérifies si ta variable de session login a bien été remplie.
La balise meta sert à diriger l'utilisateur vers la page d'administration si ses identifiants sont bons
Modifié en dernier par MissAube le 15 juin 2005, 11:48, modifié 1 fois.

Eléphant du PHP | 419 Messages

15 juin 2005, 11:48

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Document sans titre</title>
</head>
<body>
<?
//Si le formulaire a été validé
if (isset($_POST["Submit"])) {

  $log= (isset($_POST["user_name"])) ? $_POST["user_name"] : "" ;
  $pass= (isset($_POST["password"])) ? $_POST["password"] : "";
  if($log == "artcaddba" && $pass == "Zyd8c6")
  {
    header("index.php?page=administration");
  } else {
    echo('erreur de login ou de mot de passe');
    header("index.php?page=news");
  }
} else {
  echo "Le formulaire n'est pas validé";
}
?>
<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>
maintenant il me renvoie ca
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