Problème d'authentification

cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010 - 30 avril 2007 à 19:44
cs_nullite Messages postés 9 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 18 novembre 2009 - 10 mai 2007 à 04:51
Bonjour a tous,
j'ai un problème et j'espère que quelqu'un pourra m'aider a le résoudre voilà mon soucis:
j'ai une page index.php ou il ya un rebrique d'authentification càd (email, password ) avant de saisir l'email et le mot de passe j'ai donné la possibilité a l'utilisateur de cocher(avec des radio) est ce qu'il est un candidat ou un recruteur, voilà mon formulaire:

<form name="form1" method="post" >
  

        Candidat
  

       &nbsp; Recruteur  
            Email : 
    </td>
Mot de passe : 
   </td>
  
</form>
voilà mon code php:

<?php


if (isset(!empty($_POST['radio1'])))
{
if(isset($_POST) && !empty($_POST['email']) && !empty($_POST['password']))
{
 
$database = mysql_connect('localhost', 'root', '');




mysql_select_db('recrutement',$database);
 


  $mysql = "SELECT Email, Password FROM matabl_candt WHERE Email='".$_POST['email']."' and Password='".$_POST['password']."'";
  $req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());


  $data = mysql_fetch_assoc($req);


  if($data['Password'] != $_POST['password']) {
   
     echo "Ton Pass ne correspond pas à celui de la BDD"; 


   }
  else {
       session_start();
       $_SESSION['Email'] = $_POST['email'];


    echo "Tu es bien connecté";


}  
}
else {


   echo "Tu as oublié de remplir un champ";


}
 header( "Location: http://localhost/recrute/AccueilCandidat.php" );
}
}


else if (isset(!empty($_POST['radio2'])))


{
if(isset($_POST) && !empty($_POST['email']) && !empty($_POST['password']))
{
 
$database = mysql_connect('localhost', 'root', '');




mysql_select_db('recrutement',$database);
 


  $mysql = "SELECT Email, Password FROM matable_recrut WHERE Email='".$_POST['email']."' and Password='".$_POST['password']."'";
  $req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());


  $data = mysql_fetch_assoc($req);


  if($data['Password'] != $_POST['password']) {
   
     echo "Ton Pass ne correspond pas à celui de la BDD"; 


   }
  else {
       session_start();
       $_SESSION['Email'] = $_POST['email'];


    echo "Tu es bien connecté";


}  
}
else {


   echo "Tu as oublié de remplir un champ";


}
 header( "Location: http://localhost/recrute/AccueilRecruteur.php" );
}
}


?>

13 réponses

cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
30 avril 2007 à 19:47
bon j'ai oublié d'expliquer  mon problème c'est que lorsque je click sur le bouton connexion il m'affiche cette erreur sur ma page :
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at c:\files\easyphp1-8\www\file\index.php:9)
est qu'il ya un moyen pour résoudre cette erreur
merci d'avance
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 avril 2007 à 19:50
Salut,

Pour envoyer des cookies (ce que fait session_start si les sessions utilisent des cookies), comme pour utiliser la fonction header(), il ne faut pas que du texte ait déjà été envoyé, parce qu'ils font partie des entêtes.
Les entêtes, comme leur nom l'indique, sont envoyés en... entête. Si tu envoies du texte, c'est le corps de la réponse HTTP du serveur.

Une simple recherche sur google avec le message d'erreur donnait la solution...

Bonne continuation.
0
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
30 avril 2007 à 20:05
oui c'est fais mais j'ai pas trouvé grande chose, est ce que vous avez un exemple similaire de l'authentification des utilisateurs car je suis vraiment bloqué merci d'avance
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 avril 2007 à 20:10
Je sais pas comment le dire...

Dans ton script, tu envoies du texte avant d'utiliser une fonction qui envoie des headers.
Or, quand tu envoies du texte, tu ne peux plus envoyer de header (set_sookie(), header() ou session_start(), etc), parce que ce n'est plus l'endroit.

Donc, il faut corriger ton script pour qu'il n'envoie plus de texte avant d'envoyer de header. C'est tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
30 avril 2007 à 20:23
est ce que vous avez une idée sur comment je peux enlever du text parceque j'ai pas bien saisie votre réponse, merci
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 avril 2007 à 20:43
Pour ça, faudrait voir la source du script...
0
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
30 avril 2007 à 20:55
je vous ai déjà envoyé toute la source, la voilà:
<form name="form1" method="post" >
  

        Candidat
  

       &nbsp; Recruteur  
            Email : 
    </td>
Mot de passe : 
   </td>
  
</form>
voilà mon code php:

<?php
if (isset(!empty($_POST['radio1'])))
{
if(isset($_POST) && !empty($_POST['email']) && !empty($_POST['password']))
{
 
$database = mysql_connect('localhost', 'root', '');

mysql_select_db('recrutement',$database);
 

  $mysql = "SELECT Email, Password FROM matabl_candt WHERE Email='".$_POST['email']."' and Password='".$_POST['password']."'";
  $req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['Password'] != $_POST['password']) {
   
     echo "Ton Pass ne correspond pas à celui de la BDD"; 

   }
  else {
       session_start();
       $_SESSION['Email'] = $_POST['email'];

    echo "Tu es bien connecté";

}  
}
else {

   echo "Tu as oublié de remplir un champ";

}
 header( "Location: http://localhost/recrute/AccueilCandidat.php" );
}
}

else if (isset(!empty($_POST['radio2'])))

{
if(isset($_POST) && !empty($_POST['email']) && !empty($_POST['password']))
{
 
$database = mysql_connect('localhost', 'root', '');

mysql_select_db('recrutement',$database);
 

  $mysql = "SELECT Email, Password FROM matable_recrut WHERE Email='".$_POST['email']."' and Password='".$_POST['password']."'";
  $req = mysql_query($mysql) or die('Erreur SQL !
'.$mysql.'
'.mysql_error());

  $data = mysql_fetch_assoc($req);

  if($data['Password'] != $_POST['password']) {
   
     echo "Ton Pass ne correspond pas à celui de la BDD"; 

   }
  else {
       session_start();
       $_SESSION['Email'] = $_POST['email'];

    echo "Tu es bien connecté";

}  
}
else {

   echo "Tu as oublié de remplir un champ";

}
 header( "Location: http://localhost/recrute/AccueilRecruteur.php" );
}
}

?>
merci encore de votre patience
0
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
30 avril 2007 à 22:30
Salut,


"Ne pas envoyer du texte", compte aussi pour les Warning generer par PHP, ainsi juste ces deux lignes :

if (isset(!empty($_POST['radio1']))) << empty() est appler avant isset(), si $_POST['radio1'] existe pas, Warning
{
if(isset($_POST) && !empty($_POST['email']) && !empty($_POST['password'])) << idem pour le Warning, tu ne verifie par si $_POST['email'] et $_POST['password'] EXISTE (avec isset()).
{


id="radio1" name="choix" << $_POST['choix'] et non $_POST['radio1'] ou alors j'ai pas compris le sens du code... id servant quand ont joue au JS et aux <label for="nom_du_id">


Faut consulter la doc PHP, ansi :
mysql_select_db('recrutement',$database);

http://fr2.php.net/manual/fr/function.mysql-select-db.php
link_identifier ... "Si aucune connexion n'est trouvée ou établie, une alerte E_WARNING est générée."


Mauvaise indentation, mais :
else
{
echo "Tu as oublié de remplir un champ";
}
header( "Location: http://localhost/recrute/AccueilCandidat.php" );

Tu envoie du texte avant ton header(), ce que ta dis Neigedhiver.


http://fr2.php.net/manual/fr/
0
neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
30 avril 2007 à 22:44
Moi, j'abandonne... Bon courage juki...
0
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
1 mai 2007 à 04:04
salut juki, merci pour ton explication, mais j'ai oublié de vous dire que je suis débutant en php et c'est mon premier site , lorsque tu dis que empty() est appler avant isset(), qu'est ce que vus voudrai dire ?? et comment je peux vérifier si  $_POST['email'] et $_POST['password'] EXISTE ?
parceque j'ai trouvé ce bou de code sur un doc et je l'ai fais adapté merci de m'aider pour résoudre mon problème
0
juki_webmaster Messages postés 947 Date d'inscription mercredi 19 novembre 2003 Statut Membre Dernière intervention 5 avril 2008 3
1 mai 2007 à 10:17
if (isset(!empty($_POST['radio1'])))

empty() est evalué avant isset(), ici, empty() renvoie une valeur à la fonction isset().
a(b(c(d('quelque_chose')))); << d('quelque_chose') est évalué, le retour de cette fonction sera evalué par c(), le retour de c() sera evalué par b() etc...

"comment je peux vérifier si - une variable - EXISTE" << isset()
Dans un formulaire POST j'ai un champ 'test' => if (isset($_POST['test'])) { echo 'la variable POST test existe'; },


if(isset($_POST) && !empty($_POST['email']) && !empty($_POST['password'])) << ici tu as juste verifier si il ya des choses dans $_POST, mais tu ne verifie pas si $_POST['email'] et $_POST['password'] existe.

Le prototype de la fonction isset() nous dit : bool isset ( mixed var [, mixed var [, ...]] )

Les crochets et les virgules nous disent que nous pouvons faire evaluer plusieurs variables d'un coup;
if (isset($_POST['email'], $_POST['password']) && !empty($_POST['email']) && !empty($_POST['password'])) { }


http://fr.php.net/isset
http://fr.php.net/manual/fr/function.empty.php

Au final, il faut verifier qu'une variable existe pour ensuite faire des operations sur elles.
0
cs_machmacha Messages postés 97 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 28 mai 2010
3 mai 2007 à 13:47
bonjour a tous,
je veux faire un test comme ça:
if ( isset($email != '')&& isset($password != '') )
{
}
mais lorsque je lance le navigateur il m'affiche cet erreur:
Parse error: parse error, expecting `','' or `')'' in c:\files\easyphp1-8\www\doss\test.php on line 187
que puis je faire?
0
cs_nullite Messages postés 9 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 18 novembre 2009
10 mai 2007 à 04:51
Salut,

1) le "session_start" doit être la premiere chose que tu indique dans ton code c'est à dire qu'il faut l'écrire AVANT tout le code php et/ou html !

2) le "isset" renvoit true ou false sur une variable existante ou non. Il n'y a pas l'utilité de mettre une condition à l'interieur.
Soit tu ecris : if (isset($email) ...) {} soit tu écris if ($email != "" ...) {}
si tu veux compiler les deux, tu peux faire : if (isset($email) && $email != "" ...) {}

Bon courage pour la suite

pour info, le "site du zéro" propose des tutos bien fait pour les débutants.

Avec toute ma gratitude
0
Rejoignez-nous