2017-08-24 70 views
0

我目前正在添加一個登錄系統到我正在工作的網站,並且我來到了必須爲每個頁面添加一個session_start()的點使未登錄的用戶無法訪問它們。PHP登錄系統 - 正確的方式來實現HTML

這裏是什麼樣子的「main.php」:

<?php 
session_start(); 
if(!isset($_SESSION['status']) || $_SESSION['status']=='false'){ 
echo ' 
<!DOCTYPE html> 
<html><body style="background:url("img/404.png")"?></body></html>'; 
} 
else{ 
// Very Long HTML ONLY code displaying the actual page 
} ?> 

登錄表單位於「的index.php」,並用JavaScript處理。 注意:$ users是由對數據庫的AJAX調用填充的數組,並且包含與每個用戶相關的所有數據。

$('#logForm').submit(function(){ 
    var $user=document.forms["logForm"]["user"].value; 
    var $pass=document.forms["logForm"]["pass"].value; 

    for(var i=0;i<$users.length;i++){ 
     if($users[i]['user'].trim() == $user.trim() && $users[i]['password'] == $pass.trim()){ 
      if($users[i]['status']==1){ 
       $_SESSION['status']=true; 
       $_SESSION['user']=$user[i]['user']; 
       return true; 
      } 
      else{ 
       alert("Your registration is being processed") 
       return false; 
      } 
     } 
    } 
    alert("Wrong Logs"); 
    return false; 
}); 

我的問題非常簡單: 對於「main.php」我不希望所有的HTML代碼複製到其他PHP的支架,因爲它使得它很不切實際的更新,甚至看看是怎麼回事對代碼的未來更改或更新(在文本編輯器的回顯中,所有內容都顯示爲相同的顏色,我使用Sublime文本)。 所以我想知道是不是有更多的優雅和專業的方式來處理這種情況?

回答

1

可以包含不同的文件:

else{ 
// Very Long HTML ONLY code displaying the actual page 
    include('index.php'); 
} ?> 
+0

非常簡單實用,謝謝! – Thermodynamics

0

要回答你的問題:是的,你可以添加HTML到PHP腳本。

解決您的問題else子句中 - 一個更加充滿活力和輕鬆地更新內容 - 你可以創建一個單獨的文件和include哪裏會是適當的:

<?php 
session_start(); 
if(!isset($_SESSION['status']) || $_SESSION['status']=='false'){ 
    echo ' 
    <!DOCTYPE html> 
    <html><body style="background:url("img/404.png")"?></body></html>'; 
} 
else { 
    include 'somepage.html'; 
} 
?> 

或者,如果你有一個autoloaderpreload文件,你可以添加一些規則,決定什麼內容出現。

+1

謝謝,應該工作以及! – Thermodynamics

0

我的建議是試圖保持業務邏輯出你的顯示器的文件,然後使用PHP的替代語法,或某些類型的模板引擎,爲您的模板:

在你的業務邏輯,你可以有:

<?php 
$status = true; 
if(!isset($_SESSION['status']) || $_SESSION['status']=='false'){ 
    $status = false; 
} 
include "template.php"; 
?> 

在您的模板,你可以有:

<!DOCTYPE html> 
<html> 
<?php if($status): ?> 
    <body> 
     <h1>Hello World</h1> 
    </body> 
<?php else: ?> 
    <body style="background:url("img/404.png")"></body> 
<?php endif; ?> 
</html> 

這種做法,被關注點分離,則使用MVC框架。這是一個控制器和視圖的非常基本的例子,但我建議你閱讀MVC設計,如果你有吸引力。