Php 如何在CodeIgniter中将用户id附加到url?
我正在我的社交网络上创建用户模块。我正在尝试将其设置为如果您登录并查看自己的个人资料,您就是Php 如何在CodeIgniter中将用户id附加到url?,php,codeigniter,codeigniter-routing,Php,Codeigniter,Codeigniter Routing,我正在我的社交网络上创建用户模块。我正在尝试将其设置为如果您登录并查看自己的个人资料,您就是$user['id']如果您登录并查看其他人的个人资料,您就是$prof['id']我已经开始完成 然而,我对codeigniter和php都是新手,我试图弄清楚如何将用户id附加到url的末尾,这样我的系统就可以检查它是$user['id']还是$prof['id'] 控制器: public function profile() { $data['profile_icon']
$user['id']
如果您登录并查看其他人的个人资料,您就是$prof['id']代码>我已经开始完成
然而,我对codeigniter和php都是新手,我试图弄清楚如何将用户id附加到url的末尾,这样我的系统就可以检查它是$user['id'
]还是$prof['id']
控制器:
public function profile()
{
$data['profile_icon'] = 'profile';
$data['main_content'] = 'account/profile';
$this->load->view('includes/templates/profile_template', $data);
$this->load->helper('date');
$this->load->library('session');
$session_id = $this->session->userdata['id'];
//USER ID LOOKING AT OWN PROFILE
$this->load->model('account_model');
$user = $this->account_model->user();
$data['user'] = $user;
//PROF ID LOOKING AT SOMEONE ELSE'S PROFILE
$this->load->model('account_model');
$prof = $this->account_model->prof();
$data_prof['prof'] = $prof;
if($session_id != $user['id'])
{
echo $prof['id'];
echo "<br />";
// FOR TESTING PURPOSES
echo "other user";
}
elseif($session_id == $user['id'])
{
echo $user['id'];
echo "<br />";
// FOR TESTING PURPOSES
echo "hey it's me ";
}
}
提前谢谢
***编辑//尝试将id附加到url
$this->load->view('includes/templates/profile_template', $data);
$this->load->helper('date');
$this->load->library('session');
$session_id = $this->session->userdata['id'];
$this->load->model('account_model');
//USER ID LOOKING AT OWN PROFILE
$data_user['user'] = $this->account_model->user();
$user['id'] = $this->uri->segment(3);
echo $user['id'];
$data['profile_icon'] = 'profile';
$data['main_content'] = 'account/profile/'.$user['id'];
***为管线编辑
route['default_controller'] = "home";
$route['404_override'] = '';
$route['profile/:num'] = "auth/profiles";
//控制器
public function profile()
{
$this->load->helper('date');
$this->load->library('session');
$session_id = $this->session->userdata['id'];
$this->load->model('account_model');
$user = $this->account_model->user();
$data['user'] = $user;
$user['id'] = $this->uri->segment(4);
$data['profile_icon'] = 'profile';
$data['main_content'] = 'account/profile/'.$user['id'];
$this->load->view('includes/templates/profile_template', $data);
}
首先,我不认为有必要像那样切换ID,老实说,这没有实际意义。如果您正在查看一个配置文件,那么您可以通过用户ID进行查看,而不管它是您的配置文件还是其他人的配置文件。如果希望能够编辑配置文件页面,只需检查配置文件的用户标识是否与会话用户标识匹配即可
例如,在您的视图中,可以有一个链接:
<?php
if($user['userId']==$this->session->userdata('userId'))
{
echo '<a href="users/edit_user/'.$user['userId'].'">Edit my profile</a>';
}
了解uri段。
我认为有时人们会对URI段感到困惑。你的基本url是0,你从那里开始计数。它在实际URL结构中的位置并不重要,只要您记住基本URL始终为0。例如,如果您的基本URL是www.example.com/hello/world,那么uri段1位于world NOT.com之后
你也做了很多初学者的事情,说实话,我不知道为什么我总是看到教程向人们展示
$prof = $this->account_model->prof();
$data_prof['prof'] = $prof;
为什么不这样做呢?设置变量的目的是什么?设置变量:
$data_prof['prof'] = $this->account_model->prof();
此外,在您的用户查询中,将限制去掉。这将确保即使您的查询匹配多个结果,也只能得到一个结果,您应该确保不能有多个用户在任何时候都具有相同的ID。显然,在查询排序中使用相同的ID会破坏if num rows语句的目的。无论发生什么情况,都会得到1或0。基本上两者都是相同的,因此您只需使用if语句添加缺少的数据,而不是像现在这样做。无论如何,codeigniter的会话使用普通大括号()而不是[]$user['id']和$prof['id']完全不是由会话助手创建的。非常感谢。这是一个极好的答案,也是我一直在寻找的!我刚刚发现这篇有用的文章,我想我一定是应用了错误的逻辑,因为我无法加载请求的文件:。php错误代码:请参阅编辑******您能显示您的URL结构吗?有可能你没有抓住正确的部分。您可以尝试回显uri段是什么,以确保。在基本URL之后开始计数。因此,如果你的url是example.com/profile/25,25是你想要的ID,那么这个段是2,我刚才用了3作为例子,我应该放一个相应的url来告诉你它是如何工作的。我相信index.php算作一个段,试试4。老实说,在每个新项目中,我都会从URL中删除index.php,所以我从来没有处理过这个问题。
$userId = $this->uri->segment(3);
$prof = $this->account_model->prof();
$data_prof['prof'] = $prof;
$data_prof['prof'] = $this->account_model->prof();