2015-08-28 119 views
0

在我的網頁,我有:會話變量越來越空或丟失時,我沒有更新信息

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

在我的註冊頁面,用戶可以通過這個註冊。

在我的日誌頁面上,我有兩種類型的用戶,申請人員工

在我成功的註冊頁面,有一個按鈕定向到介表格。

在我的推薦表單頁面中,我有一個模式來更新用戶在註冊過程中提供的推薦信息。 下面的信息是:

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

如果你創建了頁面上的賬號,無論你是一個申請人員工,如果註冊成功,我註冊成功頁面會提示你,一旦你點擊了按鈕去推薦表格以下信息將根據你在註冊過程中提供的信息顯示給你的推薦信息。

如果你註冊成爲申請人,你Referrer ID總是被設置成,你可以通過推薦表格頁 編輯它,或者如果你註冊成爲員工,你Referrer ID是基於你在註冊期間提供。 例子:

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 [email protected] 
MObile Number +987676758857 
Member Since 2014-05-06 04:41:21 

這裏是我的問題,我遇到的問題。

我創建了一個帳戶,併成功註冊頁面提示給我,我點擊按鈕去推薦表格頁面編輯我的信息。我編輯並註銷並嘗試重新登錄,我的信息已更新,現在反映在我的信息中。它運作良好。

當我創建一個帳戶,並PROMT註冊成功頁面,單擊該按鈕將推薦表格頁,如果我無法修改自己的信息,並試圖登錄出來,並嘗試重新登錄,我的信息變得具有全部空值。像這樣,

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

這是不正確的,因爲即使我沒有編輯我的信息,我的信息應該是這樣的。

Referrer ID 0(You can edit it) 
Fullname Sherlock Holmes 
Current Position (You can edit it) 
ContactID CON12345678 
Email Address [email protected] (You can edit it) 
MObile Number +93456789 (You can edit it) 
Member Since 2014-05-06 04:41:21 

問題當我沒有爲新創建的帳戶編輯我的信息時發生,但是在我註銷之前編輯它時沒問題。

這裏是我的註冊成功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 
} 
?>  

這是我在推薦表格代碼

/**** 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(); 




?> 

我必須通過會話變量,當用戶沒有填寫問題在創建帳戶後提供信息? 如果用戶編輯並填寫所有信息並嘗試重新註銷並重新登錄。它看起來沒問題,並且工作。 但用戶創建帳戶後,如果我沒有編輯信息並註銷並嘗試重新登錄,則不會反映這些值。 如果我註銷並嘗試重新登錄,我將不會更新會話的價值。謝謝

回答

0

您的代碼很容易調試。

試着一步一步來測試它。

檢查這個變量 - $ EMPID

1)當它是0,那麼儘量輸出頁面上的全部查詢,並檢查這些條件。 2)如果整個查詢輸出正確(fname,lname,bdate不爲空),則檢查結果變量。如果這個查詢輸出正確(fname,lname,bdate不爲空),則檢查結果變量。它應該返回一個對象,它不應該爲空。

3)檢查ELSE塊。特別是這種情況

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

4)如果查詢是正確的(沒有空格),檢查結果變量。它必須是一個對象。

+0

你好。我正確輸出查詢。但是當我沒有更新信息時,仍然得到空值。 – dakics

+0

你也可以發佈這個文件中的代碼include_once('../refer/updateInfo.php');?瞭解代碼中發生的事情的全貌。 – SergeyAn

0

我認爲當你註銷用戶,你可能會刷新所有會話值,請添加您的註銷代碼在這裏,以便我們可以檢查它們的任何原因出現的問題。

還有一種這個,你可以嘗試針對此問題。

1)當用戶成功註冊到您的應用程序保存數據到臨時表與用戶信息與非編輯的標誌一起。

2)當用戶來到轉診頁上讀取當前登錄的用戶數據,並分配給轉診表格。

3)如果表單提交得到改變的標誌值。

這將幫助您跟蹤那些不更新其推介表單的用戶,並且您還可以在其他一些頁面上提示他們,這會降低會話的依賴性,因爲會話在註銷時最終會被銷燬或者可能會由於服務器會話處理變量而發生,您將不會獲得這些信息的任何跟蹤。希望這會幫助你。

+0

謝謝讓我這樣做 – dakics