我目前正在本地工作(myhostname.local)在CodeIgniter中开始一个开发项目,我正在尝试做一个简单的登录表单提交,并且CSRF保护不起作用.我收到错误:
遇到错误
不允许您请求的操作.
有几点需要注意:
我的表格:
<?=form_open('home/login');?>
... username/password fields in here ...
<?=form_close();>
Run Code Online (Sandbox Code Playgroud)
我的控制器:
public function login()
{
$this->form_validation->set_rules('email','Email','trim|required');
$this->form_validation->set_rules('password','Password','required');
if($this->form_validation->run() === FALSE)
{
... form did not pass validation ...
}
else
{
... form passed ...
}
}
Run Code Online (Sandbox Code Playgroud)
当我将表单提交到http://myhostname.local/home/login时,我收到上述错误.
任何关于为什么会发生这种情况的帮助非常感谢.
谢谢!肖恩
我很新,刚刚开始使用Codeigniter,并且遇到了一些关于会话的混乱.
我想要实现的是,像常规的PHP一样,我想通过使用检查会话数据的头包含文件来检查用户是否登录.我不希望在将数据传递给视图文件时检查/写入每个控制器中的检查代码.
有人可以告诉我如何做到这一点?
防爆.我不想在每个控制器中执行以下操作:
//Controller:
if($this->session->userdata('loggedin'){
$data['loggedin'] = $this->session->userdata('loggedin');
}
//I dont want to check the above on every function in every controller
$this->load->view('some_view_file', $data);
//some_view_file
if(isset($loggedin)){
echo "You are logged in!";
}
else
{
echo "Please log in!";
}
Run Code Online (Sandbox Code Playgroud)
相反,我希望有类似的东西:
//some view file
if(isset($loggedin))
{
echo "your logged in";
}
else
{
echo "please log in";
}
Run Code Online (Sandbox Code Playgroud)
而且,我如何使用本机php会话而不是CI会话.任何帮助都感激不尽.谢谢.
目前我正在尝试使用jQuery Mobile执行ajax请求.我试图在http://www.giantflyingsaucer.com/blog/?p=2574上使用示例.是的,它完美无缺.但是当我试图在codeigniter中使用代码时,问题就出现了.
这是我的控制器:
<?php
class Ajax extends CI_Controller {
function __construct() {
}
function index() {
?>
<!DOCTYPE html>
<html>
<head>
<title>Submit a form via AJAX</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0a4/jquery.mobile-1.0a4.min.css" />
<script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a4/jquery.mobile-1.0a4.min.js"></script>
</head>
<body>
<script>
function onSuccess(data, status)
{
data = $.trim(data);
$("#notification").text(data);
}
function onError(data, status)
{
// handle an error
}
$(document).ready(function() {
$("#submit").click(function(){
var formData = $("#callAjaxForm").serialize();
$.ajax({
type: "POST",
url: "callajax",
cache: false,
data: formData,
success: onSuccess,
error: onError
});
return false; …Run Code Online (Sandbox Code Playgroud) 只是一个快速的逻辑问题.
我有2个Zend控制器,即商家和账户.Merchant Controller有一个名为editAction的动作.我的问题是,是否可以在帐户中执行相同的操作而不重复代码.我设法为视图创建了一个包含文件,但我希望有一个最好的方法来管理我的代码.我目前有一个Helper类的想法,并为这两个控制器调用该帮助器类.但我知道有人会得到比这更好的解决方案.请帮我.
谢谢
因此,我尝试使用本手册从地址中删除index.php:http://dev.lohv.eu/1/user_guide/general/urls.html
atm我的地址是http://dev.lohv.eu/1/index.php,但是我想在将来使用它而没有index.php,就像这样:http://dev.lohv.eu/1/
我根据手册创建了.htaccess文件:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Run Code Online (Sandbox Code Playgroud)
但不幸的是它失败了,我得到404错误.我想问题是,我正在尝试在子域文件夹中配置.htaccess,因此它不适合手动,需要一些额外的,但我不知道它需要什么额外的东西.
例如,在我的日志中,我有许多重复的行,例如:
ERROR - 2011-07-06 09:19:01 --> 404 Page Not Found --> favicon.ico
Run Code Online (Sandbox Code Playgroud)
有没有办法让我找出谁在调用这些错误的URL?favicon只是一个例子,有一些URL例如显示出攻击的意图,而其他URL则是一遍又一遍地重复相同的错误.基本上我很想知道哪些IP可能会阻塞,以及如果他们有错误的链接会联系哪些网站(或者我应该只使用.htaccess将它们重定向到我的服务器上).
CodeIgniter 2.0.2语法错误空白页面
我有CodeIgniter 2.0.2(CI)和它的annoing,当我写了很多代码,然后得到空白页.难以调试而不会出错.我在php.ini中有错误报告E_ALL,在CI的配置中,它为每个环境(开发,产品)的情况打开了,只是为了确定...
有谁知道,bug可以在哪里?怎么打开它?我认为CI正在以某种方式重写php.ini错误报告设置...
谢谢.
我是CodeIgniter的新手,我希望我的问题能有一个简单的答案.
我有一个网站,里面有几个菜单项(menuA,menuB和menuC).我用控制器中的一个主控制器,index(),menuA(),menuB()和menuC()对其进行了建模.被调用函数设置会话值currentMenu并包括标题,X,页脚.其中X取决于所调用的函数.然后标题高亮显示选择的菜单.
在menuC(我的webapp中的帐户设置)中,我想有一个不同的控制器来控制AccountSettings/NotLoggedIn的子视图.
从逻辑上讲,我希望menuC()包含页眉和页脚,然后将调用转发给管理登录或子页面的子控制器.
我使用错误的框架还是有直接的方法来实现这一目标?
我是CI的新手,我想做的是拥有一个类级变量(例如是一个数组).但看起来CI尽管吹嘘不高,却不支持这一功能.用户指南中未提及任何相关内容.有一个名为私有函数和变量的标题,但文本似乎对变量保持沉默.
我希望有类似的东西:
class OrderStats extends CI_Controller {
protected $arr_CoreCountry = ('0'=>'uk', '1'=>'us');
public function __construct()
{
parent::__construct();
// Your own constructor code
}
public function index()
{
$this->load->model('orders', '', TRUE);
//$data['result'] = $this->Testmodel->get_entries();
$data['result'] = $this->Testmodel->get_reports();
$this->load->view('test', $data);
}
public function getOrderStats()
{
$this->load->model('Orderstatsmodel', '', TRUE);
//$data['result'] = $this->Testmodel->get_entries();
foreach ($arr_CoreCountry as $key => $value)
{
$data['result'] = $this->Orderstatsmodel->get_orderStats($key);
}
// $data['result'] = $this->Orderstatsmodel->get_orderStats(0);
$this->load->view('orderstats', $data);
}
Run Code Online (Sandbox Code Playgroud)
请记住,当我在这篇文章中声明$ arr_CoreCountry变量时,我经常会看到语法错误消息.当我把它放在任何函数内部时,当然,它超出了范围,我不断得到一个错误消息,$ arr_CoreCountry是一个未定义的变量.所以问题是我在哪里定义它?
由于来自codeigniter的这个消息,因为我的一半时间被浪费了,所以期待快速响应.
我决定在我的网站上想要一个搜索字段,事情是我对搜索算法没有任何了解.搜索框的工作方式类似于您可以输入任意数量的名称(用户名,名字,姓氏)或用空格分隔的电子邮件.所以我想出了以下使用codeigniter的活动记录类(它非常简单):
$emails = FALSE;
$names = FALSE;
foreach($search_array as $value){
if(valid_email($value)){
$emails[] = $value;
} else{
$names[] = $value;
}
}
if($emails){
$this->db->where_in('email', $emails);
if($names){
$this->db->or_where_in('username', $names);
$this->db->or_where_in('firstname', $names);
$this->db->or_where_in('lastname', $names);
}
} else{
if($names){
$this->db->where_in('username', $names);
$this->db->or_where_in('firstname', $names);
$this->db->or_where_in('lastname', $names);
}
}
$this->db->select('id, username, firstname, lastname');
$query = $this->db->get('users');
if($query->num_rows() > 0){
return $query->result();
}
return FALSE;
Run Code Online (Sandbox Code Playgroud)
这段代码的作用是运行一堆where语句,然后简单地将它们全部发回.也许我可以清理if语句以及电子邮件的工作方式,但这不是重点.这段代码完美无缺(至少对于一个非常小的数据库:P),但我希望它能做得更多:
现在您需要输入正确的名称或电子邮件才能获得任何好结果.如果你几乎是正确的,那么获得一些建议会很好,但我可能会自己想出来做一些喜欢.
我想对整个结果数组进行排序,这就是我磕磕绊绊的地方.由于电子邮件和用户名都是唯一的,我希望使用以下优先级进行搜索:
好吧暂时我并不关心例如电子邮件+用户名+名字+姓氏,因为我认为这将是压倒性的方式:P
我确实找到了这个主题搜索查询,'按优先顺序',但由于我不知道在我的搜索中它是什么,它并没有真正帮助我,但也许我可以使用类似的东西?
无论如何,你们知道解决优先级问题的方法吗?我是否可能错过了一些可能有用的主要功能?当我的数据库变大时会发生什么?;)
谢谢大家的帮助!