Php 取消设置$\会话不工作
嗨,我做了一个连接facebook的代码,注册用户,然后让用户登录,一切都很好。。当他们登录时,我设置Php 取消设置$\会话不工作,php,sql,facebook,facebook-php-sdk,Php,Sql,Facebook,Facebook Php Sdk,嗨,我做了一个连接facebook的代码,注册用户,然后让用户登录,一切都很好。。当他们登录时,我设置 $_SESSION['id'] 我的猜测是,如果这是未设置的用户将从我的网站注销,它不会自动重新连接 因为以前它就像一个循环,每次我注销时,它都会使用FacebookConnect再次登录,即使用户没有再次使用facebook登录clic 编辑:我改变了一个条件,知道是不是循环,我可以注销该网站 但是会话,不是未设置的!,为什么,只是Cookie设置为,但是,=会话未取消设置 这是我的密码
$_SESSION['id']
我的猜测是,如果这是未设置的用户将从我的网站注销,它不会自动重新连接
因为以前它就像一个循环,每次我注销时,它都会使用FacebookConnect再次登录,即使用户没有再次使用facebook登录clic
编辑:我改变了一个条件,知道是不是循环,我可以注销该网站
但是会话,不是未设置的!,为什么,只是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();
?>
会话取消设置和销毁,已测试但不工作。。为什么?
代码
不建议以这种方式取消设置会话变量。使用未设置的会话,请参阅 除此之外,您不希望会话仍然存在于用户计算机上,因为这次使用会话 会话\u unset只是清除会话以供使用
不建议以这种方式取消设置会话变量。使用未设置的会话,请参阅 除此之外,您不希望会话仍然存在于用户计算机上,因为这次使用会话 会话\u unset只是清除会话以供使用
在您的注销脚本中,在setcookieCOOKIE_PASSWORD、、0、/.$srv_pats、$srv_nms之后添加这些行
在您的注销脚本中,在setcookieCOOKIE_PASSWORD、、0、/.$srv_pats、$srv_nms之后添加这些行
好的,我将所有未设置的会话代码替换为session\u unset no more value,非常感谢您的回答和评论。。但是我做错了什么,因为session\u destroy也无法从站点注销用户。您确定在重新加载页面进行测试时脚本没有重新创建这些会话吗?您可以在浏览器中查看站点注册的Cookie列表,这可能有助于解决问题。会话\u destroy后,会话实际上已被破坏,因此您似乎正在某处重新创建会话。可能在使用headerLocation重定向后调用的操作上:.$this->make_urluser/login/l;?是的,我知道,这就是为什么我在设置$userInfo['email']| | isset$_SESSION['id']{include facebookregister.php;}时添加这个,但它不起作用。。这是我的问题。好的,我用session\u unset no more值替换所有未设置的会话代码。非常感谢您的回答和评论。。但是我做错了什么,因为session\u destroy也无法从站点注销用户。您确定在重新加载页面进行测试时脚本没有重新创建这些会话吗?您可以在浏览器中查看站点注册的Cookie列表,这可能有助于解决问题。会话\u destroy后,会话实际上已被破坏,因此您似乎正在某处重新创建会话。可能在使用headerLocation重定向后调用的操作上:.$this->make_urluser/login/l;?是的,我知道,这就是为什么我在设置$userInfo['email']| | isset$_SESSION['id']{include facebookregister.php;}时添加这个,但它不起作用。。这是我的问题…但这不会让用户从facebook注销??我只想把用户从我的网站上注销,而不是从facebook上注销。。。不管怎样,我还是要测试一下,谢谢,:D也许这就是我需要的!!:DI测试过了,但它会把我带到Facebook页面,如果我点击返回到我的页面,它就会注销!但是它会自动登录用户jaja,所以它不适合我的需要:我认为$facebook->getLogoutUrlarraynext=>“用户注销后的url”中提供的url有问题;。你提供了什么网址?好的。这是一个众所周知的问题,可能是由许多因素造成的。让我们缩小范围。在浏览器中打开新的专用模式。不要登录你的facebook帐户。使用网站中提供的facebook登录登录您的网站。一旦登录,然后尝试注销。很好!现在回到您的旧浏览器,从facebook.com上的facebook帐户注销,然后转到您的站点,手动清除站点上的所有cookie。然后尝试登录,它应该可以正常工作。但这不会让用户从facebook注销??我只想把用户从我的网站上注销,而不是从facebook上注销。。。不管怎样,我还是要测试一下,谢谢,:D也许这就是我需要的!!:DI测试过了,但它会把我带到Facebook页面,如果我点击返回到我的页面,它就会注销!但是它会自动登录用户jaja,所以它不适合我的需要:我认为$facebook->getLogoutUrlarraynext=>“用户注销后的url”中提供的url有问题;。你提供了什么网址?好的。这是一个众所周知的问题,可能是由许多因素造成的。让我们缩小范围。在浏览器中打开新的专用模式。不要登录你的facebook帐户。使用网站中提供的facebook登录登录您的网站。一旦登录,然后尝试注销。很好!现在回到您的旧浏览器,从facebook.com上的facebook帐户注销,然后转到您的网站,手动清除所有错误 你网站的cookies。然后尝试登录,它应该可以正常工作。
<?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>
<?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: noreply@youwebsitehere.co.uk');
//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;
}
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,
));
$logout = $facebook->getLogoutUrl(array("next"=>'your url after user logs out'));
$facebook->destroySession();
//destroy your sessions created by your site also using session_destroy();
/* don't forget to remove header("Location: ".$this->make_url("user/login/l")); */
header("Location:$logout");