我的CI应用程序中有登录控制器:
function index()
{
if($this->session->userdata('logged_in')==TRUE)
redirect('/success');
$data['error']=$this->session->flashdata('errormessage');
$this->load->view('auth',$data);
}
function process_login()
{
$username=$this->input->post('username');
$password=$this->input->post('password');
if($password == "good_pwd")
{
$data=array('username'=>$username,'logged_in'=>TRUE);
$this->session->set_userdata($data);
redirect('/success');
}
else
{
$this->session->set_flashdata('errormessage','Login failed');
redirect('/failed');
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在主控制器中的安全构造函数:
function __construct()
{
parent::__construct();
if($this->session->userdata('logged_in')!=TRUE) redirect('/login');
}
Run Code Online (Sandbox Code Playgroud)
当我试图进入www.mysite.com/main/function1/并且我没有登录时,构造函数会将我重定向到登录页面 - 当我登录正确时,我被重定向到主页面而不是将我重定向到登录页面的页面(在此示例中为:www.mysite.com/main/function1/) - 如何操作?
好吧,我正在尝试记录用户登录历史记录,所以为此我需要跟踪用户的IP地址.我用了:
$this->input->ip_address();
Run Code Online (Sandbox Code Playgroud)
这将返回ip address的机器,如果用户有有效的IP,或者应该返回0.0.0.0如果用户没有一个有效的IP.但就我而言,它既没有返回.
它只返回一种不寻常的格式.
::1
Run Code Online (Sandbox Code Playgroud)
PS我正在我的本地电脑上查看它.
编辑:
感谢所有评论的人.但是这里仍有奇怪的事情发生.我有两个独立的应用程序在同一台机器上运行.这两个应用程序都是在Codeigniter 2中制作的.第一个是记录0.0.0.0,第二个是记录::1.两个应用程序是否应该返回相同的东西?
谢谢
所以我想加入3张桌子.
我正在构建一个app i Codeigniter,我有3个表
客户:
-id
-phone_number
-hospital_id
-smc_status
-testing_center_id
医院
-id
-name
Testing_center
-id
-name
在模型中,我有这个:
public function get_clients()
{
if($slug === FALSE)
{
$this->db->select('clients.*');
$this->db->from('clients');
$this->db->join('hospital', 'clients.id = hospital.id');
$this->db->join('testing_center', 'clients.id = testing_center.id');
$query = $this->db->get();
return $query->result_array();
}
$query = $this->db->get_where('clients');
return $query->row_array();
}
Run Code Online (Sandbox Code Playgroud)
在视图中我有:
<tbody>
<?php foreach ($clients as $client_item): ?>
<tr>
<td><?php echo $client_item['phone_number'] ?></td>
<td><?php echo $client_item['smc_status'] ?></td>
<td><?php echo $client_item['hospital_id'] ?></td> //i wish to have the hospital name here
<td><?php echo $client_item['testing_center_id'] ?></td> …Run Code Online (Sandbox Code Playgroud) 摘要:
在缓存期间执行预控制器挂钩吗?是否有任何钩点将执行?(预制?)
我应该强调钩子不会影响发送到浏览器的内容这一事实.这不是问题.
详细版本:
我计划在我使用PHP和CodeIgniter构建的项目中实现一些统计类型功能.
有问题的项目是一个定制的CMS - 由于更新之间的间隔延长,我使用缓存来帮助加快加载时间; 这不是必要的,但它是优惠的.它似乎是一个很大程度上静态站点的好解决方案; 特别是在动态内容主要在客户端提供的情况下 - 即AJAX请求.
所提出的功能主要涉及预控制器钩子,该钩子在将它们转储到数据库之前通过诸如用户代理库之类的库来访问方法.从这里可以轮询,通过JSON输出并在被jQuery flot插件之类的东西显示之前进行操作.
我已经阅读了有关Web页面缓存的文档以及有关钩子的文档.不幸的是,仍然不清楚使用缓存是否会完全绕过钩子.
我知道cache_override这意味着这意味着实现自己的缓存机制; 不是我想做的!
另一种方法是收集统计客户端并通过AJAX将其提交给服务器; 但这并不理想,因为我试图明确分离逻辑 - 出于维护和测试的原因.
有没有办法检查图像URL是否返回动画或不是GIF?
我需要保存图片网址,然后在我的网站上显示图片,所以我想允许GIF扩展,但我需要避免动画GIF.是否有可能在没有下载图像的情况下即时检测到?
我已经添加了CodeIgniter-YouTube-API-Library,用于将视频文件上传到已注册的YouTube帐户.我手上有apikey,oauth密钥,oauth密码.我成功完成了上传.但目前的问题是当另一个用户尝试上传视频而不是上传到注册的YouTube帐户时,它会转到当前用户的YouTube帐户.如何通过提示用户登录注册帐户来避免这种情况.请建议解决方案.我正在使用以下代码.
public function request_youtube()
{
$params['key'] = 'ENTER YOUR GOOGLE CONSUMER KEY';
$params['secret'] = 'ENTER YOUR GOOGLE CONSUMER SECRET';
$params['algorithm'] = 'HMAC-SHA1';
$this->load->library('google_oauth', $params);
$data = $this->google_oauth->get_request_token(site_url('example/access_youtube'));
$this->session->set_userdata('token_secret', $data['token_secret']);
redirect($data['redirect']);
}
//This method will be redirected to automatically
//once the user approves access of your application
public function access_youtube()
{
$params['key'] = 'ENTER YOUR GOOGLE CONSUMER KEY';
$params['secret'] = 'ENTER YOUR GOOGLE CONSUMER SECRET';
$params['algorithm'] = 'HMAC-SHA1';
$this->load->library('google_oauth', $params);
$oauth = $this->google_oauth->get_access_token(false, $this->session->userdata('token_secret'));
$this->session->set_userdata('oauth_token', $oauth['oauth_token']);
$this->session->set_userdata('oauth_token_secret', $oauth['oauth_token_secret']);
} …Run Code Online (Sandbox Code Playgroud) 我有Codeigniter和JSON的问题.这是我的编码:
$.post("Admin/Admin/addschool", {test: 'test'}, function(data){
if (data.status == 'ok')
alert(data);
else
alert(data);
}, "json");
Run Code Online (Sandbox Code Playgroud)
......在我的控制器中:
public function addschool() {
$data = array("status" => "ok", "message"=> "something ");
echo json_encode($data);
exit();
}
Run Code Online (Sandbox Code Playgroud)
但每次我的json回复我的整个视图的HTML,例如我的回复
<!doctype html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<link rel="stylesheet" type="text/css" href="http://localhost:10090/css/layout.css" />
<title>Administration</title>
<meta name="description" content="">
<meta name="author" content="">
</head>
Run Code Online (Sandbox Code Playgroud) 我目前正在使用Codeigniter框架.在下面的代码中,我想获得一个Animal_model对象,而不是一个stdClassObject.
<?php
class Animal_model extends CI_Model{
var $idanimal;
var $name;
public static $table = 'animals';
function __construct() {
parent::__construct();
}
function getone(self $animal){
$query = $this->db->get_where(self::$table, array('id_animal' => $animal->idanimal));
if($query == FALSE){
return FALSE;
}else{
return $query->row(); // How to get an Animal_model object here?
}
}
}
$lion = new Animal_model();
$lion->idanimal = 25;
var_dump($lion); // It says "object(Animal_model)".
$lion = $lion->getone($lion);
var_dump($lion); // Now it says "object(stdClass)".
?>
Run Code Online (Sandbox Code Playgroud)
如何转换$query->row()为Animal_model对象?
我在Codeigniter中使用oci8作为我的数据库驱动程序.使用以下调用存储过程的代码时给出了错误:
$this->db->call_function('update_letter_body', $body_letter, $insert_id);
Error : This feature is not available for the database you are using.
Run Code Online (Sandbox Code Playgroud)
应该怎么做才能使这项工作?
我试图设置一个超过4000个字符的值,这似乎不能直接查询,似乎codeigniter不支持调用oracle的函数.有什么建议 ?
我使用CI创建了一个表单,并有一个原生的form_validation()库来验证每个字段输入,我使用jQuery post来回调输入以检查每个字段是否有效,如果我希望每个错误填充到每个字段form_error()旁边场而不是validation_errors()?
请参考以下内容:
视图:
<script>
$("#btnregister").click(function() {
var parameters = $("#reg_form").serialize();
$.post(baseurl+'pages/registration', parameters, function(data) {
if(data == "ok") {
//show success message
}else{
$("#error").html(data);
}
}, "html");
});
</script>
<div id="error"></div>
<form id="reg_form" method="post">
<p>
<label for="reg_username">Username</label><br />
<input type="text" id="reg_username" name="reg_username" value="<?php echo set_value('reg_username'); ?>">
<?php echo form_error('reg_username'); ?>
</p>
<p>
<label for="reg_email">Email</label><br />
<input type="text" id="reg_email" name="reg_email" value="<?php echo set_value('reg_email'); ?>">
<?php echo form_error('reg_email'); ?>
</p>
<p><input type="button" id="btnregister" value="Register"></p>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
控制器:
public …Run Code Online (Sandbox Code Playgroud) codeigniter ×10
php ×9
ajax ×1
animated-gif ×1
caching ×1
gif ×1
google-api ×1
json ×1
object ×1
oracle ×1
sql ×1
stdclass ×1
url ×1
validation ×1
youtube ×1