2015-08-09 37 views
1

我正在使用PHP和MySQL開發一個簡單的Web應用程序。我對這兩種技術都很陌生。我正在考慮創建一個類或只是一個「頂級」文件,可以跟蹤IsLoggedIn等變量,這些變量可以是0或1,具體取決於用戶是否登錄。我想這樣做,因爲某些頁面會顯示不同的內容或沒有內容,取決於用戶是否登錄。如何使用全局PHP文件來跟蹤用戶是否已登錄?

起初,我正在考慮創建一個BasePage類,每個類都從中繼承,然後在用戶登錄後修改BasePage中的變量並註銷。該變量可以是我的「切換」,用於跟蹤用戶的當前狀態。通過一些名爲constants.php的文件來完成這個更好,它只是定義了常量,並讓我訪問所有其他文件中的常量?或者是創建一個BasePage類更好的做法?

我也接受任何其他建議。謝謝。下面是我正在考慮構建的BasePage類的示例:

<?php 
class BasePage 
{ 
    public $loggedIn = false; 

    public function ToggleLogingStatus(){ 
     $loggedIn = !$loggedIn; 
    } 
} 
?> 
+2

那麼,一個全球性的PHP文件無法跟蹤用戶是否登錄或者不能自行登錄。您需要使用會話或cookie(或兩者結合)。只需谷歌「PHP登錄腳本」,你會得到足夠的教程和例子。也許你甚至想看看像Laravel這樣的php框架。 –

+0

我會檢查會話,聽起來像我需要的。謝謝! – HandleThatError

+0

只是想跟進並再次感謝你。會議非常完美! :)請寫一個答案,以便我可以接受它,假設你想要聲望。 :) – HandleThatError

回答

2

一個簡單的PHP文件無法跟蹤沒有任何介質的用戶登錄語句。解決該問題的方法是使用PHP會話或Cookie。請記住檢查所有用戶輸入。不要相信任何用戶輸入,cookie,會話(客戶端發送cookie,服務器抓取後端cookie中的會話),來自客戶端的變量。

對於開始會話將完成他們的工作,但也許以後你想做更多的事情,並切換到您自己的會話管理與cookie。也許你可以達到PHP框架有用和有益的地步。一些例子是Laravel,Yii和Zend Framework。

tl; dr:在您製作大型應用程序之前,請使用會話和谷歌作爲一些loginscript教程。只要記住使用PDO和Prepared Statements來與任何數據庫進行通信,那麼您就不會進入SQL注入的交火。

+0

mysqli是如何代替PDO的?在我還不熟悉mysqli的時候,轉向使用PDO會更好嗎? – HandleThatError

+1

那麼,MySQLi很好。但它只是MySQL的一個擴展。所以你不能將它用於任何其他數據庫(Mongo,PostgreSQL,MSSQL ...)。 PDO更好地集成了Prepared Statements,我建議使用PDO而不是MySQLi。 –

1

我有一個也具有受保護頁面的Web應用程序。我的所有網頁都需要一種基頁有MySQL連接的變量,經常使用的函數和類等

在這個頁面中,我有一個名爲protectedPage()函數;該功能檢查用戶的登錄狀態。在每個受保護頁面的頂部,該函數被調用。所以...

<?php 
require_once('/home/ubuntu/keypage/base_page.php'); 
protectedPage(); 
// Rest of code 
?> 

這位於我所有受保護頁面的頂部。該功能檢查會話和所有其他有用的用戶信息,如用戶級別,如果需要的話。

希望有所幫助。