我正在尝试为我的Codeigniter应用程序编写一个钩子.
我想抓住session我的hook.
这是加载钩子的代码:
$hook['pre_controller'] = array(
'function' => 'getNav',
'filename' => 'LoadNav.php',
'filepath' => 'hooks'
);
Run Code Online (Sandbox Code Playgroud)
这是我试图在钩子中加载的代码:
function getNav()
{
$CI =& get_instance();
$level = $CI->session->userdata('level');
}
Run Code Online (Sandbox Code Playgroud)
它不断抛出以下错误:
A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: hooks/LoadNav.php
Line Number: 7
Run Code Online (Sandbox Code Playgroud)
我知道我做错了什么?似乎get_instance方法无法正常运行?
任何帮助将不胜感激,谢谢
阿兰
我坚持使用CodeIgniter使用$ _GET变量,有人可以帮我吗?
在我的一个网站上,我在一个页面上有两个表单,我遇到了问题,validation_errors();基本上发生了什么,是我检查错误的一种表单,如果有任何错误,我正在做一些样式来转标签为红色,其他形式如何只显示错误使用echo validation_errors();.当我提交不显示错误的表单时,只是错误样式验证错误显示在表单中.我怎么能阻止这个?
我正在尝试使用Phil Sturgeon的CodeIgniter模板库,但我不能让它改变我的页面.我阅读了文档,按照那里的步骤,
- 下载
- 复制到
application文件夹- 创建一个
views/layouts/default视图- (自动)加载库
但是,目前还不清楚模板是如何实际实现的.我认为加载视图会在任何地方应用模板,但它似乎不会那样工作.我也在CodeIgniter Wiki中阅读过它,但它看起来太复杂了,不能成为正确的答案.
您如何将Phil Sturgeon的模板与您的控制器一起使用?(或观点?)我在这里遗漏了什么?
基本上我正在尝试使用本地化子域创建一个codeigniter应用程序,如果我访问:
ca.site.com - >它将运行相同的系统但显示加拿大内容.us.site.com - >仍然运行相同的系统,但显示美国内容.
加上如果我访问www.site.com,它将使用ip2country自动获得正确的本地化,并将被重定向,如果从英国,redir到uk.site.com
只有1个系统文件夹和1个应用程序文件夹:
root/system/application index.php
现在我希望网址能够从他们所在的本地化中保留.喜欢:
uk.site.com/profile/1将访问配置文件控制器ca.site.com/profile/3也将访问uk.site.com使用的同一控制器
我将如何实现这一目标?
请原谅我,如果我的询问有点粗糙.但我希望有人可以帮助我.
更新:
我添加了像Berdir这样的CSRF保护,借助下面的链接让我的应用程序再次运行.但是..我不太清楚我现在做了什么:D这怎么能让我的应用程序更安全?我特别感到困扰的是,我现在在我的ajax代码中获得了一个cookie值,因为我必须通过我的ajax调用传递它...否则它只是不起作用.这不会泄露一些关于cookie的重要信息吗?或者我只是偏执狂.谢谢!
http://aymsystems.com/ajax-csrf-protection-codeigniter-20
//老嗨
在我正在构建的这个Web应用程序中,我有一个功能可以添加关于某些主题的"提示和技巧".这些页面只能由具有admin角色的帐户添加.但是,我也希望能够删除这些页面.(总是很方便,对吧).因为我正在使用CodeIgniter,所以我只想创建一个带有ID的控制器函数,并将此ID传递给模型,在该模型中,与该ID相对应的页面将从数据库中删除.
只是为了说清楚:
控制器:
public function del_content($id)
{
$this->content_model->del_content($id)
}
Run Code Online (Sandbox Code Playgroud)
模型:
public function del_content($id)
{
// database code which I can't be bothered to look up now
// something like $this->db->where(), $this->db->delete()
}
Run Code Online (Sandbox Code Playgroud)
这一切都很简单,但我很害怕它可能太简单了.这对我来说真的不太安全哦,是吗?由于您可以从浏览器中的URL地址栏调用该函数,因此您基本上可以删除整个内容表.(因为你要http://mywebsite/controller/del_content/3为ID为3的项目做).当然,只有管理员帐户才能访问该功能,但仍然...
我以前从来没有编过这样的事情,因此从来没有考虑过我应该采取的安全措施.有人会善意地给我一些我应该留意的事情,也许还有一些关于如何使这更安全的想法,建议?
非常感谢!
我写了一个名字CMS(大写字母)的控制器.当我调用链接http:// localhost/CI/testing/admin/cms/insert时,它没有问题.它在localhost中运行良好.
将该页面上传到服务器后,当我执行语句http://dev.test.in/testing/admin/cms/insert时,它不会显示该页面.但是当我将URL更改为http://dev.test.in/testing/admin/CMS/insert时,它处于工作状态.
为了解决这个问题,我必须将控制器名称更改为cms(小写字母)或将所有锚定URL更改为CMS.有没有其他解决方案来解决这个问题.喜欢写htaccess文件?
嘿人 我看到这个主题在SO上一遍又一遍地重复,但我尝试了几个解决方案,但这些解决方案都没有为我工作.基本上 - 我知道如何更改我网站上的特定页面,以便它们处于https模式.但是,我不知道如何重写代码中的http请求.例如,如果我的页面,例如payment.php,包含加载外部ccs文件的链接 - > http://example.com/somecss.css,那么google chrome会将其视为危险链接并显示交叉红色站点网址旁边的挂锁.现在,我已经通过将代码中的所有http请求更改为https来手动测试它,并且挂锁神奇地变为绿色所以我想我需要某种mod重写规则来重写那些特定页面上的所有链接以便它们能够包含https.我希望我解释得很好.谁能帮我?我正在使用codeigniter.
我还在试图想办法让移动网站运行起来.我在CodeIgniter中有一个Web应用程序,我想创建它的移动版本.但是,我不想重写太多的代码,特别是我的模型.(因为它们返回我可以在任何地方使用的原始数据.)
我想在子域(m.mydomain.tld)上运行我的移动网站.桌面版本运行于www.mydomain.tld.我尝试将子域指向我的CI应用程序文件夹; 当移动浏览器到达时www.mydomain.tld,我将其重定向到m.mydomain.tld.正如我所说,这个子域指向我的CI应用程序文件夹; 然后我提供移动优化的控制器和视图.
然而!如上所述app/config/config.php,我的应用程序的base_url是:
$config['base_url'] = 'http://www.mydomain.tld/';
所以重定向到m.mydomain.tld没有真正起作用,因为我仍然被重定向到www我不想要那个,即使它然后做了我想要它做的事情.
我试图解决这个问题的方法是制作两个具有不同控制器/视图的应用程序文件夹,但共享模型等等.所以,我正在试图找到一种方法来重构我的CodeIgniter应用程序,以便我可以共享我的模型和'自定义controller'(MY_Controller),以及不同应用程序之间的一些自定义库/帮助程序.
我希望这很清楚,如果不是,我会很乐意解释更多我正在寻找的东西.非常感谢!
我正在考虑在亚马逊,yelp和其他在线网站上创建一个"查看此内容的用户"列表.现在我正在考虑使用'product_id','last_viewed_product_id','hits'创建一个新表,当用户从product_id = 100的页面转到product_id = 101时,它将使用product_id =创建/更新此表101,last_viewed_product_id = 100,并递增'命中'值.是否有更好的方法更优化,计算密集度更低?