Formulaire de connexion

Résolu/Fermé
A1111111* - 25 août 2020 à 12:47
 A1111111* - 25 août 2020 à 17:23
Bonjour,
J'ai encore une fois besoin de votre aide mon code de connexion et inscription était normal , quand j'ai essayé une nouvelle fois inscription ou connexion je reçois l'erreur :

Fatal error: Uncaught Error: Call to a member function prepare() on null in C:\wamp644\www\includes\connexion.php on line 8
( ! ) Error: Call to a member function prepare() on null in C:\wamp644\www\includes\connexion.php on line 8
Call Stack



J'ai 3 fichiers dans mon code

index.php:



<?php session_start();?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>bibliothèque de référence</title>


</head>
<body>
<h1>Bienvenue sur votre profil</h1>
<?php
if (isset($_SESSION["Email"]))
{
echo "Votre email est :".$_SESSION["Email"];

}else{
echo "Veuillez vous connecter";
}

?>

<?php include 'menunavigation.php';
global $db;
?>

<h1>Se connecter</h1>

<form method="post">

<input type="Email" name="adresse" id="adresse" placeholder="Veuillez entrer votre Email" required> <br/>

<input type="password" name="motdepasse" id="motdepasse" placeholder="Veuillez entrer votre mot de passe" required> <br/>
<input type="submit" name="formlogin" id="formlogin" value="Se connecter"> <br/>
<?php include 'includes/connexion.php';?>
<h1>S'inscrire</h1>
<?php include "includes/inscription.php";?>
</form>
<form method="post">

<input type="text" name="Nom" id="Nom" placeholder="Veuillez entrer votre nom" required> <br/>

<input type="text" name="Prenom" id="Prenom" placeholder="Veuillez entrer votre prénom" required> <br/>

<input type="Email" name="Email" id="Email" placeholder="Veuillez entrer votre Email" required> <br/>

<input type="password" name="password" id="password" placeholder="Veuillez entrer votre mot de passe" required> <br/>

<input type="password" name="cpassword" id="cpassword" placeholder="Veuillez confirmer votre mot de passe" required> <br/>
<input type="submit" name="formsend" id="formsend" value="S'inscrire"> <br/>
</form>


</body>
</html>

Pour le fichier connexion.php :


<?php

if(isset($_POST['formlogin']))
{
extract($_POST);
if(!empty($adresse) && !empty($motdepasse))
{
$q=$db->prepare("SELECT * FROM utilisateurs WHERE Email=:Email");
$q->execute
(['Email'=>$adresse]);
$result=$q->fetch();
if($result==true){
$hashpassword=$result['password'];
if(password_verify($motdepasse,$result['password'])){
echo "Connexion en cours";
$_SESSION['Email']=$result['Email'] ;

}else {
echo "Mot de passe incorrect";
}


}
else{
echo "Le compte portant l'email ".$adresse." n'existe pas";

}
}
else{
echo 'Veuillez remplir tous les champs';
}
}




?>

Pour le fichier inscription.php :


<?php
if(isset($_POST["formsend"])){
extract($_POST);
if(!empty($password) && !empty($cpassword) && !empty($Email) && !empty($Nom) && !empty($Prenom)){
if($password==$cpassword){
$options=[
'cost'=>12
];
$hashpass=password_hash($password,PASSWORD_BCRYPT,$options);

$c=$db->prepare("SELECT Email FROM utilisateurs WHERE Email=:Email");
$c->execute(['Email'=>$Email]);
$result=$c->rowcount();
if ($result==0){
$sql = "INSERT INTO utilisateurs (Nom,Prenom,Email,password) VALUES (:Nom,:Prenom,:Email,:password)";

$datas = array(':Nom'=>$Nom, ':Prenom'=>$Prenom,':Email'=>$Email,':password'=>$hashpass);

//Execution de la requete
try{
$requete = $db-> prepare($sql) ;
$requete->execute($datas) ;
}catch(Exception $e){
// en cas d'erreur :
echo " Erreur ! ".$e->getMessage();
}

echo "Le compte a été créé";
}else {
echo "Le mail existe déjà";
}
}else{
echo "Les champs ne sont pas tous remplis";
}

}
}

?>

4 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
25 août 2020 à 12:58
merci de corriger ton message en y mettant les balises de code tel que je te l'ai demandé à plusieurs reprises...
0
Bonjour j'ai essayé de les ajouter en suivant les étapes de site que vous m'avez donné , peut être que j'ai pas bien compris le principe .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
25 août 2020 à 13:31
Comme tu peux le voir ton code ne se trouve pas dans les balise de code...

Quoi qu'il en soit pour ton soucis, tu as oublié de faire un require de ta connexion à la base de données...

Il me semblait également t'avoir indiquer que utiliser le mot-clé global ne servait à rien si tu étais en dehors d'une fonction...
0
Merci beaucoup pour votre aide ça fonctionne . Pour la fonction global par quoi je peux la remplacer er pour les balises pour les ajouter j'ai suivi les étapes du lien en cliquant sur la flèche puis sur php mais j'arrive pas à comprendre comment je peux corriger mon code , sinon merci pour le temps que vous prenez pour répondre .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
25 août 2020 à 14:09

Pour la fonction global par quoi je peux la remplacer

ben.. par rien !

Tu n'as pas besoin de cette ligne de code si tu ne te trouves pas dans une fonction !


pour les balises pour les ajouter j'ai suivi les étapes du lien en cliquant sur la flèche puis sur php mais j'arrive pas à comprendre

Oui.. et cela place, dans la fenêtre de saisie une balise ouvrante et une balise fermante ..... entre lesquelles tu dois placer ton code.... comme expliqué dans le lien que je t'ai donné :
https://img-19.ccm2.net/fDqwajS_FLqYEFOfnp9Y93HuOuI=/774x/6696f5063fd54655be9f967a26b925b5/ccm-faq/Capture_balise_avant_code_4.jpeg
0
D'accord merci beaucoup pour l'aide
0