контроллер:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Test extends CI_Controller
{
function __construct()
{
parent :: __construct();
$this->load->helper(array('form', 'url', 'captcha', 'email', 'html'));
$this->load->library('facebook');
$this->load->model('user');
}
public function login()
{
$userData = array();
if($this->facebook->is_authenticated())
{
$userProfile = $this->facebook->request('get', '/me?fields=id,first_name,last_name,email,gender,locale,picture');
$userData['oauth_provider'] = 'facebook';
$userData['oauth_uid'] = $userProfile['id'];
$userData['first_name'] = $userProfile['first_name'];
$userData['last_name'] = $userProfile['last_name'];
$userData['email'] = $userProfile['email'];
$userData['gender'] = $userProfile['gender'];
$userData['locale'] = $userProfile['locale'];
$userData['profile_url'] = 'https://www.facebook.com/'.$userProfile['id'];
$userData['picture_url'] = $userProfile['picture']['data']['url'];
$userID = $this->user->checkUser($userData);
if(!empty($userID)){
$data['userData'] = $userData;
$this->session->set_userdata('userData',$userData);
} else {
$data['userData'] = array();
}
$data['logoutUrl'] = $this->facebook->logout_url();
}
else
{
$fbuser = '';
$data['authUrl'] = $this->facebook->login_url();
}
$data['student_id'] = $this->session->userdata('student_id');
$this->load->view('header',$data);
$this->load->view('login',$data);
}
}
Вид: login.php
<?php
if(!empty($authUrl))
{
echo '<a href="'.$authUrl.'"><img src="'.base_url().'assets/images/flogin.png" alt="collegescan facebook login" style="width: 200px;"/></a>';
}
else
{
?>
<div class="wrapper">
<div class="welcome_txt">Welcome <b><?php echo $userData['first_name']; ?></b></div>
<div class="fb_box">
<p><b>Logout from <a href="<?php echo $logoutUrl; ?>">Facebook</a></b></p>
</div>
</div>
<?php
}
?>
модели: User.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User extends CI_Model
{
function __construct()
{
$this->tableName = 'users';
$this->primaryKey = 'id';
}
public function checkUser($data = array())
{
$this->db->select($this->primaryKey);
$this->db->from($this->tableName);
$this->db->where(array('oauth_provider'=>$data['oauth_provider'],'oauth_uid'=>$data['oauth_uid']));
$prevQuery = $this->db->get();
$prevCheck = $prevQuery->num_rows();
if($prevCheck > 0)
{
$prevResult = $prevQuery->row_array();
$data['modified'] = date("Y-m-d H:i:s");
$update = $this->db->update($this->tableName,$data,array('id'=>$prevResult['id']));
$userID = $prevResult['id'];
}
else
{
$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);
$insert = $this->db->insert('students',$data);
$userID = $this->db->insert_id();
$data = array(
'firstname' => $userProfile['first_name'],
'lastname' => $userProfile['last_name'],
'email' => $userProfile['email']
);
$this->db->insert('students', $data);
}
return $userID?$userID:FALSE;
}
}
В этом коде я создал логин facebook в codeigniter, он отлично работает, и данные логина facebook вставляются в таблицу пользователей, но теперь я хочу вставить только имя, фамилию и адрес электронной почты в таблицу студентов, которая еще не вставлена. Итак, как я могу это сделать? Пожалуйста, помогите мне.
Благодарю вас
Задача ещё не решена.
Других решений пока нет …