我使用电子邮件验证进行注册。 注册后我登录用户并在会话中保留它的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);
答案 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
}