2015-04-01 4 views
0

У меня есть небольшой скрипт для работы с login на моей CMS. Запрос работает нормально, но я думаю, что у меня проблема с SESSIONS, потому что он перенаправляется на страницу входа, даже когда имя пользователя и пароль верны. У меня есть коды ниже. Пожалуйста, помогите мне решить это. Заранее спасибо.PHP скрипт сеанса PHP MYSQL не работает

//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"); 
} 
?> 
+0

Вы должны начать сессию в каждом сценарии, который использует его (как правило, затыкать его в включающийся, что называется на каждой странице) – CD001

+0

да у меня есть «session_start() ;» на всех страницах, для которых требуется аутентификация. –

+0

checklogin.php не содержит session_start() –

ответ

0

add session_start(); в checklogin.php Это поможет вам

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

спасибо большое! это сработало. Я потратил неделю на это, прежде чем я решил привести его сюда. Да благословит вас Бог. –

1

Вы должны начать сеанс до присвоения имени пользователя и пароля к нему. В вашем состоянии «If» ($ count == 1) вы напрямую назначаете имя пользователя и пароль. Поместите эту строку до этих назначений:

session_start();

Итак, теперь ваш «Если» состояние становится это:

if($count == 1) 
{ 

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

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

Я думаю, это то, что проблема есть. Дайте мне знать, если это сработает.

+0

да, это сработало! спасибо –

+0

Пожалуйста, отметьте ответ как «Правильно» и повысьте его. Благодаря !! – arkumar

+0

У меня есть один уже отмеченный, можно ли пометить несколько ответов как правильно? –

Смежные вопросы