取消设置 $_SESSION 不起作用

2024-02-15

嗨,我编写了一个与 facebook 连接并注册用户的代码,然后它使用户登录,一切都很好。.当他们登录时,我设置

$_SESSION['id']

我的猜测是,如果未设置此设置,用户将从我的网站注销,并且不会“自动重新连接”。

因为以前它就像一个循环,每次我注销时,它都会使用 facebook 连接再次登录,即使用户没有再次点击“使用 facebook 登录”...

编辑:我更改了条件并且知道不是“循环”我可以注销该网站。

但是 Session 并没有被取消设置!为什么,只是 cookie 设置为 '' 但是,=( 会话没有被取消设置

这是我的代码

头部

<?php
//
// uses the PHP SDK. Download from https://github.com/facebook/php-sdk
include("facebook-php-sdk-master/src/facebook.php");

//
// from the facebook app page
define('YOUR_APP_ID', '');
define('YOUR_APP_SECRET', '');

//
// new facebook object to interact with facebook
$facebook = new Facebook(array(
 'appId' => YOUR_APP_ID,
 'secret' => YOUR_APP_SECRET,
));
//
// if user is logged in on facebook and already gave permissions
// to your app, get his data:
$userId = $facebook->getUser();

?>

The body

<?php
echo $_SESSION['id'];

if ($userId) {
 //
 // already logged? show some data
 $userInfo = $facebook->api('/' + $userId);





 if (isset($userInfo['email']) || isset($_SESSION['id']))

{ include "facebookregister.php"; } else { echo "no hay permisos de facebook"; }

} else {
 //
 // use javaascript api to open dialogue and perform
 // the facebook connect process by inserting the fb:login-button
 ?>
 <div id="fb-root"></div>
 <fb:login-button scope='email,user_birthday'></fb:login-button>
 <?php
}
?>
 <script>
 window.fbAsyncInit = function() {
 FB.init({
 appId : <?=YOUR_APP_ID?>,
 status : true,
 cookie : true,
 xfbml : true,
 oauth : true,
 });


FB.Event.subscribe('auth.login', function(response) {
 // ------------------------------------------------------
 // This is the callback if everything is ok
 window.location.reload();
 });
 };

(function(d){
 var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
 js = d.createElement('script'); js.id = id; js.async = true;
 js.src = "//connect.facebook.net/en_US/all.js";
 d.getElementsByTagName('head')[0].appendChild(js);
 }(document));
</script>

facebook注册.php

<?PHP 
echo "<p>YOU ARE: <strong>". $userInfo['name'] ."</strong><br/>";
echo "Your birth date is: ".$userInfo['birthday']."</p>";
echo "Your mail is: ".$userInfo['email']."</p>";

echo "Your mail is: ".$userInfo['username']."</p>";



//$name = $userInfo['name'];
$first_name = $userInfo['first_name'];
$last_name = $userInfo['last_name'];
$birthday = $userInfo['birthday'];
$username_fb = $userInfo['username'];
$email = $userInfo['email'];
$gender = $userInfo['gender'];
$status = 1;

function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!';
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, strlen($characters) - 1)];
    }
    return $randomString;
}


    $db= DAL::get_instance();           



    //select all rows from our users table where the emails match
                                    $count=$db->read_single_column("select count(id) from ".TABLE_PREFIX."users where email=? and status=1", array($email));
 echo "Aqui".$count;
                                    //if the number of matchs is 1
                                    if($count == 1){
                                        //the email address supplied is taken so just login user 


                                    $res=$db->execute_query("select * from ".TABLE_PREFIX."users where email=?",array($email));
                    $v=$res->fetch_assoc();
                    $username=$v['username'];
                    $password=$v['password'];



            $this->set_variable('username',$username);
                    $this->set_variable('password',$password);


                    $query="select id from ".TABLE_PREFIX."users where username=? and password=?";
                    $res=$db->execute_query($query,array($username,$password));

                    $value2=$res->fetch_assoc();
                    $id=$value2['id'];
                    $orig_password=$db->read_single_column("select password from ".TABLE_PREFIX."users where username=? and status=1", array($username));




                    if($password == $orig_password)
                    {
                        $t=time();
                        $sql="update ".TABLE_PREFIX."users set last_login_time=? where id=?";
                        $res=$db->execute_query($sql,array($t,$id));




                        $srv_nms=BASE;
                        $srv_nms=str_replace("http://","",$srv_nms);
                        $srv_nms=str_replace("https://","",$srv_nms);
                        $srv_nms=str_replace("www.","",$srv_nms);


                        $srv_pats=$srv_nms;

                        $srv_nms_arr=explode("/",$srv_nms);
                        $srv_nms=$srv_nms_arr[0];


                        $srv_pats=str_replace($srv_nms."/","",$srv_pats);


                        setcookie(COOKIE_LOGINID,$id,0,"/".$srv_pats,$srv_nms);
                        setcookie(COOKIE_USERNAME,$username,0,"/".$srv_pats,$srv_nms);
                        setcookie(COOKIE_PASSWORD,$orig_password,0,"/".$srv_pats,$srv_nms);
                            $_SESSION['user'] = $email;
                        $_SESSION['id'] = $id;          

        if(LoginHelper::validate_user_login()==0)
        {
            header("Location:index.php");
            exit;
        }


        }


                                    }else{

    //finally, otherwise register there account

                                        //time of register (unix)
                                        $registerTime = date('U');

                                        //make a code for our activation key
                                        $code = md5($username).$registerTime;

                                            $password = $randomString;

                                        $password  = md5($password);

                                        //insert the row into the database
                                         $res=$db->execute_query("INSERT INTO ".TABLE_PREFIX."users (`username`, `password`, `email`, `reg_time`, `status`, `fname`, `lname`) VALUES('".$username_fb."','".$password."','".$email."','".$registerTime."','".$status."','".$first_name."' ,'".$last_name."'  )");

                                        $row=$db->execute_query("SELECT username, password FROM ".TABLE_PREFIX."users WHERE email=".$email."");
                $row_data=$row->fetch_assoc();

                $username=$row_data['username'];
                $password=$row_data['password'];


            $this->set_variable('username',$username);
                    $this->set_variable('password',$password);


                    $query="select id from ".TABLE_PREFIX."users where username=? and password=?";
                    $res=$db->execute_query($query,array($username,$password));

                    $value2=$res->fetch_assoc();
                    $id=$value2['id'];
                    $orig_password=$db->read_single_column("select password from ".TABLE_PREFIX."users where username=? and status=1", array($username));


                    if(md5($password)== $orig_password)
                    {
                        $t=time();
                        $sql="update ".TABLE_PREFIX."users set last_login_time=? where id=?";
                        $res=$db->execute_query($sql,array($t,$id));




                        $srv_nms=BASE;
                        $srv_nms=str_replace("http://","",$srv_nms);
                        $srv_nms=str_replace("https://","",$srv_nms);
                        $srv_nms=str_replace("www.","",$srv_nms);


                        $srv_pats=$srv_nms;

                        $srv_nms_arr=explode("/",$srv_nms);
                        $srv_nms=$srv_nms_arr[0];


                        $srv_pats=str_replace($srv_nms."/","",$srv_pats);


                        setcookie(COOKIE_LOGINID,$id,0,"/".$srv_pats,$srv_nms);
                        setcookie(COOKIE_USERNAME,$username,0,"/".$srv_pats,$srv_nms);
                        setcookie(COOKIE_PASSWORD,$orig_password,0,"/".$srv_pats,$srv_nms);

                        $_SESSION['user'] = $email;
                        $_SESSION['id'] = $id;              



            //header("Location:".$this->make_url('user/home'));
            //exit;

                }                       


                                        //send the email with an email containing the activation link to the supplied email address
                                        mail($email, $username.' registration confirmation', "Thank you for registering to us ".$username.",\n\nHere is your activation link. If the link doesn't work copy and paste it into your browser address bar.\n\nhttp://www.yourwebsitehere.co.uk/activate.php?code=".$code, 'From: [email protected] /cdn-cgi/l/email-protection');

                                        //display the success message
                                        echo "<center>You have successfully registered, please visit you inbox to activate your account!</center>";


            header("Location: index.php");
            exit;
                                    }







        ?>

最重要的。注销操作

function logout_action()
    {
        $srv_nms=BASE;
        $srv_nms=str_replace("http://","",$srv_nms);
        $srv_nms=str_replace("https://","",$srv_nms);
        $srv_nms=str_replace("www.","",$srv_nms);


        $srv_pats=$srv_nms;

        $srv_nms_arr=explode("/",$srv_nms);
        $srv_nms=$srv_nms_arr[0];


        $srv_pats=str_replace($srv_nms."/","",$srv_pats);


        setcookie(COOKIE_LOGINID,"",0,"/".$srv_pats,$srv_nms);
        setcookie(COOKIE_USERNAME,"",0,"/".$srv_pats,$srv_nms);
        setcookie(COOKIE_PASSWORD,"",0,"/".$srv_pats,$srv_nms);

        unset($_SESSION['user']);
unset($_SESSION['id']);
unset($_SESSION['fb_540341239342331_code']);
unset($_SESSION['fb_540341239342331_access_token']);
unset($_SESSION['fb_540341239342331_user_id']);


        header("Location: ".$this->make_url("user/login/l"));
        die;
    }

会话取消设置并销毁,经过测试但不起作用..为什么? 代码

function logout_action()

{
    $srv_nms=BASE;
    $srv_nms=str_replace("http://","",$srv_nms);
    $srv_nms=str_replace("https://","",$srv_nms);
    $srv_nms=str_replace("www.","",$srv_nms);


    $srv_pats=$srv_nms;

    $srv_nms_arr=explode("/",$srv_nms);
    $srv_nms=$srv_nms_arr[0];


    $srv_pats=str_replace($srv_nms."/","",$srv_pats);


    setcookie(COOKIE_LOGINID,"",0,"/".$srv_pats,$srv_nms);
    setcookie(COOKIE_USERNAME,"",0,"/".$srv_pats,$srv_nms);
    setcookie(COOKIE_PASSWORD,"",0,"/".$srv_pats,$srv_nms);

    session_unset();


    header("Location: ".$this->make_url("user/login/l"));
    die;
}

不建议以这种方式取消设置会话变量。使用session_unset(), see http://php.net/manual/en/function.session-unset.php http://php.net/manual/en/function.session-unset.php

除此之外,您不希望会话仍然存在于用户计算机上,用于此用途session_destroy().

session_unset()只是清除会话以供使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

取消设置 $_SESSION 不起作用 的相关文章

  • 自定义 Facebook FOSFacebookBundle 登录按钮

    有人知道如何自定义 更改 FosFacebook 登录按钮的图像吗 facebook login button autologoutlink true 并在整页 Facebook 登录上重定向 而不是在弹出窗口上重定向 这使用了 twig
  • 阻止注销页面后的后退按钮

    我有 php 注销页面 当用户单击注销链接时 请参阅此页面并重定向到索引页面 但是当单击后退按钮时 我会看到带有用户数据的上一页 当然 当我刷新页面时 我看不到以前的页面和数据 我在单击注销并单击后退按钮后检查了其他代码 drupal 但我
  • 通过 facebook graph API 检索 facebook 用户的邮政编码

    我正在尝试使用 facebook graph API 检索用户的邮政编码 我正在使用以下代码 代码在php ini中 facebook new Facebook array appId gt APP ID secret gt APP SEC
  • 如何在使用连接池时强制 SqlConnection 物理关闭?

    我明白 如果我实例化一个 SqlConnection 对象 我实际上是从连接池中获取一个连接 当我调用 Open 时 它将打开连接 如果我对该 SqlConnection 对象调用 Close 或 Dispose 方法 它将返回到连接池 但
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 如何解码 eval( gzinflate( base64_decode(

    我已将此代码注入到我的网站中 如何解码尾随字符串 我需要知道发生了什么以及其背后的代码是什么 这应该输出将被执行的代码eval 我希望这就是您正在寻找的
  • Magento - 检查 cms 页面

    我想通过 php 检查页面是否是 Magento 中的 cms page 我需要不同的 cms 页面面包屑 所以我尝试在一个条件下做到这一点 但我不知道如何或在哪里查看 到目前为止 这是我的 breadcrumbs phtml p some
  • Instagram 粉丝计数 - 使用 jQuery / json 和 PHP

    经过几个小时的工作和一些帮助萨希尔 米塔尔我们已经成功使用 jQuery json 和 PHP 检索 Instagram 关注者计数 这是我们设法整理的内容 希望对其他想要获取 Instagram 信息的人有所帮助 我们的 jQuery I
  • WordPress 分页自定义帖子类型

    我有一个名为 新闻 的页面 使用页面模板page newslist php 它应该显示来自自定义帖子类型 也称为新闻 的帖子 我意识到两者具有相同的名称会导致问题 因此在注册自定义帖子类型时 我进行了重写以将其与页面区分开来 rewrite
  • 使用php将数据存储到文本文件中?

    我正在尝试将数据存储在文本文件中 例如使用 php 将数组存储到文本文件中 而不是存储到 mysql 数据库中 例如 这里是要存储在文本文件中的数据 name gt john age gt 25 location gt australia
  • 使用 JSON 参数的 Postgres 批量 INSERT 函数

    这是一个plpgsqlpostgres 的函数9 6 它试图INSERT一行 如果插入没有失败 由于违反键约束 那么它会运行更多命令 CREATE FUNCTION foo int text text RETURNS void AS BEG
  • 如何仅使用 PHP5 RecursiveDirectoryIterator 类递归显示具有特定文件类型的文件夹和子文件夹

    您好 我正在尝试使用 FilterIterator 上的扩展来获取 RecursiveDirectoryIterator 类 但由于某种原因 它仅在根目录上进行迭代 我的代码是这样的 class fileTypeFilter extends
  • Sonata DateTimePickerType 类默认日期显示错误的日期时间格式

    我陷入困境 我不知道如何使用 sonata DateTimePickerType 类正确设置默认日期和时间 我尝试了不同的方法 但到目前为止 没有一种方法没有帮助 在下面的截图中 help 键显示正确的日期和时间 但是当我使用 dp 默认日
  • sql server 按组排名

    问题看似简单 但我却无法理解 这是针对 sql 服务器的 what I have in a table What I need as a output cksum id cksum id 2162514679 204 2162514679
  • MVC 模式中的验证层

    验证模型将使用的数据的最佳位置在哪里 例如 考虑登记表 我们有一些来自注册表的数据 那么验证这些数据的最佳位置在哪里 我们应该通过 if 语句或特殊的验证器类来检查每个数据 这意味着大量的编码 所以我想了解在哪里可以做到这一点 在控制器中
  • PHP 数组通过 JSON 转为 jquery 数组

    我有点困惑为什么以下不起作用 get php
  • 在 SQL 数据库中存储“列表”的最正确方法是什么?

    因此 我读了很多关于如何将多个值存储到一个列中是一个坏主意 并且违反了数据标准化的第一条规则 令人惊讶的是 这不是 不要谈论数据标准化 所以我需要一些帮助 目前我正在为我工 作的地方设计一个 ASP NET 网页 我想根据此人所属的 Act
  • php curl 使用 GET 发送变量 奇怪的结果

    我正在尝试调用远程站点上页面中的网址 决定使用curl 在远程站点上 url 变量显示为 REQUEST Array var1 gt val1 amp var2 gt val2 amp var3 gt val3 被调用的url是 http
  • 如何从父类中获取子类名

    我试图在不需要子类上的函数的情况下完成此任务 这可能吗 我有一种感觉 但我真的很想确定
  • Laravel $request->file() 返回 null

    尝试在后端使用 Laravel 上传文件时遇到问题 Issue Laravel request gt file 方法返回 null Setup 我使用以下方法构建了一个 AJAX 请求超级代理人 https github com visio

随机推荐