php会话在服务器中不起作用

时间:2015-07-01 04:57:30

标签: php session

我希望在注册后页面应继续进行会话。因为我已经创建了以下代码。

if($_POST['action']=='finder_quick_reg')
          {
            extract($_POST);
            print_r($_POST); 
           $result=$dbg->exec("INSERT INTO `login_register`(`email`, `password`, `reg_date`, `complite_register`, `type`) VALUES ('$client_mail','$client_password', now(),'0','c_finder')") or die("Insert Failed ".mysql_error());
           $lastId = $dbg->lastInsertId();
           $results=$dbg->exec("INSERT INTO `care_finder`(`postal_code`,`user_pic`, `login_id`,`f_name`, `l_name`, `gender` ) VALUES ('$postal_code', 'default.jpg','$lastId', '$f_name', '$l_name', '$gender')")or die("Insert Failed ".mysql_error());

         }
         else{echo 'error';}

         if($results){
             include_once 'connection.php';
             $con=new connection();
             $dbg=$con->db;
             $sql="SELECT * FROM `login_register` WHERE `login_id`='$lastId'";
             $stmt=$dbg->query($sql);
             $rows=$stmt->fetch(PDO::FETCH_ASSOC);
                 session_start();
                //echo $lastId;
                 $_SESSION['Uname']=$rows['email'];
                 $_SESSION['pword']=$rows['password'];
                 $_SESSION['Utype']=$rows['type'];
                 $_SESSION['Uid']=$rows['login_id'];

             }

在这个db.php页面之后,它将转到user_index.php 以下代码在user_index.php中使用

<?php
session_start();

if (!isset($_SESSION['Uname'])) {
    //header("location:index.php");
    echo 'no sesseion';
}
 else {
......
......
    }

可以帮助我一些人

2 个答案:

答案 0 :(得分:1)

您在开始会话前输出

if($_POST['action']=='finder_quick_reg')
{
    // ...
    print_r($_POST);
    // ...
}
else { echo 'error'; }

从标题中我假设在生产服务器上关闭了error_reporting,否则你会看到一条错误信息

  

警告:无法修改标头信息 - 已发送的标头...

你应该在你的其他文件中完全像你在其他文件中那样开始会话 - 在它开始之前,在所有其他语句之前。

在旁注中,看一下notes in the documentation for export() function点,在那里写了为什么/在不受信任的数据上使用它是个坏主意。

答案 1 :(得分:0)

session_start();

应该来自登录页面。