2 回答

TA貢獻1942條經驗 獲得超3個贊
一些想法:
1)使用 Cookie 而不是 $_SESSION (在開始新會話后確實會被銷毀)。如果設置了 cookie,則顯示您顯示的消息(并刪除 cookie)
2)不要立即重定向到登錄頁面,而只是說:“密碼已更改!單擊此處重新登錄。”。但是您可以安全地銷毀該頁面上的會話。
3)根本不破壞會話。更改密碼的事實并不意味著您必須銷毀會話。如果您的會話包含以下內容:$_SESSION['validUser'] = 'Y'
那可能就足夠了嗎?

TA貢獻1744條經驗 獲得超4個贊
Erwin Moller 的建議都是很好的建議,而且都很容易實施。我認為這些是最好的方法,但是如果您不想使用這些方法中的任何一種,那么您可以將一個$_GET變量從一個重定向中繼到另一個重定向,可以是純消息或代表的值一個消息:
$red_url = 'http://www.example.com/?msg=Password+has+been+reset';
header("Location: {$red_url}");
exit;
確保htmlspecialchars()在輸出消息時使用類似或等效的東西。這將處理惡意代碼插入,但這種方法仍然允許最終用戶最靈活地處理您的站點消息。
變量方法將類似:
$red_url = 'http://www.example.com/?msg=1234';
header("Location: {$red_url}");
exit;
在顯示頁面上使用某種方式來獲取或翻譯msg代碼:
<?php if(!empty($_GET['msg']) && is_numeric($_GET['msg'])): ?>
<h3 class="site-message"><?php echo myCodeToMessageFunc($_GET['msg']) ?></h3>
<?php endif ?>
最可能發生的情況是用戶可以手動傳遞不同的代碼以顯示不同的消息。
** 這兩種方法可能會被用戶弄亂(如果您正在清理或控制輸出,則無害),這就是 cookie 或會話更好的原因,但這是一種非常直接的消息傳遞方法。
- 2 回答
- 0 關注
- 132 瀏覽
添加回答
舉報