Vérfification d'une connexion ou redirection - PHP - Programmation
MarshPosté le 23-11-2005 à 12:54:42
Salut à tous,
Merci déjà poru votre aide hier. J'ai bien avancé.
Bon maintenant, je sens que je m'approche du session_start().
Avant cela, j'ai une questino sécu à poser:
Pour se connecter, les visiteurs passe par une page connexion.php, qui contient juste un formulaire et un action en POST vers un script login.php (lui_même lié à un script conf.php, histoire de brouiller un peu les pistes). Voici le script:
Citation :
<? require("conf/conf.php" );
// si le visteur est passé par la page connexion.php ou s'il s'est identifié en tombant directement sur cette page, on lui renvoit ses infos. mysql_connect($sql_seveur,$sql_user,$sql_passwd); // Connexion à MySQL
// on vérifie que le login et le mot de passe rentrés sont correct $table = mysql_db_query($sql_bdd,"SELECT * FROM connexion WHERE login='$_POST[login]'" );
// $row = colonne de l'utilisateur dans la base $row = mysql_fetch_array($table, MYSQL_ASSOC);
// on contrôle que le formulaire de la page connexion.php a bien été rempli, puis on contrôle que le champ "motdepasse" correspond bien à celui de la base. if (isset($_POST['login']) AND ($_POST['motdepasse']) AND $_POST['motdepasse'] == $row['password']) { header("Location:$url_ok" ); }
else { header("Location:$url_erreur" );exit; } mysql_close(); // Déconnexion de MySQL ?>
si les identifiants sont vérifier dans login.php, l'adresse $url_ok est en fait une page appelé default.php.
Le problème est de savoir comment protégé cette page si quelqu'un arrive dessus par hasard directement.
Pour l'instant la voici:
Citation :
<? require("conf/conf.php" ); // si le visteur est passé par la page connexion.php ou s'il s'est identifié en tombant directement sur cette page, on lui renvoit ses infos. $db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS $table=mysql_db_query($sql_bdd,"SELECT * FROM connexion WHERE login='$_POST[login]'" );
// SI L'ID N'EXISTE PAS if (isset($_POST['login']) AND ($_POST['motdepasse']) AND $_POST['motdepasse'] == $row['password']) { ?>
<!-- Début du squelette de la page html --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Espace Client </title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <style type="text/css"> <!-- body,td,th { font-family: Arial, Helvetica, sans-serif; font-size: 12px; } body { margin-left: 5px; margin-top: 0px; } a:link { color: #333333; text-decoration: underline; } a:visited { color: #333333; text-decoration: underline; } a:hover { color: #006699; text-decoration: none; } a:active { color: #333333; text-decoration: underline; } .Style1 { color: #FFFFFF; font-weight: bold; } --> </style> </head>
<? // affichage nbr de DEVIS echo $row['DEVIS']; ?>
</div></td> <td><div align="center">
<? // affichage nbr de FACTURES echo $row['FACTURES']; ?>
</div></td> <td><div align="center">
<? // affichage nbr de MAQUETTES echo $row['MAQUETTES']; ?>
</div></td> <td><div align="center">
<? // affichage nbr de DOCS echo $row['DOCS']; ?>
</div></td> <td><div align="center">
<? // affichage de la dernière mise à jour dans la base de données echo $row['MISE_A_JOUR']; ?> </div></td> </tr> </table> </body> </html>
<? } else { header("Location:$url_erreur" ); } mysql_close(); // Déconnexion de MySQL ?>
Désolé pour la tartine mais comme ça vous avez tous les éléments.
le souci c que quand je m'identifie sur la page $url_erreur, ben le script m'y renvois direct sans afficher le contenu <html> attendu. En gors, je suis en boucle sur la page $url_erreur.
Marsh Posté le 23-11-2005 à 12:54:42
Salut à tous,
Merci déjà poru votre aide hier. J'ai bien avancé.
Bon maintenant, je sens que je m'approche du session_start().
Avant cela, j'ai une questino sécu à poser:
Pour se connecter, les visiteurs passe par une page connexion.php, qui contient juste un formulaire et un action en POST vers un script login.php (lui_même lié à un script conf.php, histoire de brouiller un peu les pistes).
Voici le script:
<?
require("conf/conf.php" );
// si le visteur est passé par la page connexion.php ou s'il s'est identifié en tombant directement sur cette page, on lui renvoit ses infos.
mysql_connect($sql_seveur,$sql_user,$sql_passwd); // Connexion à MySQL
// on vérifie que le login et le mot de passe rentrés sont correct
$table = mysql_db_query($sql_bdd,"SELECT * FROM connexion WHERE login='$_POST[login]'" );
// $row = colonne de l'utilisateur dans la base
$row = mysql_fetch_array($table, MYSQL_ASSOC);
// on contrôle que le formulaire de la page connexion.php a bien été rempli, puis on contrôle que le champ "motdepasse" correspond bien à celui de la base.
if (isset($_POST['login']) AND ($_POST['motdepasse']) AND $_POST['motdepasse'] == $row['password'])
{
header("Location:$url_ok" );
}
else
{
header("Location:$url_erreur" );exit;
}
mysql_close(); // Déconnexion de MySQL
?>
si les identifiants sont vérifier dans login.php, l'adresse $url_ok est en fait une page appelé default.php.
Le problème est de savoir comment protégé cette page si quelqu'un arrive dessus par hasard directement.
Pour l'instant la voici:
<?
require("conf/conf.php" );
// si le visteur est passé par la page connexion.php ou s'il s'est identifié en tombant directement sur cette page, on lui renvoit ses infos.
$db_link = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
// SELECTION DE L'ENREGISTREMENT CONTENANT L'ID EN COURS
$table=mysql_db_query($sql_bdd,"SELECT * FROM connexion WHERE login='$_POST[login]'" );
// SI L'ID N'EXISTE PAS
if (isset($_POST['login']) AND ($_POST['motdepasse']) AND $_POST['motdepasse'] == $row['password'])
{
?>
<!-- Début du squelette de la page html -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Espace Client
</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
}
body {
margin-left: 5px;
margin-top: 0px;
}
a:link {
color: #333333;
text-decoration: underline;
}
a:visited {
color: #333333;
text-decoration: underline;
}
a:hover {
color: #006699;
text-decoration: none;
}
a:active {
color: #333333;
text-decoration: underline;
}
.Style1 {
color: #FFFFFF;
font-weight: bold;
}
-->
</style>
</head>
<body>
<p><strong><img src="file:///C|/wamp/images/titre_accueil.gif" height="30"></strong></p>
<p>Bienvenue
<?
// affichage du Nom du visiteur
echo $row['prenom'];
echo " ";
// affichage du Nom du visiteur
echo $row['nom'];
?>
dans votre espace client, la zone privée des clients de O'MUSIC.
</p>
<p align="center" style="margin-bottom:0; margin-top:0 "><a href="../php/devisfactures.htm"><img src="file:///C|/wamp/images/btn_devis.jpg" width="181" height="100" border="0"></a><a href="../php/maquettes.htm"><img src="file:///C|/wamp/images/btn_maquettes.jpg" width="181" height="100" border="0"></a><a href="../php/docs.htm"><img src="file:///C|/wamp/images/btn_documents.jpg" width="181" height="100" border="0"></a><a href="../php/contact.htm"><img src="file:///C|/wamp/images/btn_contact.jpg" width="181" height="100" border="0"></a></p>
<p><strong>TABLEAU DE BORD</strong></p>
<table border="0" bgcolor="#CCCCCC">
<tr bgcolor="#006699">
<td><div align="center"><span class="Style1"> DEVIS</span></div></td>
<td><div align="center"><span class="Style1">FACTURES</span></div></td>
<td><div align="center" class="Style1">
<div align="center">MAQUETTES</div>
</div></td>
<td><div align="center"><span class="Style1">DOCUMENTS</span></div></td>
<td><div align="center"><span class="Style1">Dernière mise à jour </span></div></td>
</tr>
<tr valign="top" bgcolor="#FFFFFF">
<td> <div align="center">
<?
// affichage nbr de DEVIS
echo $row['DEVIS'];
?>
</div></td>
<td><div align="center">
<?
// affichage nbr de FACTURES
echo $row['FACTURES'];
?>
</div></td>
<td><div align="center">
<?
// affichage nbr de MAQUETTES
echo $row['MAQUETTES'];
?>
</div></td>
<td><div align="center">
<?
// affichage nbr de DOCS
echo $row['DOCS'];
?>
</div></td>
<td><div align="center">
<?
// affichage de la dernière mise à jour dans la base de données
echo $row['MISE_A_JOUR'];
?>
</div></td>
</tr>
</table>
</body>
</html>
<?
}
else
{
header("Location:$url_erreur" );
}
mysql_close(); // Déconnexion de MySQL
?>
Désolé pour la tartine mais comme ça vous avez tous les éléments.
le souci c que quand je m'identifie sur la page $url_erreur, ben le script m'y renvois direct sans afficher le contenu <html> attendu.
En gors, je suis en boucle sur la page $url_erreur.
Une idée?