prevent cookie when running script from CLI in codeigniter - php

Is there a way of preventing session class to set cookie and adding a record in database when calling it from the command line?

The simplest way I think would be to extend the Session class like this :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Session extends CI_Session
{
public function __construct()
{
$CI = get_instance();
if ($CI->input->is_cli_request())
{
return;
}
parent::__construct();
}
}
Just place it in the application/libraries folder. And with a controller like this :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller
{
public function no_cli_session()
{
$this->load->library('session');
$this->session->set_userdata('logged', 'yes');
}
}
When you call the function from your browser the session is set and when you call it from cli it is not.

Related

extending core controller on codeigniter

I have placed this controller on application/core, called MY_base.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Base_Controller extends CI_Controller {
public function __construct(){
parent::__construct();
}
function set_spaces($post_array, $primary_key){
$post_array['nombre']=str_replace(" ", "_", $post_array['nombre']);
return $post_array;
}
}
?>
and this controller on the controllers folder
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Clase extends Base_Controller {
function __construct(){
parent::__construct();
$this->load->library('grocery_CRUD');
}
function index(){
if($this->session->userdata('logged_in')){
$this->grocery_crud->set_table('clase');
$this->grocery_crud->set_subject('Clase');
$this->grocery_crud->required_fields('nombre');
$this->grocery_crud->unset_columns('id');
$this->grocery_crud->unset_print();
$this->grocery_crud->unset_export();
$this->grocery_crud->unset_add();
$this->grocery_crud->callback_before_update(array($this,'set_spaces'));
//$this->grocery_crud->set_theme('datatables');
$output = $this->grocery_crud->render();
//$this->load->view('header', $data);
$this->load->view('header2.php',$output);
$this->load->view('clase_view', $output);
}
else{
redirect('login', 'refresh');
}
}
}
?>
I think I've followed documentation's instructions correctly but I get this error
Fatal error: Class 'Base_Controller' not found in C:\xampp\htdocs\esi3d\application\controllers\clase.php on line 3
It looks like is looking for base_controler on controllers folder not in core folder.
Place your MY_base.php also in controllers folder

Hit Counter in Codeigniter

I have the code below:
(Step by step)
Put counter.txt in APPPATH . 'logs/counter.txt'
Make counter_helper.php set in APPPATH . 'helpers/counter_helper.php';
Autoload newly created helper in APPPATH . 'config/autoload.php' file;
Make MY_Controller.php in APPPATH . 'core/MY_Controller.php'
Any controller should extend MY_Controller instead of CI_Controller;
Echo it on page with: <?php echo $this->count_visitor;?>
The Helper :
<?php defined('BASEPATH') OR exit('No direct script access allowed.');
if ( ! function_exists('count_visitor')) {
function count_visitor()
{
$filecounter=(APPPATH . 'logs/counter.txt');
$kunjungan=file($filecounter);
$kunjungan[0]++;
$file=fopen($filecounter, 'w');
fputs($file, $kunjungan[0]);
fclose($file);
return $kunjungan[0];
}
}
The Core :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller
{
public $count_visitor;
public function __construct()
{
parent::__construct();
$this->count_visitor = count_visitor();
}
}
/* End of file MY_Controller.php */
/* Location: ./application/core/MY_Controller.php */
The Controller :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends MY_Controller {
public function index() {
$data=array('isi' =>'home/index_home');
$this->load->view('layout/wrapper',$data);
}
}
The View :
<?php echo $this->count_visitor;?>
The code return an error like below :
I got it to work fine when I loaded the helper $this->load->helper('counter');
application > core > MY_Controller.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller
{
public $count_visitor;
public function __construct()
{
parent::__construct();
$this->load->helper('counter');
$this->count_visitor = count_visitor();
}
}
Yes, must load the helper:
$this->load->helper('counter');
or
config/autoload.php: $autoload['helper'] = array('counter');

How can I get a variable which contains an object with my model

I made a model, but I don't know how can I instanciate by using CI master controller. I know there is a way by using autoload in config or extend it, but I want this way.
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Authentification {
function __construct() {
$CI =& get_instance();
$CI->load->model('authentification_model');
var_dump($this->authentification_model);
}
public function test() {
}
}

Codeigniter: proper way to access function on custom library

I create simple library called Xauth.php to check if user already login or not:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Xauth
{
protected $ci;
public function __construct()
{
$this->ci =& get_instance();
}
public function is_logged_in()
{
if ($this->ci->session->userdata('is_logged_in'))
{
return true;
}
return false;
}
}
I put that library in my Admin_Controller, so whatever controller extended with Admin_Controller will be checked first, if the session data is empty they will be redirect to login page. And this is my Admin_Controller.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Admin_Controller extends MY_Controller {
public function __construct()
{
$this->load->library('Xauth');
if ($this->Xauth->is_logged_in() == false) {
redirect('auth');
}
}
}
But I got an errors, it says:
Message: Undefined property: Dashboard::$Xauth
Where is my fault?
You must use your class with lowercase letters :
$this->xauth->is_logged_in()

CodeIgniter 'MY_' can not be found in ... error

I have been working on a session validation for my login to make sure that a user is logged in to view pages. I keep getting this error:
Fatal error: Class 'MY_Staffcontroller' not found in /usr/local/var/www/CodeTest
/ci/application/controllers/staff_c.php on line 3
My staff_c page looks like so :
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Staff_c extends MY_Staffcontroller {
function homepage()
{
$data['main_content'] = 'homepage_view';
$this->load->view('includes/template', $data);
}
}
I have been reading same questions all over the place and they say the same thing pretty much...
Is your controller located in application/core?
Well yes it is. I can't seem to get passed this hump!
This is the code within My_Staffcontroller.php:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_staffcontroller extends CI_Controller {
function __construct()
{
parent::__construct();
$loggedin = $this->session->userdata('loggedin');
if(!isset($loggedin) || $loggedin != TRUE);
{
die($this->load->view('denied'));
}
}
}
I know this is user error as this is only my second day with CodeIgniter but I can't seem to find proper workaround for this?
I have tried this tutorial and still nothing and also this
Even following this video has me stuck on the session part.
And I just can not get this to work.
Remember Linux is case-sensative whereas Windows is case-insensative.
place you're MY_Staffcontroller inside application/core/MY_Controller.php file
Your MY_Controller.php file should look like this (minus all you're other functions, this is a minimal example)
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Controller extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
}
class MY_Staffcontroller extends MY_Controller
{
public function __construct()
{
parent::__construct();
}
public function sayHello()
{
echo "Hello, I am a function within MY_Staffcontroller.php";
}
}
Example
This will be located in /application/controllers directory
Basically any protected and public functions located in either MY_Controller OR MY_Staffcontroller will be accessible from derived controllers that extend the extended controller. In this case it would be MY_Staffcontroller
class Public_Staff_Controller extends MY_Staffcontroller
{
public function __construct()
{
parent::__construct();
}
public function index()
{
$this->sayHello();
}
}
/* end of file /application/core/MY_Controller.php */

Categories