Bonjour à tous et d'avance merci.
Je développe un site en php, avec des sessions utilisateur, pour gérer leur compte.
Voilà mon souci :
L'utilisateur A se logge à partir de son poste (section "se connecter").
Il arrive donc sur son compte "zone membre" (tout va bien jusque là).
L'utilisateur B se logge sur n'importe quel poste à partir de la section 'se connecter'.
OU
L'utilisateur B tente d'accéder directement à la "zone membre"
Alors il se retrouve dans chez l'utilisateur A.
Donc en gros si A se logge, pendant X temps, tout le monde qui tente de se connecter sur retrouve loggé en tant que A.
Merci pour votre coup de main.
Voici le source :
Formulaire d'identification (simplifié) :
<form name="form1" method="POST" action="/index.php?id=78" enctype="multipart/form-data">
<table width="100%" border="0">
<tr>
<td><font size=2>Identifiant (email) </font></td>
<td><input name="login" type="text" id="login"></td>
</tr>
<tr>
<td><font size=2>Mot de passe</font> </td>
<td><input name="password" type="password" id="password"></td>
</tr>
<tr>
<td> </td>
<td><input name="Submit" type="submit" value="Identification"></td>
</tr>
</table>
</form>
Etape de traitement du formulaire :
require_once('config/config.inc.php');
session_start();
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($accesscheck)) {
$GLOBALS['PrevUrl'] = $accesscheck;
session_register('PrevUrl');
}
if ( isset($_POST) && (!empty($_POST['login'])) && (!empty($_POST['password'])) ) {
$loginUsername=$_POST['login'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "niveau";
$MM_redirectLoginSuccess = "/index.php?id=48";
//$MM_redirectLoginSuccess = "login2.php";
$MM_redirectLoginFailed = "/index.php?id=46";
$MM_redirecttoReferrer = false;
mysql_select_db("$dbbase",$db) OR DIE("Base de données inaccessible.");
$LoginRS__query=sprintf("SELECT idmembre, email, motdepasse, niveau FROM membres WHERE email='%s' AND motdepasse='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));
$LoginRS = mysql_query($LoginRS__query, $db) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = mysql_result($LoginRS,0,'niveau');
$_SESSION["MM_Username"] = $loginUsername;
$_SESSION["MM_Niveau"] = $loginStrGroup;
$_SESSION["MM_idmembre"] = mysql_result($LoginRS,0,'idmembre');
echo "mm_idmmebre : " .$_SESSION["MM_idmembre"];
if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
}
header("Location: " . $MM_redirectLoginSuccess );
exit;
}
else {
header("Location: ". $MM_redirectLoginFailed );
exit;
}
}
Si tout est ok, il est redirigé vers la page de visualisation de son compte :
//Compte client
require_once('config/config.inc.php');
session_start();
if ( ! isset($_SESSION["MM_idmembre"])) {
$insertGoTo = "index.php?id=46";
header(sprintf("Location: %s", $insertGoTo));
exit;
}
echo $_SESSION["MM_idmembre"];
?>
<SCRIPT LANGUAGE="JavaScript">
<!-- Script
function Ouvrir(page) {
if (window.fenetre_demande) fenetre_demande.close();
fenetre_demande = this.open(page, "_blank", "toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=no,width=500,height=300");
}
// Fin -->
</SCRIPT>
<SCRIPT LANGUAGE=JAVASCRIPT>
function verify(){
msg = "Détruire cette annonce ?";
return confirm(msg);
}
</SCRIPT>
<SCRIPT LANGUAGE=JAVASCRIPT>
function deconnect(){
msg = "Souhaitez-vous vraiment vous déconnecter ?";
return confirm(msg);
}
</SCRIPT>
<?
$var1_idmembre = "0";
if (isset($_SESSION["MM_idmembre"])) {
$var1_idmembre = (get_magic_quotes_gpc()) ? $_SESSION["MM_idmembre"] : addslashes($_SESSION["MM_idmembre"]);
echo "var idmembre" . $var1_idmembre;
}
$db = mysql_connect("$dbhost", "$dblogin", "$dbpass") OR DIE("Base de données inaccessible.");
mysql_select_db("$dbbase",$db) OR DIE("Base de données inaccessible.");
$query_offres_emploi = sprintf("SELECT * FROM offres_emploi WHERE idmembre=%s", $var1_idmembre);
$offres_emploi = mysql_query($query_offres_emploi, $db) or die(mysql_error());
$row_offres_emploi = mysql_fetch_assoc($offres_emploi);
$totalRows_offres_emploi = mysql_num_rows($offres_emploi);
$query_membres = sprintf("SELECT * FROM membres WHERE idmembre=%s", $var1_idmembre);
$membres = mysql_query($query_membres, $db) or die(mysql_error());
$row_membres = mysql_fetch_assoc($membres);
$totalRows_membres = mysql_num_rows($membres);
?>
</p>
<font size="2">Bienvenue <? echo $row_membres['email']; ?> dans votre espace personnel,<br>
Vous pouvez dès à présent déposer et consulter des annonces.</font></p>
<p><font size="2"><br>
</font></p>
<font size="2">
<? if (strlen($row_membres['profil'])==1){ ?>
<p><strong><a href="[~68~]">Accéder à la rubrique : espace recruteurs</a></strong></p>
<?}?>
<? if (strlen($row_membres['profil'])==0){ ?>
<p><strong><a href="[~44~]">Accéder à la rubrique : espace candidats </a></strong></p>
<?}?>
</font><p>
<font size="2">Récapitulatif de vos annonces en cours : </font>
<!--Recapitulatif des annonces emploi en cours-->
<? if (strlen($row_membres['profil'])==1){ ?>
<table width="95%" border="0">
<tr bgcolor="#04C026">
<font size="1"><td width="54%"><div align="center">Offres d'emploi</div></td>
<td width="46%"><div align="center">Actions</div></td></font>
</tr>
<?php do { ?>
<?php if ($totalRows_offres_emploi > 0) { // Show if recordset not empty ?>
<tr>
<td><div align="center"><font size="1">Ref: <?php echo $row_offres_emploi['id']; ?> - <?php echo $row_offres_emploi['titre']; ?></font></div></td>
<td class="style1"><div align="center"><font size="1">
Modifier -
<a href="[~76~]&id=<?php echo $row_offres_emploi['id']; ?>" Onclick="return verify()">Supprimer</a> -
<a href="javascript:Ouvrir('/details_offre.php?offre_id=<?php echo $row_offres_emploi['id']; ?>')">Visualiser</a> -
Paiement </font></div></td>
</tr>
<?php } // Show if recordset not empty ?>
<?php } while ($row_offres_emploi = mysql_fetch_assoc($offres_emploi)); ?>
<?php if ($totalRows_offres_emploi == 0) { // Show if recordset empty ?>
<tr>
<td><font size="2">Aucune annonce en cours </font></td>
<td> </td>
</tr>
<?php } // Show if recordset empty ?>
</table>
<?}?>
<?
$var1_liste_stages = "0";
if (isset($_SESSION["MM_idmembre"])) {
$var1_liste_stages = (get_magic_quotes_gpc()) ? $_SESSION["MM_idmembre"] : addslashes($_SESSION["MM_idmembre"]);
}
$db = mysql_connect("$dbhost", "$dblogin", "$dbpass") OR DIE("Base de données inaccessible.");
mysql_select_db("$dbbase",$db) OR DIE("Base de données inaccessible.");
$query_liste_stages = sprintf("SELECT * FROM liste_stages WHERE liste_stages.idmembre=%s", $var1_liste_stages);
$liste_stages = mysql_query($query_liste_stages, $db) or die(mysql_error());
$row_liste_stages = mysql_fetch_assoc($liste_stages);
$totalRows_liste_stages = mysql_num_rows($liste_stages);
?>
<p>
<!--Recapitulatif des annonces stage en cours-->
<? if (strlen($row_membres['profil'])==1){ ?>
<table width="95%" border="0">
<tr bgcolor="#04C026">
<font size="1"><td width="54%"><div align="center">Offres de stage </div></td></font>
<font size="1"><td width="46%"><div align="center">Actions</div></td></font>
</tr>
<?php do { ?>
<?php if ($totalRows_liste_stages > 0) { // Show if recordset not empty ?>
<tr>
<td><div align="center"><font size="1">Ref: <?php echo $row_liste_stages['id']; ?> - <?php echo $row_liste_stages['titre']; ?></font></div></td>
<td class="style1"><div align="center"><font size="1">Modifier - <a href="[~76~]&idannonce=<?php echo $row_liste_stages['id']; ?>" Onclick="return verify()">Supprimer</a> - <a href="javascript:Ouvrir('/details_stage.php?demande_id=<?php echo $row_liste_stages['id']; ?>')">Visualiser</a> - Paiement </font></div></td>
</tr>
<?php } // Show if recordset not empty ?>
<?php } while ($row_liste_stages = mysql_fetch_assoc($liste_stages)); ?>
<?php if ($totalRows_liste_stages == 0) { // Show if recordset empty ?>
<tr>
<td><font size="2">Aucune annonce en cours </font></td>
<td> </td>
</tr>
<?php } // Show if recordset empty ?>
</table>
<?}?>
<!--Liste des annonces de demandes d'emploi-->
<?
$var1_demandes_emploi = "0";
if (isset($_SESSION["MM_idmembre"])) {
$var1_demandes_emploi = (get_magic_quotes_gpc()) ? $_SESSION["MM_idmembre"] : addslashes($_SESSION["MM_idmembre"]);
}
$db = mysql_connect("$dbhost", "$dblogin", "$dbpass") OR DIE("Base de données inaccessible.");
mysql_select_db("$dbbase",$db) OR DIE("Base de données inaccessible.");
$query_demandes_emploi = sprintf("SELECT * FROM demandes_emploi WHERE demandes_emploi.idmembre=%s", $var1_demandes_emploi);
$demandes_emploi = mysql_query($query_demandes_emploi, $db) or die(mysql_error());
$row_demandes_emploi = mysql_fetch_assoc($demandes_emploi);
$totalRows_demandes_emploi = mysql_num_rows($demandes_emploi);
?>
<p>
<!--Recapitulatif des annonces stage en cours-->
<? if (strlen($row_membres['profil'])==0){ ?>
<table width="95%" border="0">
<tr bgcolor="#04C026">
<font size="1"><td width="54%"><div align="center">Liste des annonces de demandes d'emploi effectuées </div></td></font>
<font size="1"><td width="46%"><div align="center">Actions</div></td></font>
</tr>
<?php do { ?>
<?php if ($totalRows_demandes_emploi > 0) { // Show if recordset not empty ?>
<tr>
<td><div align="center"><font size="1">Ref: <?php echo $row_demandes_emploi['id']; ?> - <?php echo $row_demandes_emploi['titre']; ?></font></div></td>
<td class="style1"><div align="center"><font size="1">Modifier - <a href="[~76~]&idannonce=<?php echo $row_demandes_emploi['id']; ?>" Onclick="return verify()">Supprimer</a> - <a href="javascript:Ouvrir('/details_demande.php?demande_id=<?php echo $row_demandes_emploi['id']; ?>')">Visualiser</a> - Paiement</font></div></td>
</tr>
<?php } // Show if recordset not empty ?>
<?php } while ($row_demandes_emploi = mysql_fetch_assoc($demandes_emploi)); ?>
<?php if ($totalRows_demandes_emploi == 0) { // Show if recordset empty ?>
<tr>
<td><font size="2">Aucune annonce en cours </font></td>
<td> </td>
</tr>
<?php } // Show if recordset empty ?>
</table>
<?}?>
<br>
<a href="/index.php?id=79" Onclick="return deconnect()">Se déconnecter</a>
<?php
mysql_free_result($offres_emploi);
mysql_free_result($liste_stages);
mysql_free_result($demandes_emploi);
Afficher la suite