2012-06-18 222 views
0

我有一個網站,該網站的一部分,應與登錄 我用它到處都可以找到網絡上的登錄表單被封鎖(見Redirect to home page after login php登錄並重定向到網頁

我已經更新了一些元素(使用$ _SESSION等)

所以我的登錄頁面的index.html

我已經把

<?php 
session_start(); 
if(!$_SESSION['username'] = $username){ 
header("location:index.html"); 
} 
?> 

在beginni ng這個文件中的login_success.php文件 您可以訪問該網站的所有其他頁面。

我的問題是現在:

我必須把「在session_start()等等。」在我的網站

的每一頁的開頭和做的每一頁必須有.PHP代替.htm?

(我試圖保持的.htm但比網頁仍然沒有登錄訪問,如果你知道這個網頁的名稱)

如果你知道一個網站的登錄保護更好的劇本,請讓我知道,最好在PHP中。

感謝您的幫助。

回答

1

業,你需要有它的每一頁。

每頁都需要.php。

一個常見的方法是有一些'config.php',它將有session_start();和其他配置/常見的東西。

所以頁面看起來像:

<?php 

include('config.php'); 

?> 

一般來說它的清潔劑都作爲.PHP,並改變你的HTML文件的擴展名也不會造成任何影響了。並允許您根據需要向其他網頁介紹您的PHP。

1

你必須把「在session_start()等等。」在您的網站上

每一頁每一頁的開頭必須有PHP擴展

0

把這個腳本:

<?php 
session_start(); 
if($_SESSION['username'] != $username){ 
header("location:/index.php"); 
die("you should be login") 
} 
?> 

稱爲check.php一個PHP文件中

,並在每個頁面中添加這是不公開的:

<?php 
include_once("check.php"); 
?> 
<html> 
..... 
+0

網頁仍然會被髮送,並且瀏覽器可以忽略302.也許在某處添加「die」? – FakeRainBrigand

+0

你確定這個'if(!$ _ SESSION ['username'] = $ username){'是正確的嗎? – shadyyx

+0

@shadyyx抱歉,我沒有看到它 – mgraph

0

我的兩分錢:

  • 設置cookie當用戶登錄
  • 每個PHP文件生成的HTML應該有一個函數check_login或類似的東西來檢查用戶是否已經登錄 - 如果他是,生成頁面,如果沒有重定向到登錄頁面。

重定向到其他頁面,您可以使用<? header("location: http://.........."); ?>

1

是的,你必須把代碼放在每一頁。您可以將它放在一個文件中,並將其包含在需要登錄的所有其他文件中。

您的所有頁面都可以訪問,因爲您在if條件部分中有錯誤的代碼。你不是比較而是分配值到你的會話變量。

使用下面的代碼:

<?php 
session_start(); 
if($_SESSION['username'] != $username){ 
header("location:index.html"); 
} 
?> 

只是爲了以防萬一,記住,頭之前一定不能呼應任何輸出()

0

更好的解決方案是使用使用一個單一指標的一些框架。 PHP(或startup.php等)來處理頁面請求。那麼在處理頁面請求之前,您必須在index.php之前只需要start_session()check_login()一次...