Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果会话设置在codeigniter中,Facebook无法抓取我的url_Php_Codeigniter_Session_Facebook Graph Api - Fatal编程技术网

Php 如果会话设置在codeigniter中,Facebook无法抓取我的url

Php 如果会话设置在codeigniter中,Facebook无法抓取我的url,php,codeigniter,session,facebook-graph-api,Php,Codeigniter,Session,Facebook Graph Api,我使用addthis进行共享,框架是代码点火器 问题是,若在我的控制器中我检查了会话,那个么facebook就无法抓取我的url。若我删除了会话,那个么它就工作了。那么,我可以如何使用session进行fb共享呢 以下代码正在运行: 控制器 public function index() { $this->load->view('client/home'); } 如果我检查会话,则fb共享不起作用: public function index() { if(!$t

我使用addthis进行共享,框架是代码点火器

问题是,若在我的控制器中我检查了会话,那个么facebook就无法抓取我的url。若我删除了会话,那个么它就工作了。那么,我可以如何使用session进行fb共享呢

以下代码正在运行:
控制器

public function index()
{
     $this->load->view('client/home');
}
如果我检查会话,则fb共享不起作用:

public function index()
{
    if(!$this->session->userdata('client_id'))
    {
        redirect('client/login/index', 'refresh');
        exit;
    }
     $this->load->view('client/home');
}
提前谢谢


旁注:我在客户登录网站时设置会话。因此,当客户单击FB共享按钮时,会话已设置。

请尝试此代码的修改版本:

public function index()
{
    if(!$this->session->userdata('client_id') && !strstr( $_SERVER['HTTP_USER_AGENT'], 'facebookexternalhit') )
    {
        redirect('client/login/index', 'refresh');
        exit;
    }
     $this->load->view('client/home');
}

我添加了一个条件,检查用户代理是否是Facebook scraper(
facebookexternalhit
)。如果用户代理不是Faecebook,它将强制登录。(请记住,用户代理可能被欺骗)。如果它检测到Facebook,它将加载该页面并允许Facebook正确抓取内容。

谢谢您的帮助。这是有用的。