簡體   English   中英

PHP MYSQL登錄腳本會話不起作用

[英]PHP MYSQL login script session not working

我有一個處理登錄CMS的小腳本。 該查詢工作正常,但我認為我對SESSIONS有問題,因為即使用戶名和密碼正確,它也會重定向到登錄頁面。 我有下面的代碼。 請幫助我解決這個問題。 提前致謝。

//checklogin.php ....

<?php
include("db/dbconnect.php");

mysqli_select_db($connect, $db);

// username and password sent from signup form
$username = mysqli_real_escape_string($connect, $_POST['username']);
$password = mysqli_real_escape_string($connect, $_POST['password']);

$sql = "SELECT username, password FROM login WHERE username = '$username' AND password = '$password'";
$result = mysqli_query($connect, $sql) or die('Error : ' .  mysqli_error($connect));

// Mysql_num_row is counting table row
$count = mysqli_num_rows($result);

// If result matched $username and $password, table row must be 1 row
if($count == 1)
{

    //Register $username, $password and redirect to mainpage"
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;

    header("location:about.php");
}
else {
echo "Invalid Username or Password. Please try again.";
echo "<meta http-equiv=Refresh content=5;url=index.php>";
}
?>

//about.php

<?php 
//check if user is logged on;
session_start();
if(!isset($_SESSION['username']) )
{
    header("location:index.php");
}
?>

您需要先啟動會話,然后再為其分配用戶名和密碼。 在“如果”條件($ count == 1)中,您將直接分配用戶名和密碼。 將這些行放在這些作業之前:

在session_start();

因此,現在您的“ If”條件變為:

if($count == 1)
{

    session_start();
    $_SESSION['username'] = $username;
    $_SESSION['password'] = $password;

    header("location:about.php");
}

我想這就是問題所在。 讓我知道,是否有效。

添加session_start(); 在checklogin.php中這將幫助您

<?php
 session_start();  //missing in checklogin.php
include("db/dbconnect.php");
mysqli_select_db($connect, $db);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM