当我没有更新信息时,会话变量变为null或丢失

In my page, I have:

1. Registration Page
2. Login Page
3. Successful Registration Page
4. Referral Form

In my registration Page, User can register through this.

In my Log-in page, I have two types of user, Applicant and Employee

In my Successful Registration Page, there is a button directs to Referral Form.

In my Referral Form Page, I have a modal there to update referral information provided by the user during the registration. The following information are:

 Referrer ID
 Fullname
 Current Position
 ContactID
 Email Address
 MObile Number
 Member Since

If you created an account on my page, either you are a Applicant or Employee, if you successfully register, my successful registration page will prompt to you and once you have click the button going to Referral Form The following information will be displayed to your referral information based on you supplied during the registration.

If you register as an Applicant, your Referrer ID is always set into 0 and you may edit it through Referral Form Page or if you register as an Employee, your Referrer ID is based on you provide during the registration. Example:

Referrer ID (Allowed to edit if you register as an applicant)
Fullname Sherlock Holmes
Current Position (This has no value and may be edit once you created an account)
ContactID CON12344
Email Address SherlockHolmes@gmail.com
MObile Number +987676758857
Member Since 2014-05-06 04:41:21

Here's my problem that I encounter.

I created an account and Successful registration page prompt to me, and I click the button going to Referral Form Page to edit my information. I edit it and Log-it out and try to relog-in, My Information updated and now reflecting on my Information. It works well.

But When I created an account and promt successful registration page and click the button going to Referral Form Page, If I did not edit my information and tried to log it out and try to re-login, my information becomes having all null values. Like this,

 Referrer ID 0
 Fullname
 Current Position
 ContactID
 Email Address
 MObile Number
 Member Since

Which was incorrect because even I did not edit my information, my information should just becomes like this.

 Referrer ID 0(You can edit it)
 Fullname Sherlock Holmes
 Current Position (You can edit it)
 ContactID CON12345678
 Email Address sherlockholmes@gmail.com (You can edit it)
 MObile Number +93456789 (You can edit it)
 Member Since 2014-05-06 04:41:21

Problem Occurs when I don't edit my information for a new created account, but when I edit it before I log it out, it's okay.

here is my Successful registration PHp

<?php
include('../include/dbconnection.php');
include('../include/functions.php');

if(!isset($_SESSION))
{
session_start();
}
$empid = $_SESSION['SESS_EMP_ID'];
$conid = $_SESSION['SESS_CONID'];
$fName = $_SESSION['SESS_FIRSTNAME'];
$lName = $_SESSION['SESS_LASTNAME'];
$contactNo = $_SESSION['SESS_CONTACT_NO'];
$mobile = $_SESSION['SESS_MOBILE'];
$email = $_SESSION['SESS_EMAIL'];
$bday = $_SESSION['SESS_BDAY'];

if($conid == '')
{
echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.location.href='index.php';
    </SCRIPT>");
}

else
{
//Nothing
}
?>     

Here is my code in Referral Form

/**** Start Session ****/
session_start();


//Check whether the session variable SESS_EMP_ID is present or not
if(!isset($_SESSION['SESS_EMP_ID']) || (trim($_SESSION['SESS_EMP_ID']) == '')) {
    header("Location: LoginPage.php");
    exit();
}
/**** End ****/

/**** Redirects automatically to index ****/
header("Refresh: 15 * 60; url=index.php");
/**** End ****/

/**** authentication ****/
//require_once('../function/auth_emp.php');
/**** End ****/

$empid = $_SESSION['SESS_EMP_ID'];
$bdate = $_SESSION['SESS_BDAY'];



/**** Database connection ****/
require_once('../include/config.php');
/**** End ****/


include'../GlobalConstants.php';

include_once ('../refer/updateInfo.php');

mysql_select_db($db_name, $con) or die("ERR_COULD_NOT_SEE_DB");
if($empid == 0)
{

$fname = $_SESSION['SESS_FIRSTNAME'];
$lname = $_SESSION['SESS_LASTNAME'];
$bdate = $_SESSION['SESS_BDAY'];
$pos = $_SESSION['SESS_POSITION'];
$empid = $_SESSION['SESS_EMP_ID'];

$qry= "SELECT vtiger_contactdetails.firstname,
          vtiger_contactdetails.contact_no, 
          vtiger_contactscf.cf_703,
          vtiger_contactscf.cf_715, 
          vtiger_contactscf.cf_717,
          vtiger_contactdetails.email,
          vtiger_contactdetails.lastname, 
          vtiger_contactdetails.mobile,
          vtiger_contactdetails.contactid,
          vtiger_crmentity.createdtime
       FROM vtiger_contactdetails 
       INNER JOIN vtiger_contactscf 
       ON vtiger_contactdetails.contactid = vtiger_contactscf.contactid
       INNER JOIN vtiger_crmentity
       ON vtiger_contactdetails.contactid = vtiger_crmentity.crmid
       INNER JOIN vtiger_contactsubdetails
       ON vtiger_contactsubdetails.contactsubscriptionid=     vtiger_contactdetails.contactid
       WHERE vtiger_contactdetails.firstname = '".$fname."'
       AND vtiger_contactdetails.lastname =  '".$lname."'
       AND vtiger_contactsubdetails.birthday = '".$bdate."'";   

$result = mysql_query($qry);

}   else
{
$qry= "SELECT vtiger_contactdetails.firstname,
          vtiger_contactdetails.contact_no, 
          vtiger_contactscf.cf_703,
          vtiger_contactscf.cf_715, 
          vtiger_contactscf.cf_717,
          vtiger_contactdetails.email,
          vtiger_contactdetails.lastname, 
          vtiger_contactdetails.mobile,
          vtiger_contactdetails.contactid,
          vtiger_crmentity.createdtime
       FROM vtiger_contactdetails 
       INNER JOIN vtiger_contactscf 
       ON vtiger_contactdetails.contactid = vtiger_contactscf.contactid
       INNER JOIN vtiger_crmentity
       ON vtiger_contactdetails.contactid = vtiger_crmentity.crmid
       WHERE vtiger_contactscf.cf_739 = '".$empid."'";

$result = mysql_query($qry);
}
if($result)
{
    if(mysql_num_rows($result)> 0)
    {
        $row = mysql_fetch_assoc($result);
        $contact_no = $row['contact_no'];
        $fname = $row['firstname'];
        $mname = $row['cf_703'];
        $lname = $row['lastname'];
        $mobile = $row['mobile'];
        $pos = $row['cf_715'];
        $program = $row['cf_717'];
        $email = $row['email'];
        $conid = $row['contactid'];
        $memberdate = $row['createdtime'];

    }
}

$erp = "ERP";
/**** Stores the firstname and lastname in the session ****/
$_SESSION['SESS_EMP_ID'] = $empid;
$_SESSION['SESS_CONID'] = $conid;
$_SESSION['SESS_FIRSTNAME'] = $fname;
$_SESSION['SESS_MIDDLENAME'] = $mname;
$_SESSION['SESS_LASTNAME'] = $lname;
$_SESSION['SESS_MOBILE'] = $mobile;
$_SESSION['SESS_EMAIL'] = $email;
$_SESSION['SESS_POSITION'] = $pos;
$_SESSION['SESS_GEN'] =$erp;
$_SESSION['login_time'] = time();




?>

Do I have problem passing the session variable when the user didn't fill up the information after they created an account? If user edit and fill up all information and try to re-logout and re-login. It seems okay and works. But after user created an account, and If I didn't edit the information and log it out and try to re-login, it does not reflect the values. I won't reflect the value of session when I didn't update the information if I logout and try to re-login. Thanks

Your code is simple to debug.

Try to test it step by step.

Check this variable - $empid

1) When it is 0 then try to output the whole your query on the page and check these conditions.

   WHERE vtiger_contactdetails.firstname = '".$fname."'
   AND vtiger_contactdetails.lastname =  '".$lname."'
   AND vtiger_contactsubdetails.birthday = '".$bdate."'"; 

2) If this whole query outputs correctly (fname, lname, bdate are not empty) then check the result variable. It should return an object and it should not be null.

3) Check the ELSE block. Especially this condition

WHERE vtiger_contactscf.cf_739 = '".$empid."'";

4) If the query is correct (no empty spaces), check the result variable. It must be an object.

I think the issue occurs when you logout the user, you might be flushing all the session values, please add your logout code here so that we can check if their any cause.

There is another this that you can try for this issue.

1) When the user successfully register to you application save the data into temp table with user info along with the non-edited flag.

2) when the user comes on the referral page fetch the current login user data and assign to referral form.

3) If the form get submitted change the flag value.

This will help you to track on the users whose not update their referral form, and you can prompt them on some other pages also, this will make lesser dependency on session, because session will get destroyed eventually when you do logout or might be happen due to server session handling variables also and you will not have any track for those information. Hope this will help you.