如何在codeigniter中使url / username?

我目前正在使用codeigniter。我目前可以通过使用查看个人资料,/user/profile/profile_id但我想创建它,以便用户可以使用/username导航到个人资料以使其更简单。

我不确定从哪里开始该怎么做?

class User extends CI_Controller{  

public function index(){

    if($this->session->userdata('is_logged_in')){
        redirect('user/profile');
    }

}

public function profile(){

    $profile_id = $this->uri->segment(3);
    $ip = $this->session->userdata('ip_address');
    $curr_user = $this->session->userdata('id');

    $data['profile'] = $this->db->get_where('users', array('id' => $profile_id))->row_array();  
    $data['followers'] = $this->db->get_where('followers', array('following_id' => $profile_id))->num_rows();       
    $data['following'] = $this->db->get_where('followers', array('follower_id' => $profile_id))->num_rows();
    $data['doesFollow'] = $this->db->get_where('followers', array('follower_id' => $curr_user, 'following_id' => $profile_id))->num_rows();
    $data['posts'] = $this->db->get_where('posts', array('user_id' => $profile_id))->result_array();        

    $data['main_content'] = 'profile';  
    $this->load->view('template', $data);   

    $this->get_profile_view($profile_id, $ip, $curr_user);  

}

} 

routes.php

$route['default_controller'] = "signin";
$route['404_override'] = '';
彼得·帕特拉斯克(Petre Patrasc)

我认为您要实现的功能如下:

  1. 如果用户导航到http://example.com/(route)并且路由是由控制器映射的,则显示该控制器。
  2. 如果用户导航到http://example.com/(route)并且路由未由任何控制器映射,则该路由很可能是用户名,因此:
    1. 如果路线是用户名,请显示该人的路线。
    2. 如果路由不是用户名,则显示404页面。

因此,这里的计划是创建一个自定义的404处理程序,以检查提供的路由是否为用户名,否则将显示404页面。

我们需要做的第一件事是设置自定义404控制器:

$route['404_override'] = 'profile';

然后,我们创建我们的自定义404控制器:

class Profile extends CI_Controller {
    public function __construct() {
            parent::__construct(); 
    }

    public function index()
    {
        $username = $this->uri_segment(1);

        if (empty($username)) {
            $this->displayPageNotFound();
        }

        $this->load->model('muser');

        // Check if parameter is not a valid username.
        if (!$this->muser->checkIfUsername($username)) {
            $this->displayPageNotFound();
        } else {
            // Load data for user profile.
            $ip = $this->session->userdata('ip_address');
            $curr_user = $this->session->userdata('id');

            $data['profile'] = $this->db->get_where('users', array('id' => $profile_id))->row_array();  
            $data['followers'] = $this->db->get_where('followers', array('following_id' => $profile_id))->num_rows();       
            $data['following'] = $this->db->get_where('followers', array('follower_id' => $profile_id))->num_rows();
            $data['doesFollow'] = $this->db->get_where('followers', array('follower_id' => $curr_user, 'following_id' => $profile_id))->num_rows();
            $data['posts'] = $this->db->get_where('posts', array('user_id' => $profile_id))->result_array();        

            $data['main_content'] = 'profile';  
            $this->load->view('template', $data);   

            $this->get_profile_view($profile_id, $ip, $curr_user);  
        }
    }

    protected function displayPageNotFound() {
        $this->output->set_status_header('404');
        $this->load->view('page_not_found');
    }
}

剩下要实现的就是带有checkIfUsername()方法的muser模型。让我知道您是否需要更多信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使 url 像 username.example.com

如何在 VBScript 中获取 %username%?

如何重定向到instagram:// user?username = {username}

在R中使用Regex获取Twitter @Username

如何使用 python 移动文件,在目标路径中使用 %username%

获取以 username:password@ 为前缀的 url

Django-如何实现example.com/username url系统

如何:sudo -u <username> 在 sudoer 中?

如何获取对API进行调用的用户的UserName?

socket.to(username).emit('eventName',{})如何工作?

如何在/ media / username / mountpoint挂载EncFS卷?

如何在终端而不是username @ hostname中显示时间?

如何在Ubuntu中更改username @之后的文本

如何在 Ansible 中运行 sudo -u username 命令?

如何在 GraphQL 中通过 userName 获取用户?

如何在 Spring JPA 存储库中的删除 @Query 中使用 ?#{principal.username} 时修复语法错误?

使用 apache2 @username 将 URL 重写为 /user/username

我如何在 ubuntu 服务器上将我的终端从 username@server 更改为 username@client

如何使用 PHP PDO 从数据库中检查 $username 到 UserName

如何在Symfony中为example.com/username创建路由并保留所有旧URL

在全局目录中使用DirectorySearcher查找DOMAIN \ username

将路由URL从随机的:id更改为Rails中的:username

如何通过userName而不是userId添加keyCloak用户角色

登录后如何管理j_username值?

如何自定义CreateUserWizard以获取UserId和UserName值?

如何以非交互方式运行“sudo passwd username”

如何获取git repo中<username>应用的最早的更改?

如何找到Oracle APEX工作空间名称和USERNAME?

如何允许对/ home / username下目录的直接写访问?