Création formulaire de connexion

Fermé
anne so52 Messages postés 23 Date d'inscription jeudi 1 août 2013 Statut Membre Dernière intervention 4 octobre 2016 - 3 oct. 2016 à 11:05
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 4 oct. 2016 à 16:39
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



1 réponse

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
3 oct. 2016 à 20:29
Bonjour

Soit tu mets l'attribut action à vide dans ton form.... soit tu crées un fichier connexion.php dans lequel tu places ton code php.

Nb: si tu es en local sur ton pc... penses à installer un logiciel comme wamp ou xampp ou easyphp et à passer par le localhost
0
anne so52 Messages postés 23 Date d'inscription jeudi 1 août 2013 Statut Membre Dernière intervention 4 octobre 2016
4 oct. 2016 à 09:43
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é !'; }

J'ai oublié quelque chose?
0
anne so52 Messages postés 23 Date d'inscription jeudi 1 août 2013 Statut Membre Dernière intervention 4 octobre 2016
4 oct. 2016 à 10:09
Et ensuite, une fois connecté il faut que je redirige vers la bonne page... Ou dois-je le mettre?
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > anne so52 Messages postés 23 Date d'inscription jeudi 1 août 2013 Statut Membre Dernière intervention 4 octobre 2016
4 oct. 2016 à 10:52
Dans ton else
else	{
    session_start();
    $_SESSION['id'] = $resultat['id'];
    $_SESSION['pseudo'] = $pseudo;
    echo 'Vous êtes connecté !';

     //ici par exemple..
    header('location:tapage.php');
    exit();
 }



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://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
0
anne so52 Messages postés 23 Date d'inscription jeudi 1 août 2013 Statut Membre Dernière intervention 4 octobre 2016
4 oct. 2016 à 14:04
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...
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650 > anne so52 Messages postés 23 Date d'inscription jeudi 1 août 2013 Statut Membre Dernière intervention 4 octobre 2016
4 oct. 2016 à 14:16
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
0