2016-04-24 92 views
0

我想創建一個網站,用戶登錄或創建一個新帳戶,如果他們不是一個用戶。我有這個工作,但我似乎無法弄清楚的是如何讓PHP或HTML通過不同的頁面保存用戶名。用戶登錄,然後基於特定用戶,我的網站將顯示用戶過去完成的不同練習,並允許用戶在將來添加更多練習。我的網站使用PHP,HTML和MySQL在我的數據庫中搜索不同的表格並輸出結果。如何讓用戶登錄網站並將他們的用戶名信息保存在PHP/HTML中?

我已經嘗試了許多不同的可能的解決方案,例如PHP這樣的會話,但它沒有奏效。每個PHP頁面有這樣開頭:

session_start();

,然後再往下,我有:

$_SESSION["Username"] = $_POST['Username']; 

我也試圖隱藏的輸入值在HTML,但是這似乎並沒有工作非常正確。每個HTML頁有這樣:

<input type="hidden" name="Username" value="Cbartowski"> 

我已經嘗試了很多辦法,試圖讓我的網頁保存的用戶名和使用貫穿我的網頁數據,但我沒有任何運氣。 PHP中的會話是否會走?或在HTML中隱藏輸入?還是其他什麼東西?

任何幫助將不勝感激!

+0

'$ _SESSION'應該工作,爲什麼不呢? – Panda

+0

你是這麼寫的。您需要一個發送到您的PHP的HTML輸入。也許你正在爲每一個調用(即使你沒有發送數據)寫入$ _SESSION變量到你的頁面,並且因此你的變量值總是爲空(用空值覆蓋) –

+0

會話絕對是最簡單的方法維持頁面之間的用戶狀態。使用'$ _SESSION [「用戶名」] = $ _POST ['用戶名'];每個不使用POST發送此信息的頁面將簡單地用duff/null信息覆蓋會話變量,因此只有在提交表單後才使用第一次 – RamRaider

回答

0

html隱藏的輸入不是一個好方法,因爲用戶可以通過瀏覽器show source操作來看它。 是你保存的會話文件是否保存,會話ID是否包含在你的鏈接中? 如果每次用戶單擊某個鏈接時沒有會話開始新會話。每次點擊一個鏈接時, 都會顯示在您的臨時文件夾中;如果創建新的會話文件,那是因爲您忘記了會話ID。可能是這個問題。

0
  • 檢查您的形式方法:應該是POST
  • 使用檢查變量:

var_dump($_POST['Username']);

0

因此,從經驗,其更好的用戶做認證時使用POST方法。純粹出於安全原因。除此之外,使用PHP的會話變量也是將用戶信息從一個頁面傳遞到另一個頁面的推薦方式。 如果您想將用戶名存儲在會話變量中,這裏有一些步驟,你可以遵循

  • 使用session_start();
  • 名會話變量啓動會話和存儲信息,你想 $_SESSION['what-ever-you-want-to-call-it']=$what-you want to store 如。 $_SESSION['Username']=$_POST['Username']。注意使用單引號
  • 現在你可以在任何地方調用$_SESSION['Username']一個php腳本,在調用它之前提供會話已經啓動。那是session_start();

注意分開您的工作代碼,並確保每個單獨的作品。例如,是提供你的用戶名?

1

首先,使用隱藏輸入來存儲用戶名是對您的網站的重大威脅。 可以通過查看源代碼輕鬆查看該用戶的用戶名。

使用PHP會話是這裏的方法。

我所瞭解的是,你在每個網頁上初始化

$_SESSION["Username"] = $_POST["Username"]; 

。現在,考慮你有兩個PHP頁面。 一個是形式請求-handler.php等是顯示用戶preferences.php

現在,當用戶提交表單的用戶名被使用於形式 - 上面的代碼片段套入會話變量request-handler.php頁面。

現在,當用戶點擊display-user-preferences.php頁面時,再次設置會話變量的值。但是,既然這個頁面沒有發佈任何請求,所以Null被保存到會話變量中,並且不能從數據庫中檢索所需的信息。

因此,無論哪個php頁面正在處理post請求,只需初始化您的會話變量並在其他頁面上使用它。

會話變量將提供給你,除非你打電話

session_destroy(); 

希望,這有助於:)

相關問題