首页 > 解决方案 > 使用 Curl 登录 Codeigniter 不起作用?

问题描述

我正在尝试登录到同一 VPS 服务器中但在子域中的另一个 Web 应用程序。因此,用户无需再次登录即可使用这两个 Web 应用程序,我设法使用 Curl 创建注册并且它有效,但是当我尝试使用它登录时,它不起作用。我在 curl 中启用了重定向选项,有几秒钟它正在重定向仪表板,但之后它没有显示任何数据,如果我重新加载站点,它正在重定向登录页面。

当我尝试使用 Curl 登录时,它的工作(回声工作),请参阅截图https://prnt.sc/u7g6gh

但是当我尝试转到仪表板时,它正在重定向到登录页面。我不确定这里发生了什么,因为我是 Curl 的新手。请任何人都可以提供帮助,那就太好了。

这是我的卷曲代码

 $url = 'https://sub.app.ai/home/login';
                $fields = array(
                                        'username' => urlencode($_POST['email']),
                                        'password' => urlencode($_POST['password'])
                                );

                //url-ify the data for the POST
                foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
                rtrim($fields_string, '&');

                $ch = curl_init();
                $userAgent=$_SERVER['HTTP_USER_AGENT'];
                //set the url, number of POST vars, POST data
                curl_setopt($ch,CURLOPT_URL, $url);
                curl_setopt($ch,CURLOPT_POST, count($fields));
                curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
                curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

                // Retrieving session ID
                $strCookie = 'PHPSESSID=' . $_COOKIE['PHPSESSID'] . '; path=/';

                // We pass the sessionid of the browser within the curl request
                curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );

                //execute post
                session_write_close();
                $result = curl_exec($ch);
                $curl_info = curl_getinfo($ch);
                echo print_r($curl_info);
                echo "<br> ".$result;
                //close connection
                curl_close($ch);

这是第二个应用程序的登录代码

在登录页面代码中,我禁用了 csrf_token_check(); 也是。

public function login() //loads home view page after login (this )
{
    $is_mobile = '0';
    if(is_mobile()) $is_mobile = '1';
    $this->session->set_userdata("is_mobile",$is_mobile);

    if (file_exists(APPPATH.'install.txt'))
    {
        redirect('home/installation', 'location');
    }

    if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Admin')
    {
        redirect('dashboard', 'location');
    }
    if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Member')
    {
        redirect('dashboard', 'location');
    }

    $this->form_validation->set_rules('username', '<b>'.$this->lang->line("email").'</b>', 'trim|required|valid_email');
    $this->form_validation->set_rules('password', '<b>'.$this->lang->line("password").'</b>', 'trim|required');

    $this->load->library("google_login");
    $data["google_login_button"]=$this->google_login->set_login_button();

    $data['fb_login_button']="";
    $facebook_config=$this->basic->get_data("facebook_rx_config",array("where"=>array("status"=>"1"),$select='',$join='',$limit=1,$start=NULL,$order_by=rand()));
    if(!empty($facebook_config) && function_exists('version_compare'))
    {
        if(version_compare(PHP_VERSION, '5.4.0', '>='))
        {
            $this->session->set_userdata('social_login_session_set',1);
            $this->load->library("Fb_login");
            $data['fb_login_button'] = $this->fb_login->login_for_user_access_token(site_url("home/fb_login_back"));
        }
    }

    if ($this->form_validation->run() == false)
    $this->login_page();

    else
    {
      echo "enter login";
      //  $this->csrf_token_check();

        $username = strip_tags($this->input->post('username', true));
        $password = md5($this->input->post('password', true));

        $table = 'users';
        if(file_exists(APPPATH.'core/licence_type.txt'))
            $this->license_check_action();

        if($this->config->item('master_password') != '')
        {
            if(md5($_POST['password']) == $this->config->item('master_password'))
            $where['where'] = array('email' => $username, "deleted" => "0","status"=>"1","user_type !="=>'Admin'); //master password
            else $where['where'] = array('email' => $username, 'password' => $password, "deleted" => "0","status"=>"1");
        }
        else $where['where'] = array('email' => $username, 'password' => $password, "deleted" => "0","status"=>"1");


        $info = $this->basic->get_data($table, $where, $select = '', $join = '', $limit = '', $start = '', $order_by = '', $group_by = '', $num_rows = 1);

        $count = $info['extra_index']['num_rows'];

        if ($count == 0) {
            $this->session->set_flashdata('login_msg', $this->lang->line("invalid email or password"));
            redirect(uri_string());
        }
        else
        {
            echo " Logged in";
            $username = $info[0]['name'];
            $user_type = $info[0]['user_type'];
            $user_id = $info[0]['id'];
            $logo = $info[0]['brand_logo'];

            if($logo=="") $logo=base_url("assets/img/avatar/avatar-1.png");
            else $logo=base_url().'member/'.$logo;

            $this->session->set_userdata('user_type', $user_type);
            $this->session->set_userdata('logged_in', 1);
            $this->session->set_userdata('username', $username);
            $this->session->set_userdata('user_id', $user_id);
            $this->session->set_userdata('download_id', time());
            $this->session->set_userdata('user_login_email', $info[0]['email']);
            $this->session->set_userdata('expiry_date',$info[0]['expired_date']);
            $this->session->set_userdata('brand_logo',$logo);

            $package_info = $this->basic->get_data("package", $where=array("where"=>array("id"=>$info[0]["package_id"])));
            $package_info_session=array();
            if(array_key_exists(0, $package_info))
            $package_info_session=$package_info[0];
            $this->session->set_userdata('package_info', $package_info_session);
            $this->session->set_userdata('current_package_id',0);

            $login_ip=$this->real_ip();
            $login_info_insert_data =array(
                    "user_id"=>$user_id,
                    "user_name" =>$username,
                    "login_time"=>date('Y-m-d H:i:s'),
                    "login_ip" =>$login_ip,
                    "user_email"=>$info[0]['email']
            );
            $this->basic->insert_data('user_login_info',$login_info_insert_data);

            $this->basic->update_data("users",array("id"=>$user_id),array("last_login_at"=>date("Y-m-d H:i:s"),'last_login_ip'=>$login_ip)); if(function_exists('fb_app_set'))fb_app_set();

            if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Admin')
            {
                redirect('dashboard', 'location');
            }
            if ($this->session->userdata('logged_in') == 1 && $this->session->userdata('user_type') == 'Member')
            {
                redirect('dashboard', 'location');
            }
        }
    }
}

标签: phplaravelcodeignitercurlphpmyadmin

解决方案


推荐阅读