无法进入主页,始终重定向回登录页面

时间:2014-09-29 06:56:24

标签: php session

由于这个页面是由用户拥有的,所以它有每个凭据输入它,这是通过使用php的登录形式(到目前为止我知道的,我在PHP中不是很好,到说实话)。

我真正猜到的问题一定是在使用会话功能(这是我最熟悉的事情,我对使用它并不是很熟悉。)

在表单的配置中,我像这样设置会话(好吧,我只是复制粘贴来自某些地方的代码),如下所示:

// User Redirect Conditions will go here
if($count==1)

{
    // Save type and other information in Session for future use.
    $_SESSION[type]=$row[0];
    $_SESSION[Region]=$row[1];
    $_SESSION[myemail]=$myemail;

    // if user type is ACTAdmin only then he can access protected page.
    if($row[0] == 'ACTAdmin') { 
        header( "location:index.php");  
    }
    else { 
        header( "location:login.html");  
    }

}

else 
{
header("location:login.html");
}
// Closing MySQL database connection 
$dbh = null;


在主页的头部(以及每个所有相关页面中),我在这里写一个会话开始:

<?php 
include('UserSessionAdmin.php');
?>


它将从UserSessionAdmin.php中获取数据:

<?php
session_start();
if($_SESSION[type]!='ACTAdmin'){
header('location:login.html');
exit();
}
include('configPDO.php');
?>


configPDO.php中包含的内容是:

<?php
// mysql hostname
$hostname = 'mysql.com';
// mysql username
$username = 'alkushh';
// mysql password
$password = 'alkush';
// Database Connection using PDO
try {
$dbh = new PDO("mysql:host=$hostname;dbname=user", $username, $password);
}
catch(PDOException $e)
{
echo $e->getMessage();
}
?>


我只有两天多的时间来解决它,但我不知道该怎么做。有些在这里的专家可能会帮助我解决这个问题。

谢谢你,问候,



以下是定义$ count == 1

的完整脚本
<?php
// Start Session because we will save some values to session varaible.
session_start();

// include connection file
include("configPDO.php");

// Define $myusername and $mypassword
$myemail=$_POST['myemail']; 
$mypassword=$_POST['mypassword']; 

// We Will prepare SQL Query
$STM = $dbh->prepare("SELECT Type,Region FROM user WHERE myemail = :myemail AND mypassword = :mypassword");

// bind paramenters, Named paramenters alaways start with colon(:)
   $STM->bindParam(':myemail', $myemail);
   $STM->bindParam(':mypassword', $mypassword);

// For Executing prepared statement we will use below function
   $STM->execute();

// Count no. of records 
   $count = $STM->rowCount();

//just fetch. only gets one row. So no foreach loop needed :)
  $row  = $STM -> fetch();

// User Redirect Conditions will go here
   if($count==1)
   .....
   .....

enter image description here

2 个答案:

答案 0 :(得分:0)

这是

if ( $count == 1 ) {
    $_SESSION['login_id'] = $row['id']; // i prefer to name it login_id, you can use $row['id'] or $row[0]. but i prefer to write with the column name

    if ( $_SESSION['login_id'] == 1 ) { // it means if login id = 1 then go to index.php
        header("location: index.php");  
    } else { 
        header("location: login.html");  
    }
}

else { header("location: login.html"); }

我削减了会话区域,因为你没有区域列,我也切断了会话myemail因为你不需要它


UserSessionAdmin.php

<?php
    session_start();
    if ( $_SESSION['login_id'] == 0 || $_SESSION['login_id'] == '' ) {
        header('location: login.html');
        exit();
    }

    require_once('configPDO.php');
?>

答案 1 :(得分:-1)

请启用错误报告,以查看没有typeRegionmyemail等常量。在会话参数周围使用"'

if (strcmp($_SESSION['type'], 'ACTAdmin') !== 0) {
    header('location:login.html');
    exit();
}