how to pass variables between 2 php files

441
April 05, 2017, at 6:49 PM

I have two php files to make authentication to active directory users, i want to get the attribute url from it and pass this variable $data from authenticate.php to login.php if the function returned true to be in the location of header("Location: *URL*");,how can this be done?

authenticate.php:

<?php
  // Initialize session
  session_start();
  function authenticate($user, $password) {
  if(empty($user) || empty($password)) return false;
  // Active Directory server
  $ldap_host = "CRAMSDCR01V.cloud4rain.local";
  // connect to active directory
  $ldap = ldap_connect($ldap_host);
  $ldap_dn="OU=by-style,DC=cloud4rain,DC=local";
  // verify user and password
  if($bind = @ldap_bind($ldap, $user, $password)) 
  {
    $result = ldap_search($ldap,$ldap_dn, "(cn=*)") or die ("Error in search query: ".ldap_error($ldap));
    $data = ldap_get_entries($ldap, $result);
    echo $data["url"];
    return true;    
  } 
  else 
  {
    // invalid name or password
    return false;
  }
 }
?>

login.php:

<?php
include("authenticate.php");
// check to see if user is logging out
if(isset($_GET['out'])) {
// destroy session
session_unset();
$_SESSION = array();
unset($_SESSION['user'],$_SESSION['access']);
session_destroy();
}
// check to see if login form has been submitted
if(isset($_POST['btn-login'])){
// run information through authenticator
if(authenticate($_POST['userLogin'],$_POST['userPassword']))
{
  // authentication passed
  header("Location: authenticate.php?$data");
  die();
 } else {
  // authentication failed
  $error = "Login failed: Incorrect user name, password, or rights<br /-->";
}
}
// output logout success
if(isset($_GET['out'])) echo "Logout successful";
?>
Answer 1

login.php

<?php
include("authenticate.php");

That essentially acts like pasting the contents of authenticate.php inside login.php so although it's technically 2 files, it acts as if it's just the one - however $data is defined within the authenticate() function and so is only scoped within that function.


In authenticate.php - return the data from the function

// verify user and password
if($bind = @ldap_bind($ldap, $user, $password)) 
{
    $result = ldap_search($ldap,$ldap_dn, "(cn=*)") or die ("Error in search query: ".ldap_error($ldap));
    $data = ldap_get_entries($ldap, $result);
    // echo $data["url"]; // I assume this is just for debugging...
    // return $data from the function which should be "truthy"
    return $data;
} 
else 
{
    // invalid name or password
    return false;
}


In login.php - evaluate the return from the authenticate() function - since PHP is loosely typed any (non-empty) string returned by the function can be evaluated as being "truthy" - the only other returns you have from the function are false so...

// run information through authenticator
if($authData = authenticate($_POST['userLogin'],$_POST['userPassword']))
{
  // authentication passed
  // renamed the variable $authData just for clarity
  header("Location: authenticate.php?$authData"); 
  die();
 } 
 else {
  // authentication failed
  $error = "Login failed: Incorrect user name, password, or rights<br />";
}
Answer 2

Not sure why you have $_SESSION = array(); in login.php but if you want to pass $data from one php to another then just set it in session as

$_SESSION['data'] = $data;

ang to get it in the other file use

$data = $_SESSION['data'];
READ ALSO
Sweetalert2 and Qunit.js

Sweetalert2 and Qunit.js

Could anyone give me a pointer on how I test the following code in QUnit?

384
Cannot access resources in Polymer Element

Cannot access resources in Polymer Element

I am writing a basic Polymer Component that should be able also to change its style at the change of a property

259
What are practical use cases for JavaScript Streams

What are practical use cases for JavaScript Streams

I'm been learning how to use JavaScript 'node-style' streams using Baconjs

290
AJAX navigation not working on cordova using Windows phone universal device?

AJAX navigation not working on cordova using Windows phone universal device?

AJAX navigation request is not working in windows phone universal devicePlease find me anybody solution

294