2011-11-26 90 views
1

我有另一個問題,現在我有一個PHP文件中的變量必須在另一個引用,但它沒有成功。如何從另一個PHP文件中引用變量?

爲了進一步解釋,我有這樣的片段在PHP文件:

if (isset($_REQUEST['login']) && isset($_REQUEST['password'])) 
    establishingConnection($_REQUEST['login'], $_REQUEST['password'], $xml); 

在這裏,我必須提交用戶名和密碼來建立與我正在開發一個Web服務的連接。

之後,用戶可以進行操作,如添加/刪除/更改鏈接/標籤,等等..他可以更改他的個人資料(用戶名,密碼,電子郵件或刪除自己的帳戶)。對於任何這些操作,我需要當前的登錄名(即他的用戶名)。像這樣的例子:

if (isset($_SESSION['login'])) 
{ 
    if (isset($_REQUEST['password']) && isset($_REQUEST['newUsername'])) 
     changeUsername($_SESSION['login'], $_REQUEST['password'], $_REQUEST['newUsername'], $xml); 
    else { 
     $msg = 'Some fields are missing'; 
     message($xml, $msg, 1); 
    } 
} 
else 
{ 
    $msg = 'Please login first!'; 
    message($xml, $msg, 1); 
} 

不幸的是,我無法正確導入登錄數據。我可以看到這個消息:

$msg = 'Some fields are missing'; 

我的主要目標是在另一個文件中引用一個PHP變量。我的JavaScript文件不負責提供登錄名的用戶名。我試圖包含php文件,但沒有成功。

任何建議來解決這個問題?

編輯:好吧,我嘗試了我的PHP,但我想出了我的JavaScript腳本中的一些問題。

我將發佈負責此操作的函數,因爲我不知道問題出在哪裏。

HTML:

 <div id="changeUserid"> 
      <form id="changeUseridForm"> 
       New username: <input type="text" id="newUserid" /> 
       <br> 
       Type your password to validate your action: <input type="password" id="retypePass" /> 
       <br> 
       <input type="submit" value="Change" /> 
      </form> 
     </div> 

我的JavaScript(jQuery的)功能:

$("#changeUseridForm").submit(function(){ 
     $.ajax({ 
      type: "GET", 
      url: "API/root/users/changeUsername.php", 
      data: { 
      newUsername: $("#newUserid", this).val(), 
      password: $("#retypePass", this).val(), 
      xml: 1, 
      }, 
      dataType: 'xml', 
      success: function(xml){ 
       if($(xml).find("success").length > 0){ 
        alert("Username changed successfully!"); 
        window.location.reload(); 
       } 
       else if($(xml).find("error").length > 0){ 
        alert("You have to fill all the fields!"); 
       } 
      } 
     }); 

     return false; 
    }); 

EDIT2:我在更改用戶名問題就解決了。現在,我有問題了,我可以使用舊用戶名登錄成功。任何建議?

+6

你應該開始使用更花括號的方式,這段代碼必然會中斷。在不遠的將來。 – Jacco

+0

並修復縮進 – 2011-11-26 12:19:43

+0

糟糕的格式,難以閱讀的代碼 – robert

回答

0

我不確定我完全理解你的問題,這兩個代碼段是來自同一個文件還是單獨的代碼段?你是提交兩種不同的HTML表單還是隻是一種形式?

我假設,你已經提交了一個HTML表單到一個頁面,然後當你移動到另一個頁面時,你想訪問這些相同的值,是嗎?您不能像這樣將$ _REQUEST值從一個頁面傳遞到另一個頁面。您可以將這些值指定給一些變量,然後包括文件,或使用會話變量來存儲這些文件:

爲此在第一個文件:

$password = $_REQUEST['password']; 
$newUsername = $_REQUEST['newUsername']; 

然後,包括在第二個中的第一個文件並使用變量(假定第一個文件是a.php只會):

include "a.php"; 
if (isset($_SESSION['login'])){ 
    if (isset($password) && isset($newUsername)){ 
     changeUsername($_SESSION['login'], $password, $newUsername, $xml); 
    } else { 
     $msg = 'Some fields are missing'; 
     message($xml, $msg, 1); 
    } 
} 

您還可以使用會話變量來對數據傳遞從一個網頁到另一個,只要確保有session_start()您使用的所有頁面的開始會話變量。

注意:您還應該在使用之前驗證用戶提交的數據,但這是另一個話題。此外,每當有疑問時,打印/回顯您的變量以查看傳遞的數據以及哪個變量是問題。

編輯(問題2):你可以登錄新用戶和舊用戶名嗎?如果是,則表示不是替換新用戶的帳戶用戶名,而是添加新用戶(名稱)。分享您如何更新帳戶信息(也就是說,如果您使用的是數據庫,請分享您正在使用的更新查詢),並且有人可能會提供幫助。

+0

第一個代碼段與第二個片段不在同一個文件中。 好吧,我試圖做一個包括,但我返回一個致命的錯誤,因爲它試圖連接到數據庫,每次我運行任何腳本。我評論過它,但它返回了相同的問題結果。 –

+0

每當你包含一個PHP文件,其中的所有代碼都會被執行(類中的函數和代碼除外),所以只要包含一個文件以使其變爲可變,通常不是一個好主意。嘗試使用會話。 –

+0

像,做一個'session_start()'?但是我已經在腳本的開頭就這樣做了。 之後,我創建了我的函數來執行會話。 –

0

我認爲問題與Session_start()有關。在檢查會話登錄名和密碼變量之前,請確保已包含此項。

相關問題