viham/php-db-auth

PHP 数据库表字段中查找用户的库

v2.7.1 2022-03-13 23:01 UTC

This package is auto-updated.

Last update: 2024-09-14 04:39:34 UTC


README

版本2.7.1
变更https://bitbucket.org/viharm/phpdbauth/commits
下载https://bitbucket.org/viharm/phpdbauth/downloads
问题https://bitbucket.org/viharm/phpdbauth/issues
许可证修改版BSD(3条款)
语言PHP

phpDBauth 是一个 PHP 库,用于在数据库表字段中查找用户。如果提供了正确的参数,它将返回一个布尔值。如果未找到用户,则将用户添加到同一个数据库表字段中;并将指定默认角色应用于同一表中的指定角色列。还可以可选地添加用户的附加详细信息(如姓名、电子邮件等)到数据库中。

安装

先决条件

  • PHP 5+,支持 MySQL(可以是 PDOmysqlimysql
  • 标准 Web 框架(Web 服务器等)
  • 数据库服务器(目前仅支持 MySQL)

下载

存档

从本页顶部提供的下载链接获取发布存档。

Composer

从 v2.5.0 版本开始,phpDBauth 支持 Composer,并在 Packagist 上作为 viharm/php-db-auth 提供。您可以单独安装它或将它作为依赖项包含在您的项目中。

单独安装

php compser.phar create-project viharm/php-db-auth phpDBauth

上述命令将在当前工作目录的子目录 phpDBauth 中安装 phpDBauth

依赖项

要使 Composer 自动将 phpDBauth 作为依赖项安装,请将以下内容包含在您的 composer.json

{
	"require": {
    "viharm/php-db-auth": "^2.5.0"
	}
}

如果您希望将此依赖项安装到自定义目录,请将以下内容包含在您的 composer.json

{
	"require": {
    "php": ">=5.3.0",
    "mnsami/composer-custom-directory-installer": "1.1.*",
    "viharm/php-db-auth": "^2.5.0"
	},
 "config": {
    "vendor-dir": "Lib"
  },
  "extra": {
    "installer-paths": {
      "./Lib/php-db-auth": ["viharm/php-db-auth"]
    }
}

在上面的示例中,使用 mnsamiComposer Custom Directory Installer 来自定义安装路径。

* `Lib` is the sub-directory for plugins
* `./Lib/phpDBauth` is the install path for *phpDBauth*, relative to your project directory (`composer.json` location)

克隆

克隆仓库。

git clone --recurse-submodules \
https://viharm@bitbucket.org/viharm/phpdbauth.git

请记住递归地克隆(使用 --recurse-submodules),以确保克隆子模块。

部署

将存档的内容解压缩到所需的目录中。您应该有如下所示的目录结构

  • <APPLICATION>/db/README.md
  • <APPLICATION>/db/LICENSE.txt
  • <APPLICATION>/db/VERSION.txt
  • <APPLICATION>/db/phpdbauth.php
  • <APPLICATION>/db/example.php
  • <APPLICATION>/db/Lib/
  • <APPLICATION>/db/Lib/phpKhelper/
  • <APPLICATION>/db/Lib/phpKhelper/phpKhelper.lib.inc.php
  • <APPLICATION>/db/Lib/phpKhelper/...

用法

此库需要精确的参数集,作为关联数组提供,才能正常工作。

附带的 example.php 文件演示了基本功能。详细信息在本节中提供。

通过传递正确的参数/数组到核心函数使用此库

$LookupResult = fn__Database_Verify (
  $Request ,
  $Table ,
  $MysqlExtension ,
  $Database ,
  $Database_Connection ,
  $UserDetails
) ;

此函数可以利用现有的数据库连接($Database_Connection),或者可以选择连接到数据库($Database)。

输入参数/参数

请求

搜索请求打包在一个字符串的 'Request' 关联数组中,如下所示。

$Request = array (
  'ky_UserKeyword' => 'username' ,
  'ky_UserPassword' => 'password' ,
  'ky_GroupKeyword' => 'usersgroup' ,
) ;
用户名

$Request['ky_UserKeyword'] 指定了要查找的用户名。

此字段是必需的。

密码

$Request['ky_UserPassword'] 是一个密码字段,用于与其他脚本兼容。

此字段不是脚本所需的,将在未来的版本中删除。

建议提供 NULL 值。

$Request['ky_GroupKeyword'] 是一个组字段,用于与其他脚本兼容。

此字段不是脚本所需的,将在未来的版本中删除。

建议提供 NULL 值。

表格设置

用户表的信息汇总在一个单独的关联数组中,如下所示。

$Table = array (
  "key__Table_Name"             => "Users" ,
  "key__Table_ColumnUsername"   => "Username" ,
  "key__Table_ColumnRole"       => "Role" ,
  "key__Table_DefaultRoleValue" => "READ ONLY"
) ;

键名必须与上面指定的一模一样。

表名

此参数指定了在指定数据库中存储用户信息的表的名称。

$Table['key__Table_Name'] = 'Users' ;

在上面的示例中,表 Users 在数据库中存储用户信息。

此参数是必需的,没有默认值。

用户名列

此参数定义了在用户表中查找用户名所在的列/字段名称。

$Table['key__Table_ColumnUsername'] = 'Username' ;

在上面的示例中,列/字段 Username 在数据库的用户表中存储用户名。

此参数是必需的,没有默认值。

角色列

此参数定义了在添加新用户时存储默认角色的列/字段名称。

$Table['key__Table_ColumnRole'] = 'Role' ;

在上面的示例中,列/字段 Role 在数据库的用户表中存储角色。

此参数是必需的,没有默认值。

默认角色

此参数定义了在添加新用户时应用的默认角色。

$Table['key__Table_DefaultRoleValue'] = 'READ ONLY' ;

在上面的示例中,将角色 只读 应用到数据库用户表中添加的新用户。

此参数是必需的,没有默认值。

MySQL 扩展类型

此参数定义了与数据库交互时要使用的数据库扩展类型。

注意:如果向 phpDBauth 提供了现有的数据库连接对象,则必须在此处指定用于建立连接的驱动程序。

pdo-mysql
$MysqlExtension = 'pdo-mysql' ;

使用 PHP PDO 扩展与 MySQL 数据库交互。

mysqli
$MysqlExtension = 'mysqli' ;

使用 PHP mysqli 扩展与 MySQL 数据库交互。

mysql
$MysqlExtension = 'mysql' ;

使用 PHP mysql 扩展与 MySQL 数据库交互。

数据库参数

在不存在到数据库的现有连接对象的情况下,此数组用于将数据库连接信息传递给 phpDBauth,以便建立到数据库的新连接。

$Database = array (
  "key__Database_Host"     => "localhost" ,
  "key__Database_Port"     => 3306 ,
  "key__Database_Name"     => "databasename" ,
  "key__Database_User"     => "databaseusername" ,
  "key__Database_Password" => "databasepassword" ,
) ;

如果向 phpDBauth 提供了连接对象($Database_Connection),则数据库连接信息($Database)将被忽略,以避免需要建立到数据库的新连接。

如果向 phpDBauth 提供了连接详情,它将在身份验证任务完成后尝试优雅地关闭数据库连接。

必须提供此参数(数据库连接信息)或数据库连接对象($Database_Connection)。此参数的默认值为 NULL

数据库连接

在存在数据库连接对象的场景中,可以将其作为 $Database_Connection 传递给 phpDBauth

这为调用 phpDBauth 的脚本提供了在调用 phpDBauth 之前建立数据库连接的选项。这也在调用脚本对同一数据库执行其他操作且具有可用的打开连接对象的情况下很有用,从而避免了需要为身份验证而进行额外的数据库连接。

$Database_Connection = $ExistingDb->Connection();

如果向 phpDBauth 提供了连接对象($Database_Connection),则数据库连接信息($Database)将被忽略,以避免需要建立到数据库的新连接。

如果向 phpDBauth 提供了连接对象,它将在身份验证任务完成后保持数据库连接打开。这是因为它假设调用脚本执行其他操作并需要保持数据库连接打开。

注意:如果使用此选项,则打开脚本负责关闭数据库连接。

以下是一个使用 mysqli PHP 驱动程序建立到数据库连接的示例。

$ExistingDb->Connection = mysqli_connect (
  $Database [ "key__Database_Host" ] ,
  $Database [ "key__Database_User" ] ,
  $Database [ "key__Database_Password"] ,
  $Database [ "key__Database_Name" ] ,
  $Database [ "key__Database_Port" ]
) ;

必须提供此参数(数据库连接对象)或数据库连接信息($Database)。此参数的默认值为 NULL

用户详情

phpDBauth 提供了将用户详情添加到数据库的选项。这可以通过提供数据库列/字段和值的数组来完成,如下所示。

$ag_InsertVal = array (
  "UserFullname"  => "Anthony Stevens" ,
  "UserEmail" => "tony.s@domain.tld"
  ) ;

在上述示例中,数据库用户表中 UserFullnameUserEmail 列分别更新为 Anthony Stevenstony.s@domain.tld。如果用户正在被添加,则这些详细信息将连同用户名和角色一起存储在表中。如果用户已存在于表中,则这些详细信息将被更新。

如果此参数不是一个包含至少一个元素的数组,则它将被忽略。

此参数是可选的,默认值为 NULL

响应

核心函数返回一个包含三个布尔元素的关联数组。

$Result = array (
  "key__Database_Connection" => FALSE ,
  "key__Database_UserFound"  => FALSE ,
  "key__Database_UserAdded"  => FALSE ,
  "key_Database_DetailAdded" => FALSE
) ;

数据库连接结果

$Result['key__Database_Connection'] 在数据库连接(如果需要)成功时设置为 TRUE

用户查找

$Result['key__Database_UserFound'] 如果请求的用户在指定的数据库表字段中找到,则设置为 TRUE

用户添加

$Result['key__Database_UserAdded'] 如果在找不到用户后,请求的用户被添加到指定的数据库表字段,则设置为 TRUE

用户详细信息添加

$Result['key_Database_DetailAdded'] 如果用户的详细信息被添加到指定的数据库表字段,则设置为 TRUE

已知限制

有关当前已知限制的完整列表,请参阅

支持

可以通过将布尔变量 $GLOBALS['bl_DebugSwitch'] 设置为 TRUE 来启用调试。

$GLOBALS['bl_DebugSwitch'] = TRUE ;

有关问题、查询、建议和评论,请创建一个问题(位于本页顶部)。

贡献

请随意克隆/分叉并通过拉取请求进行贡献。也欢迎比特币捐赠,地址为 1MtGwgawfGjJc4Ln7KA7Re6mJrAo6pGfjm

如需更多信息,请联系。

开发环境

已知兼容的平台和软件堆栈

  • 服务器操作系统
    • Debian 7 Wheezy
    • Debian 8 Jessie
    • Debian 9 Stretch
    • Debian 10 Buster
    • Ubuntu 14.04
    • Ubuntu 16.04
    • Ubuntu 18.04
  • 客户端操作系统
    • Debian Wheezy
    • Debian Jessie
    • Debian Stretch
    • Ubuntu 14.04
    • Ubuntu 16.04
    • Ubuntu 18.04
    • Ubuntu 20.04
    • Windows 7
    • Windows 10
  • Web服务器
    • Apache 2.2
    • Apache 2.4
    • Nginx 1.10.3
    • Nginx 1.14
  • PHP
    • 5.4
    • 5.5
    • 5.6
    • 7.0
    • 7.3
  • MySQL
    • 5.4
    • 5.5
  • MariaDB
    • 10.3

许可证

根据修改后的BSD(3条款)许可证授权。

许可证的副本可在...

致谢

工具

Kint

Kint 调试库 (https://kint-php.github.io/kint/)。根据MIT许可证授权

版权 (c) 2013 Jonathan Vollebregt (jnvsor@gmail.com), Rokas Šleinius (raveren@gmail.com)

实用工具

Codiad

Codiad 基于Web的IDE (https://github.com/Codiad/Codiad)。根据MIT样式的许可证授权。

版权 (c) Codiad & Kent Safranski (codiad.com)

CodeGit

CodeGitCodiadGit 插件,使用MIT风格的许可证。

版权 (c) Andr3as andranode@gmail.com

Ungit

UngitGit 的客户端,根据MIT许可证使用。

版权 (C) Fredrik Norén

SmartGit

SmartGitGit 的客户端,根据SOFTWARE非商业许可证使用。

版权所有 syntevo GmbH

Git Extensions

Git Extensions客户端用于Git (https://gitextensions.github.io/),在GNU GPL v3下使用。

版权所有 https://github.com/gitextensions

jEdit

jEdit文本编辑器 (http://www.jedit.org/),在GNU GPL v2下使用。

版权 (C) jEdit作者。

Kate

文本编辑器,在GNU Lesser General Public Licence版本2下使用。

版权 (c) 2000-2019 The Kate Authors

BitBucket

BitBucket代码仓库托管 (www.bitbucket.org)。

Atlassian提供支持 (www.atlassian.com)。

Composer

依赖管理由Composer提供 (https://getcomposer.org.cn)。

Packagist

Composer包托管由Packagist提供 (https://packagist.org.cn)。

测试

  • Radoslav Chovan
  • David Gleba(MySQL驱动检测/选择)