Bonjour,
je souhaite créer un formulaire de connexion basique mais sans possibilité d'enregistrement cela se fera manuellement sous demande de mail par l'utilisateur.
J'ai pris exemple sur Internet mais cela ne fonctionne pas...
Fichier connexion.html
<!DOCTYPE html>
<?php
include("fonctions.php");
?>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<title>Site Internet</title>
</head>
<body>
<div id="bloc_page">
<header>
<div id="titre_principal">
<div id="logo">
<img src="images/FNDC_logo.jpg" alt="Logo de FNDC" />
<h1>Bienvenue</h1>
</div>
</div>
<nav>
<ul>
<li><a href="#" rel="nofollow noopener noreferrer" target="_blank">Accueil</a></li>
<li><a href="connexion.html" rel="nofollow noopener noreferrer" target="_blank">Connexion</a></li>
<li><a href="#" rel="nofollow noopener noreferrer" target="_blank">Contact</a></li>
</ul>
</nav>
</header><br><br><br><br><br>
<?php
if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
{
echo '<form method="post" action="connexion.php">
<fieldset>
<legend>Connexion</legend>
<p>
<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
</p>
</fieldset>
<p><input type="submit" value="Connexion" /></p></form>
<a href="./register.php" rel="nofollow noopener noreferrer" target="_blank">Pas encore inscrit ?</a>
</div>
</body>
</html>
<?php
// Vérification des identifiants
$req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array(
'pseudo' => $pseudo,
'pass' => $pass));
$resultat = $req->fetch();
if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}
else
{
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
echo 'Vous êtes connecté !';
}
</div>
</body>
</html>
Ma table SQL dans ma base de données qui sera remplie manuellement :
CREATE TABLE membres
(
id int AUTO_INCREMENT PRIMARY KEY,
pseudo varchar (255),
pass varchar (255),
email varchar (255),
date_inscription date
)
Le php de connexion.html, il faut le mettre dans un autre fichier php?
J'ai trouvé comme source de tuto sur OpenClassRooms... Mais je ne comprends pas tout... Faut-il plusieurs fichiers afin de créer mon formulaire de connexion relier à ma base de données... Avez-vous un bon tuto facile à comprendre pour m'aiguiller?
Merci
Voila mis à vide l'attribut de mon form... afin de mettre tout le code dans la même page...
Au niveau de l'affichage pas de soucis...
J'ai ma requête qui s'affiche en dessous : prepare('SELECT id FROM membres WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array( 'pseudo' => $pseudo, 'pass' => $pass)); $resultat = $req->fetch(); if (!$resultat) { echo 'Mauvais identifiant ou mot de passe !'; } else { session_start(); $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; echo 'Vous êtes connecté !'; }
Au passage.....
- Essaye de placer le maximum de ton code php AVANT le code HTML.
- Le Session_start doit être au tout début de ton script (en haut de ta page donc)...
- Met en place la gestion des erreurs PDO : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
Voila j'ai remodifier mon code, j'ai placer mon code php au maximum au dessus ..
<!DOCTYPE html>
<?php
include("fonctions.php");
session_start();
// Vérification des identifiants
$req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = :pseudo AND pass = :pass');
$req->execute(array('pseudo' => $pseudo,'pass' => $pass));
$resultat = $req->fetch();
if (!$resultat)
{
echo 'Mauvais identifiant ou mot de passe !';
}
else
{
session_start();
$_SESSION['id'] = $resultat['id'];
$_SESSION['pseudo'] = $pseudo;
echo 'Vous êtes connecté !';
header('location:fb.php');
exit();
}
?>
<html>
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" />
<title>Signalement</title>
</head>
<body>
<div id="bloc_page">
<header>
<div id="titre_principal">
<div id="logo">
<img src="images/FNDC_logo.jpg" alt="Logo de FNDC" />
<h1>Fichier de signalement</h1>
</div>
</div>
<nav>
<ul>
<li><a href="accueil.html" rel="nofollow noopener noreferrer" target="_blank">Accueil</a></li>
<li><a href="connexion.html" rel="nofollow noopener noreferrer" target="_blank">Connexion</a></li>
<li><a href="#" rel="nofollow noopener noreferrer" target="_blank">Contact</a></li>
</ul>
</nav>
</header><br><br><br><br><br>
<?php
if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
{
echo '<form method="post" action="">
<fieldset>
<legend>Connexion</legend>
<p>
<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
</p>
</fieldset>
<p><input type="submit" value="Connexion" /></p></form>
</div>
</body>
</html>
Voila j'ai modifier mon code en mettant le maximum de php au dessus... mais toujours la ligne sql qui apparait prepare('SELECT id FROM membres WHERE pseudo = :pseudo AND pass = :pass'); $req->execute(array('pseudo' => $pseudo,'pass' => $pass)); $resultat = $req->fetch(); if (!$resultat) { echo 'Mauvais identifiant ou mot de passe !'; } else { session_start(); $_SESSION['id'] = $resultat['id']; $_SESSION['pseudo'] = $pseudo; echo 'Vous êtes connecté !'; header('location:facebook.php'); exit(); } ?>
cependant je viens de regarde pour la gestion des erreurs des PDO mais je ne comprends pas la système... je suis novice en la matière...
Tu dis que tu as la ligne sql;.. qui apparait .....
humm.... dis voir .... Tu as quoi comme URL dans ton navigateur ??
Si tu es en "local" sur ton ordi.... as tu bien installé un serveur PHP comme WAMP ou XAMPP ou EASYPHP ??
Et.... pour l'URL .... passes-tu bien par le LOCALHOST ??
Sans ça... le code PHP ne pourra pas être interprété par ton navigateur.
Sans oublier que tu dois nommer tes fichiers en .php
Je passe bien par le localhost... http://localhost/connexion/connexion.php
Je viens de modifier car le nom de mon fichier était connexion.php...
La il m'affiche bien les erreurs
Notice: Undefined variable: bdd in C:\wamp\www\connexion\connexion.php on line 8
Fatal error: Call to a member function prepare() on null in C:\wamp\www\connexion\connexion.php on line 8
Voila je viens de faire ce que tu viens de me donner comme code :
J'ai bien l'affichage de ma page, avec l'erreur qui reste au dessus... La il me dit comme erreur : Notice: Undefined variable: pseudo in C:\wamp\www\Monsite\connexion.php on line 17 et pareil pour le pass... et en affichant "Mauvais identifiant ou mot de passe ! "
En sachant que je n'ai pas encore essayer de m'identifier...
En essayant de m'identifier avec le login et mdp que j'ai inséré dans la bdd ou en mettant n'importe quoi, même chose... la page reste blanche, simplement explorer qui me demande si je veux enregistrer le mdp...
J'avais déja créer un formulaire qui fonctionner en lien avec une fonction permettant la connexion à la base de données. C'est pour cela que je m'etonne que la connexion ne se fasse pas bien :
<?php
function connectMaBase(){
$hote = 'localhost';
$utilisateur = 'root';
$mdp = '';
$nombdd = 'test'; // Nom de la base de données
$bdd = mysqli_connect($hote, $utilisateur, $mdp, $nombdd);
if (!$bdd) {
echo 'Erreur de connexion (' . mysqli_connect_errno() . ') ' . mysqli_connect_error();
}
return $bdd;
}
?>
Qu'as tu mis comme code pour te connecter à la BDD ?
Sachant que tu peux te servir du code disponible ici : https://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs
(en remplaçant le user et le password par le tient... (par défaut : root pour le user et rien '' pour le password )
J'ai bien l'affichage de ma page, avec l'erreur qui reste au dessus... La il me dit comme erreur : Notice: Undefined variable: pseudo in C:\wamp\www\Monsite\connexion.php on line 17 et pareil pour le pass... et en affichant "Mauvais identifiant ou mot de passe ! "
En sachant que je n'ai pas encore essayer de m'identifier...
En essayant de m'identifier avec le login et mdp que j'ai inséré dans la bdd ou en mettant n'importe quoi, même chose... la page reste blanche, simplement explorer qui me demande si je veux enregistrer le mdp...
J'avais déja créer un formulaire qui fonctionner en lien avec une fonction permettant la connexion à la base de données. C'est pour cela que je m'etonne que la connexion ne se fasse pas bien :
Sauf que le reste de ton code (celui que tu nous a montré au départ....) ce n'est pas en mysqli ... mais en PDO .....
Tu as donc mélangé deux technos différentes...........
Donc tu dois choisir ...
- Soit tu fais du mysqli
- Soit tu fais du PDO
La syntaxe n'étant pas du tout identique entre les deux technos !
Mais ... le plus facile.... ça sera sûrement mysqli pour toi (si tu sais coder en mysql à l'origine....)