Connexion SQL avec authentification
Résolu
mehdi9833
Messages postés
93
Statut
Membre
-
{psycho.} Messages postés 114 Statut Membre -
{psycho.} Messages postés 114 Statut Membre -
Bonjour à tous,
J'ai un petit soucis, j'aimerais me connecter à mon application intranet, avec un mot de passe et identifiant (déja créer dans ma bdd) mais cela nemarche pas...voici mon script.merci
<?php
/* page d’accueil de l’application qui permet la connexion */
session_start();
?>
<html>
<head>
<title> formulaire d'identification </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css.css" />
</head>
<body>
<?php
if ((empty($_SESSION['identifiant']) OR empty($_SESSION['pass']))) // on vérifie que l'utilisateur n'est pas déja connecté
{ if ((empty($_POST['identifiant']) OR empty($_POST['pass']))) // si l'utilisateur ne vient pas de se connecter
{
?>
<br><br><br><center><h1>Connexion à l'application</h1>
<br/>
<form method="POST" action="acceuil.php"> <!-- on affiche l'interface de connexion -->
<table style="text-align: left" border="0" cellpadding="4" cellspacing="2">
<tbody>
<tr>
<td>Identifiant :</td>
<td><input type="text" name="identifiant" /></td>
</tr>
<tr>
<td>Mot de passe :</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<br>
<td><br> <button value="envoi" name="envoi" type="submit">Valider</button></td>
<td><br> <button value="reset" name="reset" type="reset">Annuler</button></td>
</tr>
</tbody>
</table>
</form>
<?php }
elseif ((isset($_POST['identifiant']) AND isset($_POST['pass']))) // si l'utilisateur vient de se connecter
{
$_SESSION['identifiant'] = $_POST['identifiant']; // on enregistre son identifiant et son mot de passe
$_SESSION['pass']= $_POST['pass'];
affichage(); // on affiche la page d'acceuil
}
}
else
{
affichage();// si l'utilisateur est déja connecté, on affiche la page d'accueil
}
?>
</body>
</html>
<?php
include("fonctions.php");
function affichage()
{
// Connexion au SGBD Mysql
$con=mysql_connect($serveur,$admin,$pass) or die ('Erreur : '.mysql_error() );
// S'il y a connection
// Selection de la base des donnees
mysql_select_db($base);
if($sql)
{
// requête test sur l'utilisateur
$sql= "select `identifiant` , `pass` , `num_categorie` from utilisateurs where `identifiant` = '".$_SESSION['identifiant']. "'";
$requete=mysql_query($sql) or die ("erreur dans la requête");
$res=mysql_fetch_array($requete);
$mdp=$res['pass'];
$_SESSION['num_categorie']=$res['num_categorie'];
if ($_SESSION['pass'] == $mdp)
{
echo ("rechercher-article.php");
}
}
else //si mauvais mot de passe
{
echo "<center><br><h3><br> Utilisateur / mot de passe inconnu, veuillez réessayer <br><br><br>";
echo "<a href='pageauthen.html'>Retour à l'accueil</a>";
session_destroy();
}
}
?>
J'ai un petit soucis, j'aimerais me connecter à mon application intranet, avec un mot de passe et identifiant (déja créer dans ma bdd) mais cela nemarche pas...voici mon script.merci
<?php
/* page d’accueil de l’application qui permet la connexion */
session_start();
?>
<html>
<head>
<title> formulaire d'identification </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="css.css" />
</head>
<body>
<?php
if ((empty($_SESSION['identifiant']) OR empty($_SESSION['pass']))) // on vérifie que l'utilisateur n'est pas déja connecté
{ if ((empty($_POST['identifiant']) OR empty($_POST['pass']))) // si l'utilisateur ne vient pas de se connecter
{
?>
<br><br><br><center><h1>Connexion à l'application</h1>
<br/>
<form method="POST" action="acceuil.php"> <!-- on affiche l'interface de connexion -->
<table style="text-align: left" border="0" cellpadding="4" cellspacing="2">
<tbody>
<tr>
<td>Identifiant :</td>
<td><input type="text" name="identifiant" /></td>
</tr>
<tr>
<td>Mot de passe :</td>
<td><input type="password" name="pass" /></td>
</tr>
<tr>
<br>
<td><br> <button value="envoi" name="envoi" type="submit">Valider</button></td>
<td><br> <button value="reset" name="reset" type="reset">Annuler</button></td>
</tr>
</tbody>
</table>
</form>
<?php }
elseif ((isset($_POST['identifiant']) AND isset($_POST['pass']))) // si l'utilisateur vient de se connecter
{
$_SESSION['identifiant'] = $_POST['identifiant']; // on enregistre son identifiant et son mot de passe
$_SESSION['pass']= $_POST['pass'];
affichage(); // on affiche la page d'acceuil
}
}
else
{
affichage();// si l'utilisateur est déja connecté, on affiche la page d'accueil
}
?>
</body>
</html>
<?php
include("fonctions.php");
function affichage()
{
// Connexion au SGBD Mysql
$con=mysql_connect($serveur,$admin,$pass) or die ('Erreur : '.mysql_error() );
// S'il y a connection
// Selection de la base des donnees
mysql_select_db($base);
if($sql)
{
// requête test sur l'utilisateur
$sql= "select `identifiant` , `pass` , `num_categorie` from utilisateurs where `identifiant` = '".$_SESSION['identifiant']. "'";
$requete=mysql_query($sql) or die ("erreur dans la requête");
$res=mysql_fetch_array($requete);
$mdp=$res['pass'];
$_SESSION['num_categorie']=$res['num_categorie'];
if ($_SESSION['pass'] == $mdp)
{
echo ("rechercher-article.php");
}
}
else //si mauvais mot de passe
{
echo "<center><br><h3><br> Utilisateur / mot de passe inconnu, veuillez réessayer <br><br><br>";
echo "<a href='pageauthen.html'>Retour à l'accueil</a>";
session_destroy();
}
}
?>
A voir également:
- Connexion SQL avec authentification
- Gmail connexion - Guide
- Connexion chromecast - Guide
- Double authentification google - Guide
- Site inaccessible n'autorise pas la connexion - Guide
- Meetic dernière connexion ✓ - Forum Réseaux sociaux
8 réponses
Ta requête pour vérifier les identifiants de l'utilisateur se trouve dans un if dont la condition est
Or, la variable $sql n'a pas l'air d'être déclarée et encore moins initialisée avant ce if, en conséquence, je doute que la condition soit jamais validée. A l'inverse, ta variable $con n'est utilisée qu'une seule fois, et non vérifiée... ne voulais-tu pas mettre :
à la place ?
if ($sql)
{
$sql= "select ...
}
Or, la variable $sql n'a pas l'air d'être déclarée et encore moins initialisée avant ce if, en conséquence, je doute que la condition soit jamais validée. A l'inverse, ta variable $con n'est utilisée qu'une seule fois, et non vérifiée... ne voulais-tu pas mettre :
if ($con)
{
$sql= "select ...
}
à la place ?
merci psycho de m'avoir répondu, effectivement je me suis tromper lors de la saisie, méme avec la réctification il ne se passe rien...merci
Deuxième erreur de saisie :
Retire l'accolade fermante juste au-dessus de ton else, et met-la après le bloc. En effet, en la mettant avant, il ne rentrera dans ton else que si les informations de connexion à la BDD sont fausses, et non si la connexion est bonne mais les identifiants de l'utilisateur faux.
Normalement tu devrais obtenir ton message d'erreur si l'utilisateur n'existe pas ou se plante de mot de passe. Si tu l'obtiens aussi avec de bons identifiants, vérifie ta comparaison de mots de passe, je doute qu'il soit stocké en clair dans ta BDD, utilise md5() ou autre pour l'encrypter de la même manière avant comparaison :
Accessoirement, je vois au moins deux détails qui m'apparaissent comme des failles de sécurité :
- le stockage du mot de passe dans $_SESSION
- l'utilisation de $_SESSION['identifiant'] directement dans ta requête sql. Utilise des fonctions comme https://www.php.net/manual/fr/function.addslashes.php sinon tu risques de transformer ton script en invitation à l'injection sql.
else //si mauvais mot de passe
{
echo "<center><br><h3><br> Utilisateur / mot de passe inconnu, veuillez réessayer <br><br><br>";
echo "<a href='pageauthen.html'>Retour à l'accueil</a>";
session_destroy();
}
Retire l'accolade fermante juste au-dessus de ton else, et met-la après le bloc. En effet, en la mettant avant, il ne rentrera dans ton else que si les informations de connexion à la BDD sont fausses, et non si la connexion est bonne mais les identifiants de l'utilisateur faux.
Normalement tu devrais obtenir ton message d'erreur si l'utilisateur n'existe pas ou se plante de mot de passe. Si tu l'obtiens aussi avec de bons identifiants, vérifie ta comparaison de mots de passe, je doute qu'il soit stocké en clair dans ta BDD, utilise md5() ou autre pour l'encrypter de la même manière avant comparaison :
if (md5($_SESSION['pass']) == $mdp)
Accessoirement, je vois au moins deux détails qui m'apparaissent comme des failles de sécurité :
- le stockage du mot de passe dans $_SESSION
- l'utilisation de $_SESSION['identifiant'] directement dans ta requête sql. Utilise des fonctions comme https://www.php.net/manual/fr/function.addslashes.php sinon tu risques de transformer ton script en invitation à l'injection sql.
cela ne marche tjr pas,voici mn code html (image.html) où j'apel l'image :
<html>
<head>
<title> Image article </title>
</head>
<body>
<form id="form1" enctype="multipart/form-data" action="script-image.php" method="post">
<input type="hidden" name="max_file_size" value="1000">
Envoyer ce fichier : <input name="fichier" type="file">
<input type="submit" value="Envoyer le fichier">
</form>
et voici mon script (script-image.html) que j'apel :
// Parametres de connexion
include("fonctions.php");
// Connexion au SGBD Mysql
mysql_connect($serveur,$admin,$pass) or die ('Erreur : '.mysql_error() );
// Selection de la base des donnees
mysql_select_db($base);
$image=$_POST['fichier'];
$name=$_FILES['fichier']['name'];
$type=$_FILES['fichier']['type'];
//On affiche les champs et l'image
echo "Nom du fichier :".$name;
echo "<br>Type de fichier :".$type;
echo '<br><img src='.$Image.'>';
// on crée une variable contenant le répertoire de destination
$uploadpath="C:\Program Files\EasyPHP5.3.0\www";
// on déplace le fichier du dossier temporaire vers le dossier de destination
move_uploaded_file($uploadpath.$name);
?>
MERciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
<html>
<head>
<title> Image article </title>
</head>
<body>
<form id="form1" enctype="multipart/form-data" action="script-image.php" method="post">
<input type="hidden" name="max_file_size" value="1000">
Envoyer ce fichier : <input name="fichier" type="file">
<input type="submit" value="Envoyer le fichier">
</form>
et voici mon script (script-image.html) que j'apel :
// Parametres de connexion
include("fonctions.php");
// Connexion au SGBD Mysql
mysql_connect($serveur,$admin,$pass) or die ('Erreur : '.mysql_error() );
// Selection de la base des donnees
mysql_select_db($base);
$image=$_POST['fichier'];
$name=$_FILES['fichier']['name'];
$type=$_FILES['fichier']['type'];
//On affiche les champs et l'image
echo "Nom du fichier :".$name;
echo "<br>Type de fichier :".$type;
echo '<br><img src='.$Image.'>';
// on crée une variable contenant le répertoire de destination
$uploadpath="C:\Program Files\EasyPHP5.3.0\www";
// on déplace le fichier du dossier temporaire vers le dossier de destination
move_uploaded_file($uploadpath.$name);
?>
MERciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non mais apparemment j'ai repris un programme d'un site, j'arrive à uploader l'image et l'insérer dans un dossier image mais pas à l'afficher.
voici mes message d'erreur :
Notice: Undefined index: fichier1 in C:\Program Files\EasyPHP5.3.0\www\projet gireaud\test\test image 1\upload.php on line 16
Le fichier a bien été upload
Warning: readdir(): 3 is not a valid Directory resource in C:\Program Files\EasyPHP5.3.0\www\projet gireaud\test\test image 1\upload.php on line 37
MERCIIIIIIIIIIIIIIIII
voici mes message d'erreur :
Notice: Undefined index: fichier1 in C:\Program Files\EasyPHP5.3.0\www\projet gireaud\test\test image 1\upload.php on line 16
Le fichier a bien été upload
Warning: readdir(): 3 is not a valid Directory resource in C:\Program Files\EasyPHP5.3.0\www\projet gireaud\test\test image 1\upload.php on line 37
MERCIIIIIIIIIIIIIIIII
voila j'ai trouver la solution aprés des heures de recherches !!!!!!!
<html>
<head>
<title> Image article </title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="upload.php">
<input type="file" name="fichier" size="30">
<br><br>
<input type="submit" name="upload" value="Uploader">
</form>
<?php
include("fonctions.php");
mysql_connect($serveur,$admin,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($base);
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'images/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];
$nomFichier = $_FILES['fichier']["name"] ;
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo '<br>Le fichier <b>'.$name_file.'</b> a bien été chargé';
// ouvre le repertoire
$pointeur = opendir($content_dir) ;
$fichier = $nomFichier ;
$image = '<img src="'.$content_dir.'/'.$fichier.'"/>' ;
echo '<br><br>';
echo $image;
}
?>
</body>
</html>
<html>
<head>
<title> Image article </title>
</head>
<body>
<form method="post" enctype="multipart/form-data" action="upload.php">
<input type="file" name="fichier" size="30">
<br><br>
<input type="submit" name="upload" value="Uploader">
</form>
<?php
include("fonctions.php");
mysql_connect($serveur,$admin,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($base);
if( isset($_POST['upload']) ) // si formulaire soumis
{
$content_dir = 'images/'; // dossier où sera déplacé le fichier
$tmp_file = $_FILES['fichier']['tmp_name'];
if( !is_uploaded_file($tmp_file) )
{
exit("Le fichier est introuvable");
}
// on vérifie maintenant l'extension
$type_file = $_FILES['fichier']['type'];
$nomFichier = $_FILES['fichier']["name"] ;
if( !strstr($type_file, 'jpg') && !strstr($type_file, 'jpeg') && !strstr($type_file, 'bmp') && !strstr($type_file, 'gif') )
{
exit("Le fichier n'est pas une image");
}
// on copie le fichier dans le dossier de destination
$name_file = $_FILES['fichier']['name'];
if( !move_uploaded_file($tmp_file, $content_dir . $name_file) )
{
exit("Impossible de copier le fichier dans $content_dir");
}
echo '<br>Le fichier <b>'.$name_file.'</b> a bien été chargé';
// ouvre le repertoire
$pointeur = opendir($content_dir) ;
$fichier = $nomFichier ;
$image = '<img src="'.$content_dir.'/'.$fichier.'"/>' ;
echo '<br><br>';
echo $image;
}
?>
</body>
</html>