PHP会话验证
我想写一个只能由管理员访问的脚本 我想这样做:PHP会话验证,php,validation,session,Php,Validation,Session,我想写一个只能由管理员访问的脚本 我想这样做: session_start(); if (!isset($_SESSION['user_id'])) { //not logged in //redirect to homepage header("Location: http://domain.com/index.php"); die(); } if ($_SESSION['user_level'] != 1337) { //not admin //re
session_start();
if (!isset($_SESSION['user_id'])) { //not logged in
//redirect to homepage
header("Location: http://domain.com/index.php");
die();
}
if ($_SESSION['user_level'] != 1337) { //not admin
//redirect to homepage
header("Location: http://domain.com/index.php");
die();
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //form is submitted
//validate the submitted data
//submit the query
}
//form goes here
我的问题是:有没有更好的方法来验证这一点(例如,所有三个条件都应该嵌套)或者这就足够了
干杯
n1te下面是一个更整洁的地方。。。尽管您可能希望在$\u会话['user\u id']上运行一些验证,以确保它是int或您期望的任何数据类型
session_start();
if (!isset($_SESSION['user_id']) || $_SESSION['user_level'] != 1337) { //not logged in
//redirect to homepage
header("Location: http://domain.com/index.php");
exit(); // NOT DIE :P
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') { //form is submitted
//validate the submitted data
//submit the query
}
//form goes here
我会写:
if (!isset($_SESSION['user_id']) || $_SESSION['user_level'] != 1337) {
//not logged in/not admin
//redirect to homepage
header("Location: http://domain.com/index.php");
die();
}
如果不可能动态更改个人权限(即:您删除管理员权限),那么这就足够了,尽管我会构建一个函数:
function IsAdmin() {
if( !isset($_SESSION['user_level'])){
return false;
}
return ($_SESSION['user_level'] == 1337);
}
对于这种情况,您将在将来使用扩展权限检查。您可以使用IF-ELSEIF-ELSEIF-IF-ELSEIF更适合这种情况。这并不重要,因为您是
die()
ing,但是有没有更好的方法来验证这一点呢?让它们像前面指出的那样函数
。在验证$会话['user\u id']是否存在后,使用'is\u numeric'可能会验证它,否则您将得到一个未识别的索引错误