5568 sujets

Sémantique web et HTML

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...

<!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="">
	<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 = [langue]seudo AND pass = [langue]ass');
$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
)


Voila j'ai 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 = Smiley langue seudo AND pass = Smiley langue ass'); $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?

Et ensuite, une fois connecté il faut que je redirige vers la bonne page... Ou dois-je le mettre?
Merci
taptap12 a écrit :

J'ai oublié quelque chose?


Salut, si tu regarde le coloreur syntaxique tu remarqueras qu'il te manque une apostrophe et l'accolade de fermeture à la fin de la condition où tu teste la présence du cookie pseudo.
De plus ton tag d'ouverture de langage php situé après "</html>" est superflus vu qu'en amont tu es déjà en php.
Voila j'ai remodifier mon code

<!DOCTYPE html>
<?php
include("fonctions.php");

// Vérification des identifiants

$req = $bdd->prepare('SELECT id FROM membres WHERE pseudo = [langue]seudo AND pass = [langue]ass');
$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">Accueil</a></li>
                        <li><a href="connexion.html">Connexion</a></li>                        
                        <li><a href="#">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 = Smiley langue seudo AND pass = Smiley langue ass'); $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(); } ?>
Que cette portion apparaisse alors qu'elle est placée si haut me fait demander si le fichier fonctions.php est correct. L'as-tu vérifié (guillemets, apostrophes, accolades, parenthèses etc) ?
Je suis novice, mais pour moi y a pas de soucis en sachant que cela fonctionne sur une autre de mes pages...

<?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;
}
?>
upload/62992-111.jpg

Mais il n'y a aucun mouvement de connexion, pourtant je suis sur wampserver et je passe par le localhost... J'ai rentrer un pseudo et un mdp dans ma base de données...
Tu l'exécute à quel moment ta fonction connectMaBase() ?

J'ai comme l'impression que ta variable $bdd n'est pas initialisée. Tu peux la tester juste avant de définir $req ?

De plus dans cette fonction tu utilise un echo en cas d'erreur, à ta place je remplacerais cela par un return false (par exemple).
Ainsi tu pourrais tester le retour de ta fonction. S'il est égal à false, tu balance ton message d'erreur sinon tu fais continuer le process.

Ou mieux encore tu gère tes erreurs par une variable globale (type array) que tu charge le cas échéant. Avant de définir $req tu teste ta variable erreur. Si elle est vide tu continue l'exécution du script sinon tu change de cap. Ca te permettrait de faire afficher tes erreurs comme tu l'entends (echo, fichier ou mail etc)
Bon je crois que je vais recommencer tout depuis le début car la je suis complètement perdue...
As-tu des tutos? qui serait bien expliqué et simple afin de les suivre... Avec les lignes de code...
J'ai rien trouvé sur Internet de bien expliquer et surtout que je le ne mélange pas PDO et mysqli, je suis vraiment novice... Je connais seulement bien WampServer ainsi que la langage SQL et HTML...
Bonjour.

Sauf erreur, si $bdd est définie, elle ne l'est que dans la fonction... pas à l'extérieur.

Smiley confus