是否有PHP based可用于开源,基于角色的访问控制系统CodeIgniter?
在codeigniter中,如您所知,表单的页面:/class/function/ID,其中class是控制器名称,function是控制器中的方法,ID是传递给该方法的参数.
典型的用法是(例如对于书籍网站)将书籍ID传递给函数,该函数然后将查询数据库以获得适当的书籍.我的问题是:我正在乱搞并且随机(在url字符串中)键入数据库中不存在的ID(通常点和点击浏览这种情况永远不会发生)并且由于剩余查询而导致数据库错误我尝试使用不存在的ID执行.
我已经编写了代码来检查在尝试使用ID之前是否有任何行返回,但如果ID不存在,我希望用户获得404错误页面而不是空白页面(因为这看起来像适当的功能).这需要是一个真正的404页面(不只是加载看起来像404页面的视图),以免搞砸搜索引擎.好的 - 所以我的问题是:在正常的程序逻辑流程中(如上所述)如何使用codeigniter强制404错误?谢谢.
更新:代码点火器有一个show_404('page')功能,但我认为这不会产生真正的HTTP 404错误...
我是codeigniter的新手,我正在尝试将亚马逊的FPS整合到我的页面中.有一堆库和模型与亚马逊FPS一起使用,我需要将其包括在内以进行适当的调用.
如何将它们包含在CodeIgniter中?
我尝试将整个Amazon文件夹放在system/libraries目录中,然后尝试将库包含在$ this-> load-> library('Amazon/FPS/Client')中; 但是,我遇到了相对路径的问题,因为Client.php包含语句require_once('Amazon/FPS/Interface.php'); ...在同一个文件夹中.
必须有一个更好的方法来做这一切 - 任何人都可以帮助吗?
谢谢!!
我正在寻找一条单行路由,将虚线控制器和方法名称路由到实际的下划线控制器和方法名称.
例如URL
/controller-name/method-name-which-is-long/
Run Code Online (Sandbox Code Playgroud)
会路由到
/controller_name/method_name_which_is_long/
Run Code Online (Sandbox Code Playgroud)
请参阅:http://codeigniter.com/forums/viewreply/696690/这给了我一个问题:)
发布一个名为'id'和'url'的两个字段的表单后,我有以下代码:
$this->load->library('form_validation');
$this->form_validation->set_rules('id', 'id', 'trim|xss_clean');
$this->form_validation->set_rules('url', 'url|id', 'trim|xss_clean|callback_url_check');
Run Code Online (Sandbox Code Playgroud)
db查询需要两个字段.
函数url_check($ str,$ id)被调用,但在这种情况下,'id'的值始终为0.
如果我这样做:
$this->form_validation->set_rules('url', 'url', 'trim|xss_clean|callback_url_check');
Run Code Online (Sandbox Code Playgroud)
并呼吁url_check($str)一切正常,因为它应该做.
问题是如何将两个值传递给url_check($str, $id)?
当php.ini中的date.timezone被注释掉时,它给了我:
遇到PHP错误
严重性:警告
消息:main():依赖系统的时区设置是不安全的.您需要使用date.timezone设置或date_default_timezone_set()函数.如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符.我们选择'America/Los_Angeles'作为'-8.0/no DST'
文件名:controllers/helloworld.php
行号:2
当我有
date.timezone = "America/Los_Angeles"
Run Code Online (Sandbox Code Playgroud)
它给了我这个:
服务器错误网站在检索http://localhost/ci/index.php/helloworld时遇到错误 .它可能已关闭以进行维护或配置不正确.以下是一些建议:稍后重新加载此网页.HTTP错误500(内部服务器错误):服务器尝试完成请求时遇到意外情况.
我使用的是php5.3,代码点火器2.0.0和Apache2.2.任何人都有这个问题吗?
更新1:我尝试加载没有代码点火器的test.php,其中test.php的前3行是
date_default_timezone_set('America/Los_Angeles');
echo date("l j \of F Y h:i:s A");
Run Code Online (Sandbox Code Playgroud)
它工作正常,不同的时区也可以正常工作.所以我怀疑问题来自代码点火器......任何人在这里使用代码点火器?
我正在尝试在我的应用程序中构建一个身份验证系统,但我在决定哪些是我能在CodeIgniter中实现我想要的最佳方式时遇到了一些问题.
该网站允许公司管理他们的建筑物.公司可以拥有许多建筑物和许多用户(当我说用户时我指的是该公司的员工).
在这个网站上我想要两个(基本上)四种普通用户.
所以,尽管我已经在CodeIgniter上看到了很多认证库,但是听到有关如何设计这个"基于身份验证角色"系统的任何建议会很高兴,如果你特别推荐一个可以帮助实现这个目标的库.
欣赏!
我试图使用Codeigniter和Active Records在MySQL表中插入几行.
PHP代码
$data = array('......'); // some rows of data to insert
$this->db->insert_batch('my_table', $data);
Run Code Online (Sandbox Code Playgroud)
但是,这可能会导致重复的行插入表中.为了处理重复数据的插入,我打算使用该INSERT IGNORE命令在行重复时不插入行.
问题:我找不到INSERT IGNOREActive Records中的等效项,也不想编辑Active Record类.还有其他选择吗?
以下看起来很有趣,但是如果我执行以下操作,那么查询不会运行两次吗?
$insert_query = $this->db->insert_batch('my_table', $data); // QUERY RUNS ONCE
$insert_query = str_replace('INSERT INTO','INSERT IGNORE INTO',$insert_query);
$this->db->query($insert_query); // QUERY RUNS A SECOND TIME
Run Code Online (Sandbox Code Playgroud) 我有3个mysql表.
Table 1 user
id | name
Table 2 emails
id | email
Table 3 user_email
user_id | email_id
Run Code Online (Sandbox Code Playgroud)
我没有查询多表的经验.
使用codeigniter活动记录,我想根据用户ID找出用户的电子邮件地址,请告知以下代码是否正确?
$CI->db->select('email');
$CI->db->from('emails');
$CI->db->where('id', $userid);
$CI->db->join('user_email', 'user_email.user_id = emails.id', 'left');
$query = $CI->db->get();
Run Code Online (Sandbox Code Playgroud) 是否可以在CodeIgniter中执行活动记录查询,如果现有记录已经存在,则更新现有记录,如果不存在则为给定密钥插入?
我知道这可以通过首先查询找到现有记录来完成,但我正在寻求最有效的方法.
codeigniter ×10
php ×7
activerecord ×2
callback ×1
datetime ×1
left-join ×1
mysql ×1
parameters ×1
regex ×1
routes ×1