Erreur "Warning: Trying to access array offset on value of "
Havca_
-
Havca_ -
Havca_ -
Bonjour,j'ai encoreune erreur que je ne comprend pas pouvez vous m'aider svp ????
voici le code:
<!DOCTYPE html>
<html>
<head>
<title>coucou</title>
<link rel="stylesheet" href="styleform.css">
<link rel="shortcut icon" href="ressources/image/home_favicon.png" type="image/x-icon">
</head>
<body>
<p>coucou</p>
<form method="post">
<input autocomplete="off" id="lmail" placeholder="Email" name="lmail" type="email" required>
<input autocomplete="off" id="lpass" placeholder="Password" name="lpass" type="password" required>
<button type="submit" name="lsubmit" id="lsubmit">Login</button>
</form>
<?php
//se connecter
if(isset($_POST['lsubmit'])){
extract($_POST);
if(!empty($lmail) && !empty($lpass)){
include 'database.php';
global $db;
$lq = $db->prepare("SELECT * FROM utilisateur WHERE email = :email");
$lq->execute(['email' => $lmail]);
$result = $lq->fetch();
if($result = true){
if(password_verify($lpass, $result['mdp'])){
echo "connection faite !";
}else{
echo "pas le bon mot de passe";
}
}else{
echo "l'email n'est pas bon";
}
}else{
echo "completer l'ensemble des champs";
}
}
?>
</body>
</html>
et l'erreur dis:
merci encore pour votre aide ????
(la ligne 57 correspond a la ligne 31 sur le code fourni ????
Windows / Opera 97.0.0.0
A voir également:
- Erreur "Warning: Trying to access array offset on value of "
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- J'aime par erreur facebook notification - Forum Facebook
2 réponses
Bonjour
Commence par corriger la ligne au dessus...
if($result === true){
//Ou plus simple
if($result){
Voici quelques liens utiles à lire..
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Ensuite, ton code devrait ressembler à un truc du genre
<?php
// Démarrage des variables de session
session_start();
//Affichage des éventuelles erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
//Connexion à la bdd
require_once 'database.php';
//déclaration de variables
$msg = "";
//Traitement du formulaire
if(isset($_POST['lsubmit'])){
extract($_POST);
if(!empty($lmail) && !empty($lpass)){
try{
$lq = $db->prepare("SELECT * FROM utilisateur WHERE email = :email");
$lq->execute([':email' => trim($lmail) ]);
$result = $lq->fetch();
}catch(Exception $e){
//en cas d'erreur dans la requete
echo "Erreur " . $e->getMessage() . PHP_EOL;
}
if(!empty($result) ){
if(password_verify(trim($lpass), trim($result['mdp']))){
$_SESSION['USER'] = $result;
$msg = "connection faite !"; // A retirer et à remplacer par une redirection vers une autre page une fois que ton code marchera
//header('Location: profil.php');
//exit;
}else{
$msg = "ce pas le bon mot de passe"; // en général on évite de donner cette info pour éviter les attaques en force brute
}
}else{
$msg = "l'email n'est pas valide";
}
}else{
$msg = "Merci de completer l'ensemble des champs";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Connexion</title>
<link rel="stylesheet" href="styleform.css">
<link rel="shortcut icon" href="ressources/image/home_favicon.png" type="image/x-icon">
</head>
<body>
<p>coucou</p>
<form method="post" action="">
<input autocomplete="off" id="lmail" placeholder="Email" name="lmail" type="email" required>
<input autocomplete="off" id="lpass" placeholder="Password" name="lpass" type="password" required>
<button type="submit" name="lsubmit" id="lsubmit">Login</button>
</form>
<?php
if(!empty($msg)){
?>
<div class="error">
<?php echo $msg; ?>
</div>
<?php
}
?>
</body>
</html>

merci encore pour votre aide, je n'ai plus d'erreur maintenant mais par contre savez vous pourquoi je n'ai pas les réponse attendue ??
en gros maintenant ça fonctionne mais l'étape ou on vérifie le mot de passe c'est sensé renvoyer un petit message pour dire si c'est bon ou pas mais la peut importe si c'est le bon mot de passe ou pas, ça m'affichera quand même que se n'est pas le bon
merci encore
Re,
Ton mot de passe est crypté en bdd ( Hashé serait le terme le plus exact...) ??
Avec quel code l'as tu généré et stocké en bdd ?
je crypte le mot de passe avec se code:
et je le stocke dans ma base de données avec se code:
$q = $db->prepare('INSERT INTO utilisateur(email, mdp) VALUES(:email, :mdp)'); $q->execute([ 'email' => $mail, 'mdp' => $hashpass ]);je ne sais pas si c'est bien ça que vous demandiez