会话在邮件验证寄存器

时间:2015-05-30 06:45:27

标签: php session session-variables

我使用电子邮件验证进行注册。 注册后我登录用户并在会话中保留它的id(我有一个用于存储用户登录信息的会话类),然后发送一个链接到他的邮件,毕竟我将用户重定向到另一个页面并告诉他请检查你的邮件并点击。 ...

这是我发送给用户邮件的链接(现在我只是默认发送到我的邮箱)

$body.="<h4><a href='http://www.habibabdollahi.com/fani/home/activate.php?user=".$user->id.
                "&code=".$user->mail_verify_code."'>فعال سازی</a></h4>";    

在activate.php我用他的id和他的代码验证用户,但似乎我在邮件中点击链接后没有访问会话。 但如果在注册后将用户重定向到最后一个链接的activate.php就没有问题,我在这种情况下有会话。

redirect_to("home/activate.php"."?user=$user->id&code=$user->mail_verify_code");

问题是朋友,我会生气!

只关注会话,我只想知道为什么我的会话在通过邮件重定向后丢失了 这是我的会话课

class Session{

    public $user_id;
    private $loged_in=false;
    private $verified_mail=false;
    private $verified_mobile=false;
    private $user_type; 


    function __construct(){
        session_start();
        $this->check_login();
        $this->check_verification();// ham mobile va ham mail ra check mikonad
        $this->check_user_type();
    }

    /* It'es get method, that get the loged status  */
    public function is_logged_in(){
        return $this->loged_in;     
    }

    public function login($user){
        //database should find user based on username and password
        if($user){
            $this->user_id=$_SESSION['user_id']=$user->id;
            $this->loged_in=true;
        }
    }

    public function verify_mobile($is_verified){
        if($is_verified){
            $this->verified=$_SESSION['verified_mobile']=$is_verified;
        }else{
            return false;   
        }
    }

    public function verify_mail($is_verified){
        if($is_verified){
            $this->verified=$_SESSION['verified_mail']=$is_verified;
        }else{
            return false;   
        }
    }
    /******  user type ra be khater miseparad    *********************/
    public function remember_user_type($user){
            if($user){
                $this->user_type=$_SESSION['user_type']=$user->user_type_id;
            }
    }
    public function get_user_type(){

        return $this->user_type;    
    }


    private function check_user_type(){
        if(isset($_SESSION['user_type'])){
            $this->user_type=$_SESSION['user_type'];
        }

    }
    // che mobile va ya che mail verify shode bashad okeye
    public function get_is_verified(){
        return ($this->verified_mobile || $this->verified_mail);
    }

    public function get_is_verified_mobile(){
        return $this->verified_mobile;      
    }

    public function get_is_verified_mail(){
        return $this->verified_mail;        
    }

    public function logout(){
        unset($_SESSION['user_id']);
        unset($this->user_id);
        $this->loged_in=false;
    }

    public function get_user_id(){
        return $this->user_id;  
    }

    private function check_login(){

        if(isset($_SESSION['user_id'])){
            $this->user_id=$_SESSION['user_id'];
            $this->loged_in=true;

        }else{
            unset($this->user_id);
            $this->loged_in=false;
        }

    }//check_login

    private function check_verification(){

        if(isset($_SESSION['verified_mail'])){
            $this->verified_mail=$_SESSION['verified_mail'];
            //$this->verified=true; 
        }

        if(isset($_SESSION['verified_mobile'])){
            $this->verified_mobile=$_SESSION['verified_mobile'];
            //$this->verified=true;
        }

    }


}//class end

$session=new Session();
//var_dump($session);

2 个答案:

答案 0 :(得分:0)

你可以试试这个

if(isset($_SESSION['user_id'])){
        $this->user_id=$_SESSION['user_id'];
        $this->loged_in=true;

    }

而不是

if(isset($_REQUEST['user'])){
        $this->user_id=$_REQUEST['user'];
        $this->loged_in=true;

    }

因为在网址上使用了传递user参数

$body.="<h4><a href='http://www.habibabdollahi.com/fani/home/activate.php?user=".$user->id.
                "&code=".$user->mail_verify_code."'>فعال سازی</a></h4>";  

答案 1 :(得分:0)

  

验证码刷新会话并重定向用户后   登录页面当用户登录时,检查用户是否处于活动状态   然后将所有用户数据发送到会话阵列   我不是专家,而是提出建议

     

首先获取您选择登录的用户身份ID

     

然后将这些ID发送到登录功能,然后给他开会话

     

试试吧

private function check_login($userID){
     Used Fetch Query there for login authentication and then give him to session ...       
your session code is here.........................  and redirect or return true   
}