Script php-mysql pour securiser une page

Résolu/Fermé
gahmed Messages postés 71 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 12 septembre 2018 - 14 juin 2009 à 02:01
gahmed Messages postés 71 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 12 septembre 2018 - 21 juil. 2009 à 14:58
Bonjour,
j'ai un programme qui ne tourne pas. Es ce que quelqu'un pourrai m'aider
Le problème c'est que je dois me connecter sur:
-page1.php si c'est une secrétaire
-page2.php si c'est un docteur
Dans la base de données il y a la table docteur et celle secrétaire
La page de connexion contient deux inputs (pour le login et le password) , une liste déroulante qui contient le statut de la personne qui doit se connecter et un bouton pour valider.
voila le code html de la page d'accueil
<form method="post" action="">
	<center>
	<table width="343" height="221" bgcolor="#92b012">
	<tr>
	   <td height="30">
			LOGIN
	   </td>
	   <td>
	       <input type="text" name="log" >
	   </td>
	 </tr>
	 <tr>
	    <td>
		    MOT DE PASSE
		</td>
		<td>
		    <input type="password" name="mdp">
		</td>
	 </tr>
	 <tr>
	    <td>
		   STATUT
		</td>
		<td>
		  <select name="st">
			<option value="m">MEDECIN</option>
			<option value="s">SECRETAIRE</option>
		 </select>
		</td>
	</tr>	
	<tr>
	  <td colspan="2" align="center">
	    <input type="submit" value="CONNEXION"> 
	  </td>
	</tr>
	</table>
	</center>
	</form>

Quel code php a associer pour gerer la connexion?
Merci D'avance
A voir également:

13 réponses

william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
14 juin 2009 à 03:51
bsr
je suis partant pour toutes suggestions et correction


<body>
<?php

/*
	je part du principe ici que ta connexion se trouve 
	dans un autre fichier aui porte le nom de connexion_BDD.php
	et qui se trouve ici dans le même dossier que cette page
	
	aussi nous supposerons que dans ta base tu pocède une table 
	nommé "utilisateur" et qui pocède entre autre deux atributs 
	nommé respectivement : uti_login et uti_mdp designant ainsi 
	le login et le mot de passe de tes utilisateurs

*/

include "connexion_BDD.php";

if(isset($_POST['bt_connexion'])) // bt_connexion designe le nom de ton Boutton "je l'ai renomé
{
	//récuperation des variables
	$log = htmlentities( addslashes($_POST['log']));
	$mdp = htmlentities( addslashes($_POST['mdp']));
	$statut = $_POST['st'];

	// test de verification Si l'utilisateur existe vraiment
	$req_ver = mysql_query("SELECT * FROM utilisateur WHERE uti_login =".$log);
	if(mysql_num_rows($req_ver) == 0)
	{
		echo '<script>alert("Login Incorect")</script>';
	}
	else
	{
		$row_ver = mysql_fetch_array($req_ver);
		if($row_ver['uti_mdp'] != $mdp)
		{
			echo '<script>alert("Mot de passe incorect")</script>';
		}
		else
		{
			if($statut == "s")
			{
				echo "<script>window.location = page1.php</script>";
			}
			elseif($statut == "m")
			{
				echo "<script>window.location = page2.php</script>";
			}
		}
	}
}
	
?>


<form method="post" action="">
	<center>
	<table width="343" height="221" bgcolor="#92b012">
	<tr>
	   <td height="30">
			LOGIN
	   </td>
	   <td>
	       <input type="text" name="log" >
	   </td>
	 </tr>
	 <tr>
	    <td>
		    MOT DE PASSE
		</td>
		<td>
		    <input type="password" name="mdp">
		</td>
	 </tr>
	 <tr>
	    <td>
		   STATUT
		</td>
		<td>
		  <select name="st">
			<option value="m">MEDECIN</option>
			<option value="s">SECRETAIRE</option>
		 </select>
		</td>
	</tr>	
	<tr>
	  <td colspan="2" align="center">
	    <input type="submit" value="CONNEXION" name="bt_connexion"> 
	  </td>
	</tr>
	</table>
	</center>
	</form>

</body>



cdlt.
4
Merci pour le code mais un petit probleme car sur ma base de donnees j'ai deux tables (docteur et secretaire) qui contiennent chacune un login et un password mais ta requete ne gere que pour une table alors comment faire pour les deux tables?
Merci d'Avance
0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
14 juin 2009 à 13:47
bjr
tu vois c'est pourquoi il est important lorsque l'on demande de l'aide de bien detailler. ça permet d'eviter de perdre de temps.
pas grave donne moi la structure exacte de tes tables et des contraintes d'integrité et je te renvoie le code tout frais.
cdlt.
0
docteur(id,nomD, prenomD, identifiant, password)
secretaire(iidS,nomS, prenomS, login, pass)
0

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

Posez votre question
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
14 juin 2009 à 14:51
bjr essaie ça voir
<body>
<?php

/*
	je part du principe ici que ta connexion se trouve 
	dans un autre fichier aui porte le nom de connexion_BDD.php
	et qui se trouve ici dans le même dossier que cette page
	
	aussi nous supposerons que dans ta base tu pocède une table 
	nommé "utilisateur" et qui pocède entre autre deux atributs 
	nommé respectivement : uti_login et uti_mdp designant ainsi 
	le login et le mot de passe de tes utilisateurs

*/


include "connexion_BDD.php";

if(isset($_POST['bt_connexion'])) // bt_connexion designe le nom de ton Boutton "je l'ai renomé
{
	//récuperation des variables
	$log = htmlentities( addslashes($_POST['log']));
	$mdp = htmlentities( addslashes($_POST['mdp']));
	$statut = $_POST['st'];
	
	
	if($statut = "m")
	{
		// test de verification Si le Medecin existe vraiment
		$req_ver = mysql_query("SELECT * FROM Docteur WHERE identifiant =".$log);
		if(mysql_num_rows($req_ver) == 0)
		{
			echo '<script>alert("Login Incorect")</script>';
		}
		else
		{
			$row_ver = mysql_fetch_array($req_ver);
			if($row_ver['password'] != $mdp)
			{
				echo '<script>alert("Mot de passe incorect")</script>';
			}
			else
			{
				echo "<script>window.location = page2.php</script>";
			}
		}
	}
	elseif($statut = "s")
	{
		// test de verification Si laSecretaire existe vraiment
		$req_ver = mysql_query("SELECT * FROM secretaire WHERE login =".$log);
		if(mysql_num_rows($req_ver) == 0)
		{
			echo '<script>alert("Login Incorect")</script>';
		}
		else
		{
			$row_ver = mysql_fetch_array($req_ver);
			if($row_ver['pass'] != $mdp)
			{
				echo '<script>alert("Mot de passe incorect")</script>';
			}
			else
			{
				echo "<script>window.location = page1.php</script>";
			}
		}
	}

}
	
?>


<form method="post" action="">
	<center>
	<table width="343" height="221" bgcolor="#92b012">
	<tr>
	   <td height="30">
			LOGIN
	   </td>
	   <td>
	       <input type="text" name="log" >
	   </td>
	 </tr>
	 <tr>
	    <td>
		    MOT DE PASSE
		</td>
		<td>
		    <input type="password" name="mdp">
		</td>
	 </tr>
	 <tr>
	    <td>
		   STATUT
		</td>
		<td>
		  <select name="st">
			<option value="m">MEDECIN</option>
			<option value="s">SECRETAIRE</option>
		 </select>
		</td>
	</tr>	
	<tr>
	  <td colspan="2" align="center">
	    <input type="submit" value="CONNEXION" name="bt_connexion"> 
	  </td>
	</tr>
	</table>
	</center>
	</form>

</body>

0
william7007 Messages postés 335 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 23 mars 2010 46
14 juin 2009 à 14:58
Bonjour si vraiment tu avais bien nommé les attributs de tes tables de la sorte:
Docteur(id,nomD, prenomD, login, password)
secretaire(iidS,nomS, prenomS, login, password)

alors tu pouvais utiliser une foncion comme celle qui suit et de là reduire tes lignes de codes et facilement gérer tes requetes (dans une fonction)

<body>
<?php

/*
	je part du principe ici que ta connexion se trouve 
	dans un autre fichier aui porte le nom de connexion_BDD.php
	et qui se trouve ici dans le même dossier que cette page
	
	aussi nous supposerons que dans ta base tu pocède une table 
	nommé "utilisateur" et qui pocède entre autre deux atributs 
	nommé respectivement : uti_login et uti_mdp designant ainsi 
	le login et le mot de passe de tes utilisateurs

*/

function verifieIdentifiant($table, $login, $pwd)
{
	$erreur = "";
	$corect = false;
	
	$req_ver = mysql_query("SELECT * FROM ".$table." WHERE login =".$login);
	if(mysql_num_rows($req_ver) == 0)
	{
		$erreur = '<script>alert("Login Incorect")</script>';
	}
	else
	{
		$row_ver = mysql_fetch_array($req_ver);
		if($row_ver['password'] != $pwd)
		{
			$erreur = '<script>alert("Mot de passe incorect")</script>';
		}
		else
		{
			$erreur = "<script>window.location = page2.php</script>";
		}
	}
	
	return $erreur;
}


include "connexion_BDD.php";

if(isset($_POST['bt_connexion'])) // bt_connexion designe le nom de ton Boutton "je l'ai renomé
{
	//récuperation des variables
	$log = htmlentities( addslashes($_POST['log']));
	$mdp = htmlentities( addslashes($_POST['mdp']));
	$statut = $_POST['st'];
	
	
	if($statut = "m")
	{
		echo verifieIdentifiant("Docteur", $_POST['log'], $_POST['mdp']);
	}
	elseif($statut = "s")
	{
		echo verifieIdentifiant("secretaire", $_POST['log'], $_POST['mdp']);
	}

}
	
?>


<form method="post" action="">
	<center>
	<table width="343" height="221" bgcolor="#92b012">
	<tr>
	   <td height="30">
			LOGIN
	   </td>
	   <td>
	       <input type="text" name="log" >
	   </td>
	 </tr>
	 <tr>
	    <td>
		    MOT DE PASSE
		</td>
		<td>
		    <input type="password" name="mdp">
		</td>
	 </tr>
	 <tr>
	    <td>
		   STATUT
		</td>
		<td>
		  <select name="st">
			<option value="m">MEDECIN</option>
			<option value="s">SECRETAIRE</option>
		 </select>
		</td>
	</tr>	
	<tr>
	  <td colspan="2" align="center">
	    <input type="submit" value="CONNEXION" name="bt_connexion"> 
	  </td>
	</tr>
	</table>
	</center>
	</form>

</body>

0
je passe pas il met l'erreur la
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\wamp\www\FANN\accueil.php on line 23
0
Bonjour,

Je te suggère de mettre à la place de :
Docteur(id,nomD, prenomD, login, password)
secretaire(iidS,nomS, prenomS, login, password)

Mettre :
cabinet(id,nom, prenom, login, password, fonction);

Ainsi, tu peux définir la "fonction" de chaque utilisateur sur la meme "table" (cabinet ici), Ainsi le rediriger vers l'interface voulu.
0
Overstyle Messages postés 32 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 7 mai 2011 1
14 juin 2009 à 15:19
Bonjour,
peut-être que je me trompe mais je pense que le plus simple serait de faire une seule Table 'utilisateurs' avec les champs:
id,
nom,
prenom,
password ,
statut

avec une requete du genre:

$query_connexion = mysql_query("SELECT * FROM utilisateurs");
$fetch_connexion = mysql_fetch_array($query_connexion);

if($fetch_connexion['statut'] == medecin)
{
header("Location:page2.php");
}
elseif($fetch_connexion['statut'] == secretaire)
{
header("Location:page1.php");
}
else
{
// A toi de voir...
}

Évidemment on n'a plus besoin de la liste déroulante dans le formulaire...

En espérant avoir été utile
@+
0
Mais sur tes codes il n' y a pas de verification pour voir si le login et le pass sont corrects
0
slt j'ai fait ce que tu m'as dit a savir mettre tut dans une meme table mais il ya tjrs des erreurs voila le code maintenant
<form method="post">
	<center>
	<table width="343" height="221" bgcolor="#92b012">
	<tr>
	   <td height="30">
			LOGIN
	   </td>
	   <td>
	       <input type="text" name="log" >
	   </td>
	 </tr>
	 <tr>
	    <td>
		    MOT DE PASSE
		</td>
		<td>
		    <input type="password" name="mdp">
		</td>
	 </tr>
	 <tr>
	    <td>
		   STATUT
		</td>
		<td>
		  <select name="st">
			<option value="m">MEDECIN</option>
			<option value="s">SECRETAIRE</option>
		 </select>
		</td>
	</tr>	
	<tr>
	  <td colspan="2" align="center">
	    <input type="submit" value="CONNEXION" name="bt_connexion"> 
	  </td>
	</tr>
	</table>
	</center>
	</form>



<?php
//page me permettant de me loger a differentes instances
$host='localhost';
$user='root';
$pass=''; 
$base='hopital';
$connect=mysql_connect($host,$user,$pass)or die("Une erreur est apparue lors de la connexion");
$select=mysql_select_db($base,$connect)or die("Une erreur est apparue lors de la connexion à la base de données");

 	$r1=$_POST['log'];
	$r2=$_POST['mdp'];
	
    $req="select * from personnel where speudo=\"$r1\" and password=\"$r2\"";
	if ($res=mysql_query($req))
	{
		echo "Succes";
	}else echo "echec requete";
    $reponse=mysql_fetch_array($res);
 
 if ( $reponse['speudo'] != NULL)
 {
      $timestamp_expire=time()+ 24*3600;
      setcookie('speudo',$reponse['log'],$timestamp_expire);
 
header("location:page1.php ");
 
}
else
{
header("location:accueil.php ");
 
}
mysql_close();
 
?>

les erreurs sont
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\FANN\accueil.php:15) in C:\wamp\www\FANN\accueil.php on line 85

Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\FANN\accueil.php:15) in C:\wamp\www\FANN\accueil.php on line 87
0
Overstyle Messages postés 32 Date d'inscription mardi 9 juin 2009 Statut Membre Dernière intervention 7 mai 2011 1
22 juin 2009 à 13:46
Il suffit te placer ton script php avant la balise <head> et de laisser ton formulaire la ou il est...
0
gahmed Messages postés 71 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 12 septembre 2018 3
21 juil. 2009 à 14:58
 <?php


			   //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "hospital" ) ;
    

if(isset($_POST['bt_connexion']) && ($_POST['log']) && ($_POST['mdp'])) 
{
	//récuperation des variables
	$log = htmlentities( addslashes($_POST['log']));
	$mdp = htmlentities( addslashes($_POST['mdp']));
	$statut = $_POST['st'];

	// test de verification Si l'utilisateur existe vraiment
	$req_ver = mysql_query("SELECT * FROM personnel WHERE speudo = '$log'");
	if(mysql_num_rows($req_ver) == 0)
	{
		echo '<script>alert("Login Incorect")</script>';
	}
	else
	{
		$row_ver = mysql_fetch_array($req_ver);
		if($row_ver['password'] != $mdp)
		{
			echo '<script>alert("Mot de passe incorect")</script>';
		}
		else
		{
			if($row_ver['statut'] == "Secretaire")
			{
				echo "<script>window.location = 'page1.php'</script>";
			}
			else if ($row_ver['statut'] == "Medecin")
			{
				echo "<script>window.location = 'attente.php'</script>";
			}
		}
	}
}
	
?>


<form method="post" action="">
	<center>
	<table width="343" height="221" bgcolor="#92b012">
	<tr>
	   <td height="30">
			LOGIN
	   </td>
	   <td>
	       <input type="text" name="log" >
	   </td>
	 </tr>
	 <tr>
	    <td>
		    MOT DE PASSE
		</td>
		<td>
		    <input type="password" name="mdp">
		</td>
	 </tr>
	
	<tr>
	  <td colspan="2" align="center">
	    <input type="submit" value="CONNEXION" name="bt_connexion"> 
	  </td>
	</tr>
	</table>
     </center>
   </form>


j'ai trouve la solution grâce a vous tous
Merci beaucoup pour l'aide que vous m'aviez apporte pour résoudre mon problème
0