ThaiSEOBoard.com

พัฒนาเว็บไซต์ => Programming => ข้อความที่เริ่มโดย: icenobu ที่ 14 มีนาคม 2019, 16:04:52



หัวข้อ: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: icenobu ที่ 14 มีนาคม 2019, 16:04:52
ไม่แน่ใจว่าทำตรงไหนผิดคะ ถ้าค่าส่งมาเท่ากับ 0 แล้วมันไม่วิ่งไปที่หน้า admin_page.php คะ


โค๊ด:
<?php
// Initialize the session
session_start();
 
// Check if the user is already logged in, if yes then redirect him to dashboard page
// if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
//   header("location: welcome.php");
//   exit;
// }
 
// Include config file
require_once "inc/config.php";
 
// Define variables and initialize with empty values
$email $password "";
$email_err $password_err "";
 
// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    
// Check if email is empty
    
if(empty(trim($_POST["email"]))){
        
$email_err "Please enter email.";
    } else{
        
$email trim($_POST["email"]);
    }
    
    
// Check if password is empty
    
if(empty(trim($_POST["password"]))){
        
$password_err "Please enter your password.";
    } else{
        
$password trim($_POST["password"]);
    }
    
    
// Validate credentials
    
if(empty($email_err) && empty($password_err)){
        
// Prepare a select statement
        
$sql "SELECT id, email, level, password FROM users WHERE email = ?";
     
        if(
$stmt mysqli_prepare($link$sql)){
            
// Bind variables to the prepared statement as parameters
            
mysqli_stmt_bind_param($stmt"s"$param_email);
            
            
// Set parameters
            
$param_email $email;
            
            
// Attempt to execute the prepared statement
            
if(mysqli_stmt_execute($stmt)){
                
// Store result
                
mysqli_stmt_store_result($stmt);
                
                
// Check if email exists, if yes then verify password
                
if(mysqli_stmt_num_rows($stmt) == 1){                    
                    
// Bind result variables
                    
mysqli_stmt_bind_result($stmt$id$email$level$hashed_password);
                    if(
mysqli_stmt_fetch($stmt)){
                        if(
password_verify($password$hashed_password)){
                            
// Password is correct, so start a new session
                            
session_start();
                            
                            
// Store data in session variables
                            
$_SESSION["loggedin"] = true;
                            
$_SESSION["id"] = $id;
                            
$_SESSION["email"] = $email;        
                            
$_SESSION["level"] = $level;

                            
//echo ("$level"); die();  
                            
if($_SESSION["$level"]=="0"){
 
                                
Header("location: admin_page.php");
         
                              }        
                            
                            
// Redirect user to dashboard page
                            
header("location: dashboard.php");
                        } else{
                            
// Display an error message if password is not valid
                            
$password_err "The password you entered was not valid.";
                        }
                    }
                } else{
                    
// Display an error message if email doesn't exist
                    
$email_err "No account found with that email.";
                }
            } else{
                echo 
"Oops! Something went wrong. Please try again later.";
            }
        }
        
        
// Close statement
        
mysqli_stmt_close($stmt);
    }
    
    
// Close connection
    
mysqli_close($link);
}
?>


หัวข้อ: Re: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: raimai ที่ 14 มีนาคม 2019, 16:07:58
if($_SESSION["$level"]=="0")

เป็น

if($_SESSION["level"]=="0")

รึเปล่า


หัวข้อ: Re: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: icenobu ที่ 14 มีนาคม 2019, 16:17:02
if($_SESSION["$level"]=="0")

เป็น

if($_SESSION["level"]=="0")

รึเปล่า

ไม่ได้คะ ><


หัวข้อ: Re: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: BOS ที่ 14 มีนาคม 2019, 22:15:29
session_start(); หลายที ไม่ขึ้น error เหรอครับ
ลองลบออกให้เหลืออันเดียว
แล้วก็ใช้ if($_SESSION["level"]=="0") เหมือนที่คุณ raimai บอกลองดูครับ ได้ไหม
ถ้าไม่ได้ก็ลองแสดงค่า $_SESSION["level"] ออกมาดูครับ ค่าตรงกับเงื่อนไขหรือเปล่า

if($_SESSION["$level"]=="0")

เป็น

if($_SESSION["level"]=="0")

รึเปล่า


หัวข้อ: Re: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: icenobu ที่ 15 มีนาคม 2019, 07:51:41
session_start(); หลายที ไม่ขึ้น error เหรอครับ
ลองลบออกให้เหลืออันเดียว
แล้วก็ใช้ if($_SESSION["level"]=="0") เหมือนที่คุณ raimai บอกลองดูครับ ได้ไหม
ถ้าไม่ได้ก็ลองแสดงค่า $_SESSION["level"] ออกมาดูครับ ค่าตรงกับเงื่อนไขหรือเปล่า

if($_SESSION["$level"]=="0")

เป็น

if($_SESSION["level"]=="0")

รึเปล่า

ค่าออกมาเท่ากับ 0 ค่ะ แต่มันไม่วิ่งเข้าไปที่เงื่อนไข if($_SESSION["level"]=="0")

โค๊ด:
                    if(mysqli_stmt_fetch($stmt)){
                        if(password_verify($password, $hashed_password)){
                           
                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["email"] = $email;       
                            $_SESSION["level"] = $level;

                            //echo ("$level"); die(); 
                            if($_SESSION["level"]=="0"){
 
                                Header("location: admin_page.php");
         
                              }       
                           
                            // Redirect user to dashboard page
                            header("location: dashboard.php");
                        } else{
                            // Display an error message if password is not valid
                            $password_err = "The password you entered was not valid.";
                        }
                    }


หัวข้อ: Re: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: raimai ที่ 15 มีนาคม 2019, 08:24:06
ลอง

echo ($_SESSION["level"]);
ออกมาดูคับ


หัวข้อ: Re: ช่วยดู code session หน่อยค่ะ
เริ่มหัวข้อโดย: BOS ที่ 15 มีนาคม 2019, 14:37:51
session_start(); หลายที ไม่ขึ้น error เหรอครับ
ลองลบออกให้เหลืออันเดียว
แล้วก็ใช้ if($_SESSION["level"]=="0") เหมือนที่คุณ raimai บอกลองดูครับ ได้ไหม
ถ้าไม่ได้ก็ลองแสดงค่า $_SESSION["level"] ออกมาดูครับ ค่าตรงกับเงื่อนไขหรือเปล่า

if($_SESSION["$level"]=="0")

เป็น

if($_SESSION["level"]=="0")

รึเปล่า

ค่าออกมาเท่ากับ 0 ค่ะ แต่มันไม่วิ่งเข้าไปที่เงื่อนไข if($_SESSION["level"]=="0")

โค๊ด:
if($_SESSION["level"]=="0"){
 
     Header("location: admin_page.php");
         
}       
                           
// Redirect user to dashboard page
header("location: dashboard.php");

ลองใส่ else ลงไปด้วยสิครับ

if($_SESSION["level"]=="0"){
   header("location: admin_page.php");
} else {
   header("location: dashboard.php");
}