Trying to access array offset on value of type bool
Résolu
bonsoir a tous
je suis occupé a essayer d 'empêcher les utilisateurs non valider d'accéder à l'espace membre
Mais j'ai cette erreur
Trying to access array offset on value of type bool
Malgré que on code fonctionne
voici la ligne ou cela coince
et mon code complet
je suis occupé a essayer d 'empêcher les utilisateurs non valider d'accéder à l'espace membre
Mais j'ai cette erreur
Trying to access array offset on value of type bool
Malgré que on code fonctionne
voici la ligne ou cela coince
if ($userexit['confirme'] != 1)
et mon code complet
<?php
session_start();
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
//on recupere le lien link pour la redirection vers les autres pages
$link = !empty($_GET['link']) ? $_GET['link'] : NULL;
//$referer = ($_SERVER['HTTP_REFERER']);
//echo $referer ;
require_once 'base.php';
if (!empty($_POST['pseudo']) && !empty($_POST['password']))
{
$pseudo = !empty($_POST['pseudo']) ? $_POST['pseudo'] : NULL;
$password = !empty($_POST['password']) ? $_POST['password'] : NULL;
// $pseudo = htmlspecialchars($_POST['pseudo']);
//$password = htmlspecialchars($_POST['password']);
// $check = $bdd->prepare('SELECT pseudo, email,id, password FROM utilisateurs WHERE pseudo = ?');
//$check->execute(array( $pseudo ));
//$data = $check->fetch();
//$row = $check->rowCount();
//préparation de la requête et des variables
$sql = 'SELECT pseudo, email,id,confirme, password FROM utilisateurs WHERE pseudo = ?';
$datas = [$pseudo];
//Execution de la requete
try
{
$requete = $bdd->prepare($sql);
$requete->execute($datas);
}
catch(Exception $e)
{
// en cas d'erreur :
echo " Erreur ! " . $e->getMessage();
echo " Les datas : ";
print_r($datas);
}
$data = $requete->fetch();
$row = $requete->rowCount();
$userexit=$requete->fetch();
//si le peusdo est bien dans la base et qu'il soit activer alors on continue sinon on sort
if ($userexit['confirme'] !=1)
{
if ($row == 1)
{
//on verifie le pawword si il est ok on continue , sinon sortie
if (password_verify($password, $data['password']))
{
//on definit et on cree les variables sessions
$_SESSION['user'] = array(
'id' => $data['id'],
'pseudo' => $data['pseudo'],
'email' => $data['email']
);
$_SESSION['id'] = $data['id'];
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['email'] = $data['email'];
//on test la variable link si elle est vide on va vers index
if (empty($_SESSION['link']))
{
header('Location: index.php?pseudo=' . $_SESSION['pseudo']);
//sinon on va faire la derniere page visitee
}
else
{
header('location: ' . $_SESSION['link']);
}
die();
}
else
{
header('Location: connexion-site.php?login_err=password');
die();
}
}
else
{
header('Location: connexion-site.php?login_err=already');
die();
}
}
else
{
echo"compte pas activer ";
}
}
?>
4 réponses
-
super cela fonctionne merci jordane
-
Ah ok
Je viens de comprendre l erreur
On crée une variable data qui va nous servir plus tard pour notre tableau et bien entendu je ne peux pas utiliser deux fois fetech
Mais alors comment réaliser ma condition avec la colonne confirme
Par
if ($data['confirme'] !=1) -
merci jordane mais la variable $data j'en ai besoin
a cet endroit
//on verifie le pawword si il est ok on continue , sinon sortie if (password_verify($password, $data['password'])) -
ModérateurAttention, tu fais deux fois à fetch...
$data = $requete->fetch(); $row = $requete->rowCount(); $userexit=$requete->fetch();
Supprime le premier