Title: Integrating WordPress with a Codeigniter app using $_POST variables
Last modified: August 31, 2016

---

# Integrating WordPress with a Codeigniter app using $_POST variables

 *  [Alliedp5](https://wordpress.org/support/users/alliedp5/)
 * (@alliedp5)
 * [10 years, 1 month ago](https://wordpress.org/support/topic/integrating-wordpress-with-a-codeigniter-app-using-_post-variables/)
 * I’m writing a plugin to register and login to a codeigniter app we’ve got at 
   the same time as registering and logging in to wordpress. the solution I came
   up with is to submit the form variables to the codeigniter login controller function“
   check_login” and after it confirms login on the codeigniter side it starts a 
   session and populates some session variables before redirecting back to a worpress
   page. The session variables are then captured by a plugin function hooked into“
   wp_head” that logs them into wordpress and then unsets the variables.
 * The problem I’m having is when I hit submit and it sends the form $_POST variables
   to “check_login” the variables don’t come through. I added:
 *     ```
       var_dump($_REQUEST);
       		exit();
       ```
   
 * And nothing is being sent over. The plugin code is as follows:
 *     ```
       <?php
           /*
           Plugin Name: ABE-app-integration
           Description: Integrates registration and login with the ABE insurance app
           Version: 1.0
           Author: Eric Hylland
           License: GPL
           */
           /* Runs when plugin is activated */
           register_activation_hook(__FILE__,'ABE_integrator_install');
           /* Runs on plugin deactivation*/
           register_deactivation_hook( __FILE__, 'ABE_integrator_remove' );
           function ABE_integrator_install() {
           /* Creates new database field */
           add_option("ABE_integrator_data", 'Default', '', 'yes');
           }
           function ABE_integrator_remove() {
           /* Deletes the database field */
           delete_option('ABE_integrator_data');
           }
           /*Setup the admins page */
           if ( is_admin() ){
           /* Call the html code */
           add_action('admin_menu', 'ABE_integrator_admin_menu');
           function ABE_integrator_admin_menu() {
           add_options_page('ABE Integrator', 'ABE Integrator', 'administrator',
           'abe-integrator', 'ABE_integrator_html_page');
           }
           }
           /*Admin page layout*/
           function ABE_integrator_html_page(){
       	?>
       	<div>
       	<h2>ABE Integrator</h2>
       	</div>
           <?php
           }
           function ABE_loginlogo() {
             echo '<style type="text/css">
               h1 a {
                 background-image: url("http://dev.alliedbeautyexperts.net/wp-content/uploads/2013/03/ABEWebsiteLogo.png") !important;
               }
               .login h1 a {
                   background-size: 300px auto !important;
                   width: 300px !important;
                   height: 65px !important;
               }
             </style>';
           }
           add_action('login_head', 'ABE_loginlogo');
           function programmatic_login() {
               if(isset($_SESSION['AbeUser'])){
                   if ( is_user_logged_in() ) {
                       wp_logout();
                   }
   
                   $username = $_SESSION['AbeUser'];
                   $password = $_SESSION['AbePass'];
               add_filter( 'authenticate', 'allow_programmatic_login', 10, 3 );    //         hook in earlier than other callbacks to short-circuit them
               $user = wp_signon( array( 'user_login' => $username, 'user_password' =>$password ) );
               remove_filter( 'authenticate', 'allow_programmatic_login', 10, 3 );
               if ( is_a( $user, 'WP_User' ) ) {
                   wp_set_current_user( $user->ID, $user->user_login );
                   wp_set_auth_cookie( $user->ID );
                   if ( is_user_logged_in() ) {
                       return true;
                  unset($_SESSION['AbeUser']);
                  unset($_SESSION['AbePass']);
                  wp_redirect($_SERVER['REQUEST_URI']);
                  exit;
               }
           }
           return false;
            }
           }
            function allow_programmatic_login( $user, $username, $password ) {
           return get_user_by( 'login', $username );
            }
           add_action( 'wp_head', 'programmatic_login' );
           function ABE_login_form(){
               $logForm = "
       	    <div style='display: inline-block; margin: 0 auto; width: 250px;'>
                   <form action='/insuranceapp/index.php/common/login/check_login' method='post'>
       	    <input type='hidden' name='wp-submit' value='Login'>
                  <input type='text' id='email' autocomplete='off' name='logemail' padding='12px' required pattern='[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,3}$'>Username(Email)</input></br></br>
                   <input type='password' id='password' name='logpassword' autocomplete='off' padding='12px' required>Password</input></br>
                   </br><input type='submit'></input>
                   </form>
       	    </div>
                   </br>
               ";
               return $logForm;
           }
           add_shortcode( 'ABElog', 'ABE_login_form' );
           /*Add a shortcode to embed registration form*/
           function ABE_reg_form(){
           	$regform = "
       	    <div style='margin: 0 auto;'>
       	    <form action='/insuranceapp/index.php/common/registration/ABE_add_new_customer' method='post'>
       	    <div style='display: inline-block'><input type='text' id='first_name' value='Reg' name='first_name' autocomplete='on' padding='12px' required pattern='^[a-zA-Z]+$'>First Name</input></div>
       	    <div style='display: inline-block'><input type='text' id='last_name' value='test' name='last_name' autocomplete='on' padding='12px' required pattern='^[a-zA-Z]+$'>Last Name</input></div>
       	    <input type='text' id='contact_no' name='contact_no' padding='12px' autocomplete='on' value='3333333333' required pattern='(?:\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4}'>Phone</input><hr>
       	    <div style='display: inline-block'><input type='text' id='business_contact_no' value='9999999999' autocomplete='off' name='business_contact_no' padding='12px' required pattern='(?:\(\d{3}\)|\d{3})[- ]?\d{3}[- ]?\d{4}'>Company Phone</input></div>
       	    <hr>
       	    <div style='display: inline-block'><input type='text' id='email' autocomplete='on' name='regemail' onchange='matchem()' padding='12px' required pattern='[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,3}$'>Username (Email)</input></div>
       	    <div style='display: inline-block'><input type='text' id='conname' autocomplete='on' name='conname' onchange='matchem()' padding='12px' required pattern='[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-z]{2,3}$'>Confirm Username (Email)</input></div><div id='mismatch' style='display: none; margin: 10px;'><font color='red'>Usernames Must Match</font></div>
       	    <input type='password' id='password' name='regpassword' value='test' autocomplete='on' padding='12px' required>Password</input>
               <input type='hidden' name='city' value='Denver'></input>
               <input type='hidden' name='zip' value='000000'></input>
               <input type='hidden' name='state' value='CO'></input>
               <input type='hidden' name='security_question' value='What's your dogs name'></input>
               <input type='hidden' name='security_answer' value='Spot'></input>
               <input type='hidden' name='address' value='On Your Way'></input>
       	    </br></br><input type='submit'></input>
       	    </form>
       	    </br></br>
       	    <div>
       	    <font color='#6a6d6f' face='Arial, Verdana, Helvetica, sans-serif'><span style='font-size: 11.111111640930176px; line-height: 14px;'><a class='linkUtility' href='/terms-use/' target='_blank' style='margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255); color: rgb(35, 112, 169);' title='terms of use'>Terms of Use</a><span style='background-color: rgb(255, 255, 255);'> and </span><a class='linkUtility' href='/privacy-policy/' target='_blank' style='margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; background-color: rgb(255, 255, 255); color: rgb(35, 112, 169);' title='privacy policy'>Privacy Policy</a><span style='background-color: rgb(255, 255, 255);'>.</span></span></font>
       	    </div>
       	    <script>
       	     function matchem(){
       	 	    if(document.getElementById('conname').value != '' && document.getElementById('conname').value !== document.getElementById('usename').value){
       	 		    document.getElementById('mismatch').style.display = 'inline-block';
       	 	    }else{
       	 		    document.getElementById('mismatch').style.display = 'none';
       	 	    }
       	     }
       	    </script>
       	</div>
       	";
       	return $regform;
           }
           add_shortcode( 'ABEreg', 'ABE_reg_form' );
           function ABE_complete_registration() {
               if(isset($_SESSION['ABE_Reg_email'])){
                   $userdata = array(
                   'user_login'    =>   $_SESSION['ABE_Reg_email'],
                   'user_email'    =>   $_SESSION['ABE_Reg_email'],
                   'user_pass'     =>   $_SESSION['ABE_Reg_pass'],
                   'first_name'    =>   $_SESSION['ABE_Reg_fname'],
                   'last_name'     =>   $_SESSION['ABE_Reg_lname'],
                   'nickname'      =>   $_SESSION['ABE_Reg_fname'],
                   'phone'         =>   $_SESSION['ABE_Reg_phone'],
                   'description'   =>   $_SESSION['ABE_Reg_bphone']
                   );
                   $user = wp_insert_user( $userdata );
                   unset($_SESSION['ABE_Reg_email']);
                   unset($_SESSION['ABE_Reg_pass']);
                   unset($_SESSION['ABE_Reg_fname']);
                   unset($_SESSION['ABE_Reg_lname']);
                   unset($_SESSION['ABE_Reg_phone']);
                   unset($_SESSION['ABE_Reg_bphone']);
                   echo 'Registration complete. Goto <a href="' . get_site_url() . '/wp-login.php">login page</a>.';
               }
           }
           add_action( 'wp_head', 'ABE_complete_registration' );
           ?>
       ```
   
 * And below is the login controller of the codeigniter app. I can provide the registration
   code as well but I think I will solve both problems if I figure out one. When
   I started writing the plugin I did the login first, and it worked for a bit, 
   until I started writing the registration portion.
 *     ```
       <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
           /**
            * This class is used for user home page purpose\
            * @author tudip
            */
           class login extends app_controller {
       	/**
       	 * This constructor overrides the parent constructor
       	 */
       	function __construct(){
       		parent::__construct();
       		$this->load->model('common/user_model');
       		$this->set_page_title("User Dashboard");
       		$this->set_active_menus(array('login'));
       	}
       	/**
       	 * This index is used to load home page of user
       	 */
       	public function index(){
       		redirect('../../login/');
       		//$this->parser->parse("common/login.tpl", $this->data);
   
       	}
           /**
       	 * This function call the validate_user_login of user_model to check login
       	 */
       	public function check_login(){
       		var_dump($_REQUEST);
       		exit();
       			try{
       			if ($_SERVER['REQUEST_METHOD'] === 'POST') {
       				$this->set_page_message("Invalid username or password", "error");
       				$val = $this->user_model->validate_user_login($_REQUEST);
       				if($val){
       					$this->data['page_data']['user_id'] = $this->session->userdata('user_id');
       					$this->data['page_data']['email'] = $this->session->userdata('email');
       					$this->data['page_data']['user_name'] = $this->session->userdata('user_name');
       					$this->data['page_data']['username'] = $this->session->userdata('username');
       					$this->data['page_data']['first_name'] = $this->session->userdata('first_name');
       					$this->data['page_data']['last_name'] = $this->session->userdata('last_name');
       					$this->data['page_data']['parent_id'] = $this->session->userdata('parent_id');
       					$result = $this->user_model->count_parent_ids();
       					if($this->session->userdata('renew_parent_id')){
       						$this->data['page_data']['from_renew'] = ACTIVE;
       					}
                        $this->set_page_message("User login successfully done", "success");
       					$this->check_session_user();
       					//Added this to log into wordpress after authenticating with the insurance app"
                           if (!session_id()) {
       					  session_start();
       					}
       					$_SESSION['AbeUser'] = $this->session->userdata('email');
       					$_SESSION['AbePass'] = $_REQUEST['password'];
       					redirect('/membership-resources');
                   }else{
       					$this->parser->parse("common/login.tpl", $this->data);
       				}
       			}else{
       				$this->set_page_message("Illegal Operation - Not allowed", "error");
       				redirect('../../login/');
       				//show_404('page',false);
       			}
       		}catch (Exception $e){
       			$this->handle_controller_exception($e);
       			$this->parser->parse("common/login.tpl", $this->data);
       		}
       	}
       ```
   
 * I need some more eyes on this. It is getting incredibly frustrating. Currently
   the htaccess file in the base folder contains the standard WordPress rewrite 
   rule. I can include the validate_user_login function as well, but I don’t think
   there is anything making it that far. Is WordPress somehow blocking the $_POST
   variables?
 * EDIT- I just talked to our hosting provider and they passed me these errors:
 *     ```
       [Mon Mar 28 14:20:57 2016] [error] [client 50.243.152.182] exec used but not allowed in /home/alliedp5/public_html/development/500.shtml, referer: http://dev.alliedbeautyexperts.net/login/
           [Mon Mar 28 14:20:57 2016] [error] [client 50.243.152.182] SoftException in Application.cpp:256: File "/home/alliedp5/public_html/development/wp-content/plugins/mimetypes-link-icons/css/style.php" is writeable by group, referer: http://dev.alliedbeautyexperts.net/login/
       ```
   

The topic ‘Integrating WordPress with a Codeigniter app using $_POST variables’ 
is closed to new replies.

## Tags

 * [$_POST](https://wordpress.org/support/topic-tag/_post/)
 * [CodeIgniter](https://wordpress.org/support/topic-tag/codeigniter/)
 * [form](https://wordpress.org/support/topic-tag/form/)

 * 0 replies
 * 1 participant
 * Last reply from: [Alliedp5](https://wordpress.org/support/users/alliedp5/)
 * Last activity: [10 years, 1 month ago](https://wordpress.org/support/topic/integrating-wordpress-with-a-codeigniter-app-using-_post-variables/)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
