普通网友 2019-02-18 18:53
浏览 70

如何添加facebook登录?

I need help with inserting the data into the database what should I do? please help me

Here is my login page code

<?php
class Account {

    private $con;
    private $errorArray = array();

    public function __construct($con) {
        $this->con = $con;
    }

    public function login($un, $pw) {
        $pw = hash("sha512", $pw);

        $query = $this->con->prepare("SELECT * FROM users WHERE username=:un AND password=:pw");
        $query->bindParam(":un", $un);
        $query->bindParam(":pw", $pw);

        $query->execute();

        if($query->rowCount() == 1) {
            return true;
        }
        else {
            array_push($this->errorArray, Constants::$loginFailed);
            return false;
        }
    }

    public function register($fn, $ln, $un, $em, $em2, $pw, $pw2) {
        $this->validateFirstName($fn);
        $this->validateLastName($ln);
        $this->validateUsername($un);
        $this->validateEmails($em, $em2);
        $this->validatePasswords($pw, $pw2);

        if(empty($this->errorArray)) {
            return $this->insertUserDetails($fn, $ln, $un, $em, $pw);
        }
        else {
            return false;
        }
    }

    public function updateDetails($fn, $ln, $em, $un) {
        $this->validateFirstName($fn);
        $this->validateLastName($ln);
        $this->validateNewEmail($em, $un);

        if(empty($this->errorArray)) {
            $query = $this->con->prepare("UPDATE users SET firstName=:fn, lastName=:ln, email=:em WHERE username=:un");
            $query->bindParam(":fn", $fn);
            $query->bindParam(":ln", $ln);
            $query->bindParam(":em", $em);
            $query->bindParam(":un", $un);

            return $query->execute();
        }
        else {
            return false;
        }
    }

    public function updatePassword($oldPw, $pw, $pw2, $un) {
        $this->validateOldPassword($oldPw, $un);
        $this->validatePasswords($pw, $pw2);

        if(empty($this->errorArray)) {
            $query = $this->con->prepare("UPDATE users SET password=:pw WHERE username=:un");
            $pw = hash("sha512", $pw);
            $query->bindParam(":pw", $pw);
            $query->bindParam(":un", $un);

            return $query->execute();
        }
        else {
            return false;
        }
    }

    private function validateOldPassword($oldPw, $un) {
        $pw = hash("sha512", $oldPw);

        $query = $this->con->prepare("SELECT * FROM users WHERE username=:un AND password=:pw");
        $query->bindParam(":un", $un);
        $query->bindParam(":pw", $pw);

        $query->execute();

        if($query->rowCount() == 0) {
            array_push($this->errorArray, Constants::$passwordIncorrect);
        }
    }

    public function insertUserDetails($fn, $ln, $un, $em, $pw) {

        $pw = hash("sha512", $pw);
        $profilePic = "assets/images/profilePictures/default.png";

        $query = $this->con->prepare("INSERT INTO users (firstName, lastName, username, email, password, profilePic)
                                        VALUES(:fn, :ln, :un, :em, :pw, :pic)");

        $query->bindParam(":fn", $fn);
        $query->bindParam(":ln", $ln);
        $query->bindParam(":un", $un);
        $query->bindParam(":em", $em);
        $query->bindParam(":pw", $pw);
        $query->bindParam(":pic", $profilePic);

        return $query->execute();
    }

    private function validateFirstName($fn) {
        if(strlen($fn) > 25 || strlen($fn) < 2) {
            array_push($this->errorArray, Constants::$firstNameCharacters);
        }
    }

    private function validateLastName($ln) {
        if(strlen($ln) > 25 || strlen($ln) < 2) {
            array_push($this->errorArray, Constants::$lastNameCharacters);
        }
    }

    private function validateUsername($un) {
        if(strlen($un) > 25 || strlen($un) < 5) {
            array_push($this->errorArray, Constants::$usernameCharacters);
            return;
        }

        $query = $this->con->prepare("SELECT username FROM users WHERE username=:un");
        $query->bindParam(":un", $un);
        $query->execute();

        if($query->rowCount() != 0) {
            array_push($this->errorArray, Constants::$usernameTaken);
        }

    }

    private function validateEmails($em, $em2) {
        if($em != $em2) {
            array_push($this->errorArray, Constants::$emailsDoNotMatch);
            return;
        }

        if(!filter_var($em, FILTER_VALIDATE_EMAIL)) {
            array_push($this->errorArray, Constants::$emailInvalid);
            return;
        }

        $query = $this->con->prepare("SELECT email FROM users WHERE email=:em");
        $query->bindParam(":em", $em);
        $query->execute();

        if($query->rowCount() != 0) {
            array_push($this->errorArray, Constants::$emailTaken);
        }

    }

    private function validateNewEmail($em, $un) {

        if(!filter_var($em, FILTER_VALIDATE_EMAIL)) {
            array_push($this->errorArray, Constants::$emailInvalid);
            return;
        }

        $query = $this->con->prepare("SELECT email FROM users WHERE email=:em AND username != :un");
        $query->bindParam(":em", $em);
        $query->bindParam(":un", $un);
        $query->execute();

        if($query->rowCount() != 0) {
            array_push($this->errorArray, Constants::$emailTaken);
        }

    }

    private function validatePasswords($pw, $pw2) {
        if($pw != $pw2) {
            array_push($this->errorArray, Constants::$passwordsDoNotMatch);
            return;
        }

        if(preg_match("/[^A-Za-z0-9]/", $pw)) {
            array_push($this->errorArray, Constants::$passwordNotAlphanumeric);
            return;
        }

        if(strlen($pw) > 30 || strlen($pw) < 5) {
            array_push($this->errorArray, Constants::$passwordLength);
        }
    }

    public function getError($error) {
        if(in_array($error, $this->errorArray)) {
            return "<span class='errorMessage'>$error</span>";
        }
    }

    public function getFirstError() {
        if(!empty($this->errorArray)) {
            return $this->errorArray[0];
        }
        else {
            return "";
        }
    }

}
?>

Here is my authO login script how would I add this to my sign up page? I really need to know how I will appreciate if you have an answer thans so much! Is there anyway you insert into the same table as my sign up page?

    public function userDetails($user_session) {
        $db = getDB();
        $query = $db->prepare("SELECT * FROM users WHERE  id=:session_id");
        $query->bindParam("session_id", $user_session,PDO::PARAM_INT) ;
        $query->execute();
        $data = $query->fetch(PDO::FETCH_OBJ);
        $db = null;
        return $data;
    }

    public function userSignup($userData,$loginProvider) {

        $first_name='';
        $last_name='';
        $gender='';
        $birthday='';
        $location= '';
        $hometown='';
        $bio='';
        $relationship='';
        $timezone='';
        $picture='';
        $blog='';

        if($loginProvider == 'microsoft') {
          $email=$userData->emails->account;
        } else {
          $email=$userData->email;
        }
        $emain_check = preg_match('~^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.([a-zA-Z]{2,4})$~i', $email);
        //Email Check
        if(strlen(trim($email))>0 && $emain_check>0) {
            $provider_id=$userData->id;
            // Common for facebook and git
            if($loginProvider == 'linkedin') {
                $name=$userData->firstName.' '.$userData->lastName;
            } else {
                $name=$userData->name;
            }
            if($loginProvider == 'facebook') {
                $first_name=$userData->first_name;
                $last_name=$userData->last_name;
                $gender=$userData->gender;
                $timezone=$userData->timezone;
                $picture='https://graph.facebook.com/'.$provider_id.'/picture?type=large';
            } else if($loginProvider == 'microsoft') {
                $first_name=$userData->first_name;
                $last_name=$userData->last_name;
                if($userData->birth_month)
                $birthday=$userData->birth_month.'/'.$userData->birth_day.'/'.$userData->birth_year;
            } else if ($loginProvider == 'google') {
                $first_name=$userData->given_name;
                $last_name=$userData->family_name;
                $gender=$userData->gender;
                $timezone=$userData->timezone;
                $picture=$userData->picture;
            } else if($loginProvider == 'github') {
                $picture=$userData->avatar_url;
                $blog=$userData->blog;
                $bio=$userData->bio;
            } else if($loginProvider == 'linkedin') {
                $first_name=$userData->firstName;
                $last_name=$userData->lastName;
            }

            $db = getDB();

            $sql = $db->prepare("SELECT id,provider FROM users WHERE  email=:email");
            $sql->bindParam("email", $email,PDO::PARAM_STR) ;
            $sql->execute();
            // User check with email
            if($sql->rowCount() == 0){
                $query = $db->prepare("INSERT INTO users
                (email, name, first_name, last_name, gender, birthday, location,
                hometown, bio, relationship, timezone, provider, provider_id,picture)
                VALUES (:email, :name, :first_name, :last_name, :gender, :birthday, :location, :hometown,
                :bio, :relationship,:timezone, :provider , :provider_id, :picture)");
                $query->bindParam("name", $name ,PDO::PARAM_STR) ;
                $query->bindParam("first_name", $first_name ,PDO::PARAM_STR) ;
                $query->bindParam("last_name", $last_name ,PDO::PARAM_STR) ;
                $query->bindParam("email", $email ,PDO::PARAM_STR) ;
                $query->bindParam("gender", $gender ,PDO::PARAM_STR) ;
                $query->bindParam("birthday", $birthday ,PDO::PARAM_STR) ;
                $query->bindParam("location", $location ,PDO::PARAM_STR) ;
                $query->bindParam("hometown", $hometown ,PDO::PARAM_STR) ;
                $query->bindParam("bio", $bio ,PDO::PARAM_STR) ;
                $query->bindParam("relationship", $relationship ,PDO::PARAM_STR) ;
                $query->bindParam("timezone", $timezone ,PDO::PARAM_STR) ;
                $query->bindParam("provider_id", $provider_id ,PDO::PARAM_STR) ;
                $query->bindParam("provider", $loginProvider ,PDO::PARAM_STR) ;
                $query->bindParam("picture", $picture ,PDO::PARAM_STR) ;
                $query->execute();
            } else {
                $row= $sql->fetch(PDO::FETCH_OBJ);
                $provider=$row->provider;
                $id=$row->id;

            if($provider != $loginProvider) {
              if(strlen($first_name)){
                $query = $db->prepare(" UPDATE users SET first_name =:first_name WHERE id=:id ");
                $query->bindParam("first_name", $first_name ,PDO::PARAM_STR) ;
                $query->bindParam("id", $id ,PDO::PARAM_STR) ;
                $query->execute();
              }
            if(strlen($last_name)){
                $query = $db->prepare(" UPDATE users SET last_name =:last_name WHERE id=:id ");
                $query->bindParam("last_name", $last_name ,PDO::PARAM_STR) ;
                $query->bindParam("id", $id ,PDO::PARAM_STR) ;
                $query->execute();
            }
            if(strlen($gender)){
                $query = $db->prepare(" UPDATE users SET gender =:gender WHERE id=:id ");
                $query->bindParam("gender", $gender ,PDO::PARAM_STR) ;
                $query->bindParam("id", $id ,PDO::PARAM_STR) ;
                $query->execute();
            }
            if(strlen($location)){
                $query = $db->prepare(" UPDATE users SET location =:location WHERE id=:id ");
                $query->bindParam("location", $location ,PDO::PARAM_STR) ;
                $query->bindParam("id", $id ,PDO::PARAM_STR) ;
                $query->execute();
            }

            if(strlen($birthday)){
                $query = $db->prepare(" UPDATE users SET birthday =:birthday WHERE id=:id ");
                $query->bindParam("birthday", $birthday ,PDO::PARAM_STR) ;
                $query->bindParam("id", $id ,PDO::PARAM_STR) ;
                $query->execute();
            }
            if(strlen($picture)){
                $query = $db->prepare(" UPDATE users SET picture =:picture WHERE id=:id ");
                $query->bindParam("picture", $picture ,PDO::PARAM_STR) ;
                $query->bindParam("id", $id ,PDO::PARAM_STR) ;
                $query->execute();
            }
            $query = $db->prepare(" UPDATE users SET provider_id =:provider_id, provider =:provider WHERE id=:id ");
            $query->bindParam("provider_id", $provider_id ,PDO::PARAM_STR) ;
            $query->bindParam("provider", $loginProvider ,PDO::PARAM_STR) ;
            $query->bindParam("id", $id ,PDO::PARAM_STR) ;
            $query->execute();

            }
            }

            $success_query = $db->prepare("SELECT * FROM users WHERE  email=:email");
            $success_query->bindParam("email", $email ,PDO::PARAM_STR) ;
            $success_query->execute();
            $data = $success_query->fetch(PDO::FETCH_OBJ);
            $db = null;
            return $data;   
        }   
    }
}
?>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 截图中的mathematics程序转换成matlab
    • ¥15 动力学代码报错,维度不匹配
    • ¥15 Power query添加列问题
    • ¥50 Kubernetes&Fission&Eleasticsearch
    • ¥15 報錯:Person is not mapped,如何解決?
    • ¥15 c++头文件不能识别CDialog