Как переделать правильно скрипт от facebook на vk

348
09 декабря 2017, 09:12

Добрый вечер возникла проблема кто то может подскажет как её решить есть примерный скрипт авторизации через фейсбук надо переделать под вк возможно такое???

function facebook() {
    if($this->fbapp) {
        $getToken = $this->getFbToken($this->fbappid, $this->fbappsecret, $this->url.'/requests/connect.php?facebook=true', $this->fbcode);
        $user = $this->parseFbInfo($getToken['access_token']);
        if($getToken == null || $_SESSION['state'] == null || ($_SESSION['state'] != $this->fbstate) || empty($user->email)) {
            header("Location: ".$this->url);
        }
        if(!empty($user->email)) {
            $this->email = $user->email;
            $this->first_name = $user->first_name;
            $this->last_name = $user->last_name;
            $checkEmail = $this->verify_if_email_exists(1);
            // If user already exist
            if($checkEmail) {
                // Set sessions and log-in
                $_SESSION['username'] = $checkEmail['username'];
                $_SESSION['password'] = $checkEmail['password'];
                // Redirect user
                header("Location: ".$this->url);
            } else {
                $this->profile_image = $this->parseFbPicture($getToken['access_token']);
                $this->generateUsername();
                $this->password = $this->generatePassword(8);
                $this->query();
                $_SESSION['username'] = $this->username;
                $_SESSION['password'] = md5($this->password);
                return 1;
            }
        }
    }
}
function generateUsername($type = null) {
    // If type is set, generate a random username
    if($type) {
        $this->username = $this->parseUsername().rand(0, 999);
    } else {
        $this->username = $this->parseUsername();
    }
    // Replace the '.' sign with '_' (allows @user_mention)
    $this->username = str_replace('.', '_', $this->username);
    // Check if the username exists
    $checkUser = $this->verify_if_user_exist();
    if($checkUser) {
        $this->generateUsername(1);
    }
}
function parseUsername() {
    if(ctype_alnum($this->first_name) && ctype_alnum($this->last_name)) {
        return $this->username = $this->first_name.'.'.$this->last_name;
    } elseif(ctype_alnum($this->first_name)) {
        return $this->first_name;
    } elseif(ctype_alnum($this->last_name)) {
        return $this->last_name;
    } else {
        // Parse email address
        $email = explode('@', $this->email);
        $email = preg_replace("/[^a-z0-9]+/i", "", $email[0]);
        if(ctype_alnum($email)) {
            return $email;
        } else {
            return rand(0, 9999);
        }
    }
}
function generatePassword($length) {
    // Allowed characters
    $chars = str_split("abcdefghijklmnopqrstuvwxyz0123456789");
    // Generate password
    for($i = 1; $i <= $length; $i++) {
        // Get a random character
        $n = array_rand($chars, 1);
        // Store random char
        $password .= $chars[$n];
    }
    return $password;
}
function getFbToken($app_id, $app_secret, $redirect_url, $code) {
    // Build the token URL
    $url = 'https://graph.facebook.com/oauth/access_token?client_id='.$app_id.'&redirect_uri='.urlencode($redirect_url).'&client_secret='.$app_secret.'&code='.$code;
    // Get the file
    $response = json_decode(fetch($url), true);
    // Return parameters
    return $response;
}
function parseFbInfo($access_token) {
    // Build the Graph URL
    $url = "https://graph.facebook.com/me?fields=id,email,first_name,gender,last_name,link,locale,name,timezone,updated_time,verified&access_token=".$access_token;
    // Get the file
    $user = json_decode(fetch($url));
    // Return user
    if($user != null && isset($user->name)) {
        return $user;
    }
    return null;
}
function parseFbPicture($access_token) {
    // Build the Graph URL
    $url = "https://graph.facebook.com/me/picture?width=500&height=500&access_token=".$access_token;
    // Get the image
    $image = fetch($url);
    // Generate the file name
    $file_name = mt_rand().'_'.mt_rand().'_'.mt_rand().'.jpg';
    $file_path = __DIR__ .'/../uploads/avatars/';
    // Create the file
    $fp = fopen($file_path.$file_name, 'wb');
    // If the file can't be written
    if(!file_exists($file_path.$file_name)) {
        // Return the file name
        return false;
    }
    // Write the image
    fwrite($fp, $image);
    // Close
    fclose($fp);
    // Return the filename
    return $file_name;
}
function process() {
    global $LNG;
    // Prevents bypassing the FILTER_VALIDATE_EMAIL
    $this->email = htmlspecialchars($this->email, ENT_QUOTES, 'UTF-8');
    $arr = $this->validate_values(); // Must be stored in a variable before executing an empty condition
    if(empty($arr)) { // If there is no error message then execute the query;
        $this->query();
        // Set a session and log-in the user
        $_SESSION['username'] = $this->username;
        $_SESSION['password'] = md5($this->password);
        // Return (int) 1 if everything was validated
        return 1;
        // return $LNG['user_success'];
    } else { // If there is an error message
        foreach($arr as $err) {
            return notificationBox('error', $LNG["$err"], 1); // Return the error value for translation file
        }
    }   
}
function verify_if_user_exist() {
    $query = sprintf("SELECT `username` FROM `users` WHERE `username` = '%s'", $this->db->real_escape_string(mb_strtolower($this->username)));
    $result = $this->db->query($query);
    return ($result->num_rows == 0 && !in_array(mb_strtolower($this->username), array('playlists', 'subscribers', 'subscriptions', 'about', 'messages'))) ? 0 : 1;
}
function verify_accounts_per_ip() {
    if($this->accounts_per_ip) {
        $query = $this->db->query(sprintf("SELECT COUNT(`ip`) FROM `users` WHERE `ip` = '%s'", $this->db->real_escape_string(getUserIP())));
        $result = $query->fetch_row();
        if($result[0] < $this->accounts_per_ip) {
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }
}
function verify_if_email_exists($type = null) {
    // Type 0: Normal check
    // Type 1: Facebook check & return type
    if($type) {
        $query = sprintf("SELECT `username`, `password` FROM `users` WHERE `email` = '%s'", $this->db->real_escape_string(mb_strtolower($this->email)));
    } else {
        $query = sprintf("SELECT `email` FROM `users` WHERE `email` = '%s'", $this->db->real_escape_string(mb_strtolower($this->email)));
    }
    $result = $this->db->query($query);
    if($type) {
        return ($result->num_rows == 0) ? 0 : $result->fetch_assoc();
    } else {
        return ($result->num_rows == 0) ? 0 : 1;
    }
}
function verify_captcha() {
    if($this->captcha_on) {
        if($this->captcha == "{$_SESSION['captcha']}" && !empty($this->captcha)) {
            return true;
        } else {
            return false;
        }
    } else {
        return true;
    }
}
function validate_values() {
    // Create the array which contains the Language variable
    $error = array();
    // Define the Language variable for each type of error
    if($this->verify_accounts_per_ip() == false) {
        $error[] = 'user_limit';
    }
    if($this->verify_if_user_exist() !== 0) {
        $error[] = 'user_exists';
    }
    if($this->verify_if_email_exists() !== 0) {
        $error[] = 'email_exists';
    }
    if(empty($this->username) && empty($this->password) && empty($email)) {
        $error[] = 'all_fields';
    }
    if(strlen($this->password) < 6) {
        $error[] = 'password_too_short';
    }
    if(!ctype_alnum($this->username)) {
        $error[] = 'user_alnum';
    }
    if(strlen($this->username) <= 2 || strlen($this->username) >= 33) {
        $error[] = 'user_too_short';
    }
    if(!filter_var($this->email, FILTER_VALIDATE_EMAIL)) {
        $error[] = 'invalid_email';
    }
    if($this->verify_captcha() == false) {
        $error[] = 'invalid_captcha';
    }
    return $error;
}
function query() {
    $query = sprintf("INSERT into `users` (`username`, `password`, `first_name`, `last_name`, `email`, `date`, `image`, `cover`, `online`, `ip`, `notificationl`, `notificationc`, `notificationd`, `notificationf`, `email_comment`, `email_like`, `email_new_friend`) VALUES ('%s', '%s', '%s', '%s', '%s', '%s', '%s', 'default.png', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');", $this->db->real_escape_string(mb_strtolower($this->username)), md5($this->db->real_escape_string($this->password)), $this->db->real_escape_string($this->first_name), $this->db->real_escape_string($this->last_name), $this->db->real_escape_string($this->email), date("Y-m-d H:i:s"), ($this->profile_image ? $this->profile_image : 'default.png'), time(), $this->db->real_escape_string(getUserIp()), 1, 1, 1, 1, $this->email_comment, $this->email_like, $this->email_new_friend);
    $this->db->query($query);
}

}

READ ALSO
Как добавить свои custom классы?

Как добавить свои custom классы?

Привет есть такой код от WooCommerce

237
php вывод содержимого через if else

php вывод содержимого через if else

У меня проблемаМне нужно, чтобы записи отображались в категориях, кроме тех что я ввел

225
Unable to find template Symfony 3

Unable to find template Symfony 3

В общем, не знаю, что за ерунда: но создал бандл через консольЗахожу на страницу /app_dev

295