Trying to access array offset on value of type bool

Résolu
flexi2202
Messages postés
3648
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
13 septembre 2022
- Modifié le 10 mai 2022 à 23:27
flexi2202
Messages postés
3648
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
13 septembre 2022
- 11 mai 2022 à 09:29
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

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 ";
    }
}
?>
A voir également:

4 réponses

jordane45
Messages postés
36331
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 septembre 2022
4 350
10 mai 2022 à 23:57
Attention, tu fais deux fois à fetch...
$data = $requete->fetch();
    $row = $requete->rowCount();
$userexit=$requete->fetch();

Supprime le premier
1
flexi2202
Messages postés
3648
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
13 septembre 2022
167
11 mai 2022 à 00:00
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']))
0
jordane45
Messages postés
36331
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 septembre 2022
4 350
11 mai 2022 à 00:16
Dans ce cas tu viens l'autre, et tueur nomme la variable userexit par data ....
À croire que tu recommences à copier coller du code sans comprendre à quoi ça correspond...
1
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)
0
jordane45
Messages postés
36331
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
25 septembre 2022
4 350
11 mai 2022 à 06:44
Ben oui, comme ça..
1
flexi2202
Messages postés
3648
Date d'inscription
lundi 14 mars 2011
Statut
Membre
Dernière intervention
13 septembre 2022
167
11 mai 2022 à 09:29
super cela fonctionne merci jordane
0