2017-07-12 4 views
0

lorsque je me connecte à mon compte utilisateur, il montre ces avertissements: -Avertissement: mysqli_fetch_array() attend le paramètre 1 à mysqli_result, null dans action_login.php

Attention: mysqli_fetch_array() attend le paramètre 1 être mysqli_result, null donnée dans /hermes/bosnaweb24a/b1323/ipg.techbitercom1/duracomexteriors/admin/action/action_login.php en ligne 12 Avertissement: Impossible de modifier les informations d'en-tête - têtes déjà envoyés par (output started at /hermes /bosnaweb24a/b1323/ipg.techbitercom1/duracomexteriors/admin/action/action_login.php:12) en /hermes/bosnaweb24a/b1323/ipg.techbitercom1/duracomexteriors/admin/action/action_login.php en ligne

Je joins mon code action_login.php

<?php 

    require_once("../../db_connection/dbConnection.php"); 
    session_start(); 
    if(isset($_POST["ok"])){ 
     $username=$_POST["username"]; 
     $password =$_POST["password"]; 

      if(mysqli_query($con, "select * from tbl_admin_log where user_name='$username' or email='$username' and password='$password'")){ 
       $_SESSION["login"] = $username; 
       $_SESSION["passw"] = $password; 
       while($ln = mysqli_fetch_array($log, MYSQLI_ASSOC)){ 
        $_SESSION["log_type"] = $ln["type"]; 
       } 
       header("location:../admin.php"); 
      } 
      else{ 
       header("location:../index.php?failed=Invalid Username or Password!"); 
      } 
    } 

    ?> 
+0

session_start doivent toujours être première ligne du script. – Gyan

+2

La duplication possible de [mysqli \ _fetch \ _array()/mysqli \ _fetch \ _assoc()/mysqli \ _fetch \ _row() attend que le paramètre 1 soit resource ou mysqli \ _result, booléen donné] (https://stackoverflow.com/questions/2973202/mysqli-fetch-tableau-mysqli-fetch-assoc-mysqli-fetch-ligne-attend-paramètre-1) – JYoThI

+1

$ log n'est défini nulle part, – sumit

Répondre

-1

Mettez session_start() au dessus de votre require_once() déclaration.

+1

Mais il ne résoudra pas l'erreur mysql – sumit

0

Utilisez quelque chose comme ça et voir si cela fonctionne

session_start();  
require_once("../../db_connection/dbConnection.php"); 

if(isset($_POST["ok"])){ 
    $username=$_POST["username"]; 
    $password =$_POST["password"]; 

    $checkLogin = mysqli_query($con,"SELECT * FROM tbl_admin_log WHERE (user_name='$username' OR email='$username') AND password='$password'") or die(mysqli_error($con));  
    if(mysqli_num_rows($checkLogin)>0){ 
    $_SESSION["login"] = $username; 
    $_SESSION["passw"] = $password; 
    $checkLoginRow = mysqli_fetch_assoc($checkLogin); 
    $_SESSION["log_type"] = $checkLoginRow["type"]; 
    header("location:../admin.php"); 
    }else{ 
    header("location:../index.php?failed=Invalid Username or Password!"); 
    } 
} 
+0

il montre un nom d'utilisateur et un mot de passe incorrect – abhi

+0

Une question abhi, avez-vous un nom d'utilisateur dans les colonnes nom d'utilisateur et e-mail dans la table de base de données? – Gyan

0

1er: Déplacez votre session_start() sur tout en haut de la page

2ème: vous devez regrouper la ou condition à l'aide les parenthèses comme ce (user_name='$username' or email='$username')

3ème: D'abord vérifier la requête est le succès ou ne compte pas le résultat en utilisant cette option si la condition if(($log) && mysqli_num_rows($log)>0){ }

"select * from tbl_admin_log where (user_name='$username' or email='$username') and password='$password'" 

PHP:

$log = mysqli_query($con, "select * from tbl_admin_log where (user_name='$username' or email='$username') and password='$password'") or die(mysqli_error($con)); 

if(($log) && mysqli_num_rows($log)>0){ 

     $_SESSION["login"] = $username; 
     $_SESSION["passw"] = $password; 
     $ln = mysqli_fetch_assoc($log, MYSQLI_ASSOC); 
     $_SESSION["log_type"] = $ln["type"]; 

     header("location:../admin.php"); 
} 
else{ 

    header("location:../index.php?failed=Invalid Username or Password!"); 
}