Как перенаправить после входа в Google с помощью codeigniter? - PullRequest
0 голосов
/ 14 ноября 2018

контроллер:

public function login()
{
    if($this->session->userdata('loggedIn') == true)
    {
        redirect('profile');
    }
    if(isset($_GET['code']))
    {
        if($this->google->getAuthenticate())
        {
            $gpInfo = $this->google->getUserInfo();
            $userDatas['oauth_provider'] = 'google';
            $userDatas['oauth_uid']      = $gpInfo['id'];
            $userDatas['name']           = $gpInfo['given_name'].' '.$gpInfo['family_name'];
            $userDatas['email']          = $gpInfo['email'];
            $userDatas['user_image']     = !empty($gpInfo['picture'])?$gpInfo['picture']:'';
            $userID = $this->Google_user->checkUser($userDatas);
            $this->session->set_userdata('loggedIn', true);
            $this->session->set_userdata('userDatas', $userDatas);
            redirect('profile');
        }
    }
    $data['loginURL'] = $this->google->loginURL();
    $this->load->view('login',$data);
}

public function profile()
{
    if(!$this->session->userdata('loggedIn')){
        redirect(base_url(),'refresh');
    }
    $data['userDatas'] = $this->session->userdata('userDatas');
    $this->load->view('profile',$data);
}

view: login.php

<a href="<?php echo $loginURL; ?>">Google Login</a>

модель: Google_user.php

<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Google_user extends CI_Model {

    function __construct() {
        $this->tableName = 'user';
        $this->primaryKey = 'id';
    }
    public function checkUser($data = array())
    {
        $this->db->select($this->primaryKey);
        $this->db->from($this->tableName);
        $con = array(
            'oauth_provider' => $data['oauth_provider'],
            'oauth_uid' => $data['oauth_uid']
        );
        $this->db->where($con);
        $query = $this->db->get();
        $check = $query->num_rows();
        if($check > 0)
        {
            $result = $query->row_array();
            $data['modified'] = date("Y-m-d H:i:s");
            $update = $this->db->update($this->tableName, $data, array('id'=>$result['id']));
            $userID = $result['id'];
        }
        else
        {
            $data['candidate_id'] = date(YmdHis);
            $data['register_as'] = 'Consultant';
            $data['created'] = date("Y-m-d H:i:s");
            $data['modified'] = date("Y-m-d H:i:s");
            $insert = $this->db->insert($this->tableName,$data);
            $userID = $this->db->insert_id();
        }
        return $userID?$userID:false;
    }
}

В этом коде я создаллогин Google, который работает, когда я нажимаю на ссылку Google Login, он перенаправляет меня на страницу входа в систему, но когда я заполняю данные для входа и нажимаю кнопку отправки, он снова перенаправляет меня на страницу login и не перенаправляет меня на profile pageНе знаю почему?где я делаю не так?Пожалуйста, помогите мне.

Спасибо

1 Ответ

0 голосов
/ 14 ноября 2018

Если вы собираетесь перенаправить его на тот же контроллер, на котором вы работаете, просто напишите следующий код:

$this->load->helper('url');

    if ($some_value === FALSE/TRUE)  {//You may give 0/1 as well,its up to your logic

             redirect('same_controller/method', 'refresh');
    }

и проверьте, получите ли вы $_GET['code']

...