Script php-mysql pour securiser une page [Résolu/Fermé]

Signaler
Messages postés
71
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
12 septembre 2018
-
gahmed
Messages postés
71
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
12 septembre 2018
-
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

13 réponses

Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
45
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

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 86853 internautes nous ont dit merci ce mois-ci

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
Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
45
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.
docteur(id,nomD, prenomD, identifiant, password)
secretaire(iidS,nomS, prenomS, login, pass)
Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
45
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>

Messages postés
335
Date d'inscription
dimanche 28 décembre 2008
Statut
Membre
Dernière intervention
23 mars 2010
45
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>

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
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.
Messages postés
32
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
7 mai 2011
1
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
@+
Mais sur tes codes il n' y a pas de verification pour voir si le login et le pass sont corrects
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
Messages postés
32
Date d'inscription
mardi 9 juin 2009
Statut
Membre
Dernière intervention
7 mai 2011
1
Il suffit te placer ton script php avant la balise <head> et de laisser ton formulaire la ou il est...
Messages postés
71
Date d'inscription
mardi 27 novembre 2007
Statut
Membre
Dernière intervention
12 septembre 2018
3
 <?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