Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
会话isn';t在PHP中工作_Php_Mysql - Fatal编程技术网

会话isn';t在PHP中工作

会话isn';t在PHP中工作,php,mysql,Php,Mysql,我正在编写一个登录代码和用户配置文件,但我在会话中遇到了问题。我想当用户通过login.php登录时,它会转到user.php。但是,当我在一个新选项卡中打开这个页面时,它会转到Login.php并再次请求登录。谁能告诉我哪里错了?我的代码如下 Login.Php <?php session_start(); // check if session set. if(isset($_SESSION['id'])) { $url=SITE_URL.'User.php'; (he

我正在编写一个登录代码和用户配置文件,但我在会话中遇到了问题。我想当用户通过login.php登录时,它会转到user.php。但是,当我在一个新选项卡中打开这个页面时,它会转到Login.php并再次请求登录。谁能告诉我哪里错了?我的代码如下

Login.Php

<?php 
session_start();
// check if session set.
if(isset($_SESSION['id'])) {
    $url=SITE_URL.'User.php';
   (header("Location: $url"));
}
?>

<?php 
include("dbconfig.php");
include('class/userClass.php');
$userClass = new userClass();

$errorMsgLogin='';
if (!empty($_POST['loginSubmit'])) 
{
$usernameEmail=$_POST['username'];
$password=$_POST['password'];
 if(strlen(trim($usernameEmail))>1 && strlen(trim($password))>1 )
   {
    $id=$userClass->userLogin($usernameEmail,$password);
    if($id)
    {
        $url=SITE_URL.'User.php';
        header("Location: $url");
    }
    else
    {
        $errorMsgLogin="Please check login details.";
    }
   }
}


?>
<!doctype html>
<html>
<head>
</head>
<body>
<form id="contact-form" method="post">
            <div class="login-controls">
                <div class="form-input">
                    <input type="text" class="txt-box"  name="username" id="username" placeholder="Username" required>
                </div>
                <div class="form-input">
                    <input type="password" class="txt-box" name="password" id="password" placeholder="Password" required>
                </div>
<div class="errorMsg"><?php echo $errorMsgLogin; ?></div>
                <div class="main-bg">
                    <input type="submit"  name="loginSubmit" id="submit" class="btn " value="Login">
                </div>
<div class="check-box">
                    <a href="ForgotPassword.php">Forgot your Password ?</a>
                </div>


</form>
</br></br>
</body>
</html>



User.php

 <?php
    session_start();

    // check if session set.
    if(!isset($_SESSION['id']) || empty($_SESSION['id'])) {
        $url=SITE_URL.'Login.php';
        die(header("Location: $url"));
    }
    ?>
    <?php
    $session_id=$_SESSION['id'];
    include('class/userClass.php');
    $userClass = new userClass();
    include('dbconfig.php');
    $userDetails=$userClass->userDetails($session_id);
    ?>

         <!doctype html>
            <html>
            <head>
            </head>
            <body>
          ------------something-----
                </body>
            </html>

------------某物-----
dbconfig.php

<?php
session_start();
/* DATABASE CONFIGURATION */
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'XXXXXX');
define('DB_PASSWORD', 'XX2');
define('DB_DATABASE', 'Xxxx');
define("SITE_URL", "http://try1234.com"); // Eg. http://yourwebsite.com


function getDB() 
{
    $dbhost=DB_SERVER;
    $dbuser=DB_USERNAME;
    $dbpass=DB_PASSWORD;
    $dbname=DB_DATABASE;
    try {
    $dbConnection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $dbConnection->exec("set names utf8");
    $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $dbConnection;
    }
    catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    }

}
?>

userClass.php

<?php
    class userClass
    {
         /* User Login */
         public function userLogin($usernameEmail,$password)
         {

              $db = getDB();
              $hash_password= hash('sha256', $password);
              $stmt = $db->prepare("SELECT id FROM profile WHERE  username=:usernameEmail  AND  pass=:hash_password");  
              $stmt->bindParam("usernameEmail", $usernameEmail,PDO::PARAM_STR) ;
              $stmt->bindParam("hash_password", $hash_password,PDO::PARAM_STR) ;
              $stmt->execute();
              $count=$stmt->rowCount();
              $data=$stmt->fetch(PDO::FETCH_OBJ);
              $db = null;
              if($count)
              {
                    $_SESSION['id']=$data->id;
                    return true;
              }
              else
              {
                   return false;
              }    
         }

         /* User Details */
         public function userDetails($id)
         {
            try{
              $db = getDB();
              $stmt = $db->prepare("SELECT email,username,Pname, Mobile FROM profile WHERE id=:id");  
              $stmt->bindParam("id", $id,PDO::PARAM_INT);
              $stmt->execute();
              $data = $stmt->fetch(PDO::FETCH_OBJ);
              return $data;
             }
             catch(PDOException $e) {
              echo '{"error":{"text":'. $e->getMessage() .'}}'; 
              }

         }


    }

?>

如评论中所述,如果您想在任何页面上使用会话,您将始终需要启动会话

这通常是每一页的第一件事:

<?php
session_start();

//.....the rest of your code.

如上所述,如果会话存在并允许正确的代码“流动”,则删除冗余/递归检查。

如注释中所述,如果您想在任何页面上使用会话,您将始终需要启动会话

这通常是每一页的第一件事:

<?php
session_start();

//.....the rest of your code.


以上内容删除了会话是否存在的冗余/递归检查并允许正确的代码“流动”。

如果您知道在每个页面上都需要会话可用性,您可以编辑
php.ini
并添加
session.auto_start=1
,也可以按照上面的注释者的建议添加
session_start()
在您的每个文件中(或使用包含
session_start();
的基本
include

如果您知道在每个页面上都需要会话可用性,您可以编辑
php.ini
并添加
session.auto_start=1
,也可以按照上面的注释建议添加
session_start()
在每个文件中(或使用包含
session_start();
的基本
包含
session_start())

您需要
session_start()在您计划使用会话的每个页面上。这就是它不起作用的原因,因为您还没有在
session.php
上启动会话。在使用它的每个页面的顶部:-)(
@Darren谢谢您的回复..我会的try@Darren感谢您的支持您需要
session\u start();
在您计划使用会话的每个页面上。这就是它不起作用的原因,因为您尚未在
session.php
上启动会话。在使用它的每个页面的顶部:-)(
@Darren谢谢你的回复..我会的try@Darren感谢您的支持,我正在尝试Darren的建议,但仍然无法解决问题,我编辑了我的代码,可能我有问题,所以建议我您是否已绝对确定1)cookies已启用2)在调用
会话\u start()
之前,浏览器绝对没有显示任何内容?我不明白。。我尝试了上面我已经编辑过的代码,但仍然存在相同的问题。上面的代码看起来很好,但是在调用
会话\u start()
之前,您确定没有向浏览器发送任何其他内容吗。没有什么理由让会议不起作用,我正在尝试帮助您调查。我正在尝试Darren的建议,但它仍然没有解决问题,我编辑了我的代码,可能我有问题,所以建议我您是否绝对确定1)Cookie已启用,2)在
会话开始()之前,浏览器绝对没有显示任何内容
打电话?我不接你。。我尝试了上面我已经编辑过的代码,但仍然存在相同的问题。上面的代码看起来很好,但是在调用
会话\u start()
之前,您确定没有向浏览器发送任何其他内容吗。会话不起作用的原因很少,我正试图帮助您进行调查。