我做了一个登录页面,该页面正常运行。我系统上的每个帐户都有一个用户名,密码和权限。在登录屏幕上,您只需填写用户名和密码,记录就会自动链接到会话,因此,请确保会话知道登录时具有的权限。我想在管理员和管理员之间进行区别用户帐号。管理员帐户应与用户重定向到其他屏幕。这是我的代码:
if ($_SESSION['Permission'] = "admin") {
header("location:adminmenu.html");
} else {
header("location:usermenu.html");
}
运行此命令时,即使该语句不正确,它也会自动将我带到管理菜单。我该如何解决?
这是不一样的,因为问题不在于解析错误。
答案 0 :(得分:0)
检查以下内容:
1。)使用比较而不是分配
if ($_SESSION['Permission'] === "admin") {
header("location:adminmenu.html");
} else {
header("location:usermenu.html");
}
2。)确保对每个请求都运行session_start()
3。)确保设置了$ _SESSION ['Permission'],运行var_dump($ _ SESSION);确保该值设置正确。
答案 1 :(得分:0)
比较值时,请确保您拥有=
而不是session_start();
。还要查看页面顶部是否有session_start();
if ($_SESSION['Permission'] == "admin") {
header("location:adminmenu.html");
} else {
header("location:usermenu.html");
}
。
blur
答案 2 :(得分:0)
这是因为不是将其分配给$ _SESSSION ['Permision']管理值,而是将其分配给if语句。然后在if语句中,将检查“ admin” == true(在这种情况下为true)。
避免这种情况的最简单方法是将YODA Expressions与三元运算符配合使用,从而简化了代码
sudo supervisorctl reread
sudo service supervisord reload
与下面的代码相同(就结果而言)
echo "Creating config files..."
rm /etc/supervisor/supervisord.conf && \
dd of=/etc/supervisor/supervisord.conf << EOF
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
[supervisord]
logfile=/dev/stdout ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)
user=root ;
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /code/artisan queue:work --sleep=3 --tries=3
autostart=true
autorestart=true
user=root
numprocs=8
redirect_stderr=true
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
EOF
echo "Starting queue..."
exec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
还请注意isset()函数的存在,该函数会检查会话数组中是否存在权限,因为如果不选中它,则会通知不存在的索引