phpmyadmin的四种登录认证模式
phpmyadmin是一款强大的mysql可视化web管理工具,使用php编写,非常好用,那么他有四种登录方式,分别是http、COOKIE、config、signon,那么他们有什么不同呢?我们来了解一下。
一、http
这个方式与COOKIE有点类似,只不过他使用了类似于Basic认证的方式弹出输入账号和密码窗口。配置方式如下:
<?php $cfg['Servers'][$i]['auth_type'] = 'http';
二、COOKIE
COOKIE模式会显示登录页面,输入数据库账号密码才能管理数据库。配置方式如下:
<?php $cfg['Servers'][$i]['auth_type'] = 'COOKIE'
三、config
config认证是在配置文件中直接写好访问数据库的用户名和密码,访问者可以直接访问到数据库,无需再输入账号密码,这个也是不安全的。设置方式如下:<?php $cfg['Servers'][$i]['auth_type'] = 'config'; /* Server parameters */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['user'] = 'root'; $cfg['Servers'][$i]['password'] ='234567';
四、signon
第三方登录实现了通过第三方的编写的代码实现同步单点登录数据库,这个在isp或多用户多数据库使用phpmyadmin的场景中使用比较多。他的配置也很简单,只需要设置auth_type为signon,另外配置SignonSession、SignonURL、LogoutURL这三个参数,SignonSession代表第三方登录的session名称,SignonURL代表第三方登录的登录地址,LogoutURL代表第三方登录的登出地址url。
<?php /* Authentication type */ $cfg['Servers'][$i]['auth_type'] = 'signon'; /* Server parameters */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['AllowNoPassword'] = false; $cfg['Servers'][$i]['SignonURL'] = "login.php"; $cfg['Servers'][$i]['LogoutURL'] = "loginout.php"; $cfg['Servers'][$i]['SignonSession'] = "SignonSession";我们写一个第三方登录的示例代码。
首先是login.php
<?php session_set_COOKIE_params(0, '/', '', true, true); session_name('SignonSession'); session_start(); $_SESSION['PMA_single_signon_user'] = 'root'; $_SESSION['PMA_single_signon_password'] = 'ROOTPASSWORDHERE'; $_SESSION['PMA_single_signon_host'] = 'localhost'; session_write_close(); if( !isset($_GET[server])){ header('Location: index.php?server=1'); } ?>然后是登出loginout.php
<?php session_set_COOKIE_params(0, '/', '', true, true); /* Create signon session */ $session_name = 'SignonSession'; session_name($session_name); // Uncomment and change the following line to match your $cfg['SessionSavePath'] //session_save_path('/foobar'); //开启 Session session_start(); // 删除所有 Session 变量 $_SESSION = array(); //判断 COOKIE 中是否保存 Session ID if(isset($_COOKIE[session_name()])){ setCOOKIE(session_name(),'',time()-3600, '/'); } //彻底销毁 Session session_destroy(); ?>
网友评论0