2011-11-03 137 views
1

我用下面的密碼代碼的所有網頁http://www.zubrag.com/scripts/password-protect.php使用登錄用戶的信息上

它工作正常,但是當我嘗試回聲出登錄用戶的信息,我只能做一次,在登錄的時間。之後,如果我刷新頁面,該頁面仍然可以訪問,但登錄用戶的名稱不會回顯 有人可以幫助我這個 我有以下代碼在我想保護的頁面的第一行

<?php require("/home/abcd/abcd/password_protect.php"); ?> 

我正在使用

echo "Welcome $login"; 
+1

將它保存在$ _SESSION,看看在比如http://www.evolt。 org/node/60265 –

+2

您下載的腳本在很多方面都是錯誤的。我建議你開始查看其他登錄機制。從沒有存儲用戶名和/或密碼的那些開始(即使它被哈希,即使被醃過)在cookie中,然後查看那些不使用GET註銷的,小心輸出的那些路徑信息,忘記明文密碼存儲,並且不要讓它們清除POST變量,所以其他不使用的腳本不會崩潰並燒燬。哦,特別是不要相信通過所有用戶循環查找誰試圖登錄的腳本。 – CodeCaster

回答

1

腳本的基本功能是它有一個存儲在數組$LOGIN_INFORMATION中的登錄名和密碼的預初始化列表。

$LOGIN_INFORMATION = array(
    'zubrag' => 'root', 
    'test' => 'testpass', 
    'admin' => 'passwd' 
); 

現在,它需要用戶的登錄名/密碼組合,並與存儲的值匹配。 根據您的問題,您想顯示已通過身份驗證的用戶的名稱。

對於您可以使用一個會話

在頁面(第一行)開始寫

`session_start();` 

然後 $_SESSION['username'] = $username //認證的用戶名

現在開頭您要打印名稱的每一頁,請寫

session_start(); 

然後

echo $_SESSION['username']; 

你做,你要註銷(或取消會話)後寫

session_unregister('username'); 
0

該腳本呼應出了名存儲到一個cookie的用戶名和密碼的哈希稱爲verify

setcookie("verify", md5($login.'%'.$pass), $timeout, '/'); 

因此,你不能直接提取$login,但是你可以通過從$LOGIN_INFORMATION準備迭代,直到你找到它:

$login = null; 
$found = false; 
foreach($LOGIN_INFORMATION as $key=>$val) { 
    $lp = (USE_USERNAME ? $key : '') .'%'.$val; 
    if ($_COOKIE['verify'] == md5($lp)) { 
    $found = true; 
    $login = $key; 
    } 
} 
+0

嗨Benjie Gillam。感謝您的迴應。是否必須將現有腳本更改爲上述內容或向包含password_protect文件的頁面添加內容 – mmdel

+1

只需將上面的代碼添加到您的網頁中即可,但您可以通過編輯腳本更簡單地完成此操作,只需添加'$ login = $ key;'在原始的'password_protect.php'文件中''found = true;'之後'。 – Benjie

0

在每一頁的開頭:

session_start(); 

時用戶成功地authenticaed:

$_SESSION['keyname'] = 'value'; 

你需要的地方訪問它:

echo $_SESSION['keyname']