Trying to access array offset on value of type bool

Résolu
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   -  
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Attention, tu fais deux fois à fetch...
$data = $requete->fetch();
    $row = $requete->rowCount();
$userexit=$requete->fetch();

Supprime le premier
1
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
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
Flexi2202
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Ben oui, comme ça..
1
flexi2202 Messages postés 3822 Date d'inscription   Statut Membre Dernière intervention   190
 
super cela fonctionne merci jordane
0