小编Dar*_*nke的帖子

PHP用户身份验证和密码安全的最佳实践

在不使用CMS或繁重框架的情况下对用户进行身份验证的最佳库/方法有哪些?

响应应该包括您认为应该被视为涉及用户身份验证的新PHP开发标准的任何建议.

php authentication

48
推荐指数
7
解决办法
7万
查看次数

PHP Mysql跨数据库连接

假设我在同一台物理服务器上有两个独立的数据库,X和Y.

我的所有查询目前都用完X.

我发现我在YI中有一张桌子想要X可用于JOINS.

所以...现在我在X和Y中保留了X和Y所需的一个表的副本,但Y中的数据不断变化,因此副本很快就会过时.对于这个应用程序并不重要,但对于另一个我正在设计的现在,这是不会做的.

X现在只需要对Y中的表进行读访问.

是否有一种有效的方法来跨两个数据库进行连接?

我更喜欢一个mysql解决方案,而不是在php中打开多个数据库连接.

谢谢.

编辑:那么这些线路变成了什么?:

$conn = mysql_connect('localhost','username','password');
@mysql_select_db('database_name',$conn)
Run Code Online (Sandbox Code Playgroud)

是的..这是一个旧的应用程序,因此mysql而不是mysqli.假设我可以转换它.

编辑2:所以我没有指定database_name.table_name,只是指定table_name我得到任何选择,我指定database.table_name我得到我要求的...对吗?是的.作品.

编辑方式3:跨数据库连接与同一数据库中的连接相比,是否有重大的性能损失?不.看起来同样快.

谢谢大家的回复.

php mysql sql join

10
推荐指数
2
解决办法
1万
查看次数

使用auto_increment生成PHP短唯一ID?

我想生成一个简短的唯一ID,而不必检查冲突.

我目前做这样的事情,但我目前生成的ID是随机的,并且在循环中检查冲突是令人讨厌的,并且如果记录数量显着增加将会变得昂贵.

通常担心碰撞不是问题,但我想要生成的唯一ID是一个短的唯一字符串5-8个字符,字母数字,就像tinyurl一样.

编辑:我想从5个字符开始,如果我达到6000万条目,那么去6 ...等等.

为此,我想我可以使用对用户隐藏的auto_increment值,而是用一个MD5或其他方法来呈现它们以从中生成唯一的字符串.

生成的字符串看起来不应该是线性的,所以简单地将auto_incremented ID转换为base 36[0-9A-Z]有点过于简单了,但是这样的函数就是我要用的东西.

编辑:安全性不是问题,因为这不会用于保护信息.它只是更长字符串的快捷方式.谢谢.

感谢您的建议,抱歉延误.牙医..

php mysql unique auto-increment

7
推荐指数
1
解决办法
4826
查看次数

PHP MySQLi是否准备好绑定参数的查询安全?

从历史上看,我一直都在使用

mysql_real_escape_string()
Run Code Online (Sandbox Code Playgroud)

对于最终触及数据库的用户派生的所有输入.

现在我已经完全转换为MySQLi并且我正在使用带有绑定参数的准备查询,我是否有效地消除了SQL注入攻击的可能性?

我说我不再需要了

mysql_real_escape_string()?
Run Code Online (Sandbox Code Playgroud)

这是我的理解和我的项目的基础:http: //sourceforge.net/projects/mysqldoneright/files/Base/MysqlDoneRight-0.23.tar.gz/download

这不是我想弄错的事情,虽然现在我已经发布它,它也可能影响其他人.

现在,所有用户提供的输入都将以bind_parms结尾.
准备阶段提供的查询是静态的.

php mysqli prepared-statement

5
推荐指数
2
解决办法
2040
查看次数

Mysql GROUP BY和COUNT用于多个WHERE子句

简化表结构:

CREATE TABLE IF NOT EXISTS `hpa` (
  `id` bigint(15) NOT NULL auto_increment,
  `core` varchar(50) NOT NULL,
  `hostname` varchar(50) NOT NULL,
  `status` varchar(255) NOT NULL,
  `entered_date` int(11) NOT NULL,
  `active_date` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `hostname` (`hostname`),
  KEY `status` (`status`),
  KEY `entered_date` (`entered_date`),
  KEY `core` (`core`),
  KEY `active_date` (`active_date`)
)
Run Code Online (Sandbox Code Playgroud)

为此,我有以下SQL查询,它简单地总计了具有已定义状态的所有记录.

SELECT core,COUNT(hostname) AS hostname_count, MAX(active_date) AS last_active
          FROM `hpa`
          WHERE 
          status != 'OK' AND status != 'Repaired'
          GROUP BY core
          ORDER BY core
Run Code Online (Sandbox Code Playgroud)

此查询已简化为将INNER JOINS移除到不相关的数据和不应影响问题的额外列.

MAX(active_date)对于特定日期的所有记录都相同,应始终选择最近一天,或允许从NOW()偏移.(这是一个UNIXTIME字段)

我想要两个计数:(状态!='确定'和状态!='修复') …

php mysql group-by greatest-n-per-group

5
推荐指数
1
解决办法
3500
查看次数

vim undo仅限于某些主机上的一步

在我的一台开发机器上,我有无限的撤销,我可以抓住你,并在我打开文件时一直回到.

另一方面,按下你在我做的最后两个更改之间切换,不再.

我有管理员访问权限的第一台开发机器,vim安装程序可以免费使用.第二个我没有和vim必须安装在正常的OS路径之外,并且必须使用'Sendto'启动vim.也许这是相关的,我错过了一些rc命令.还注意到我必须运行'syn on'才能在该框上突出显示.vimrc也是空白所以现在我确定它与它有关.

从其他线程我不相信这与持久性撤销功能有关,而只是一个.swp或〜问题(无论这些文件用于什么......)

截止日期已经促使这可能是一个简单的问题.我该如何解决这个问题?

vim undo undo-redo

5
推荐指数
1
解决办法
1211
查看次数

Oracle GUIDTORAW和RAWTOGUID函数字节顺序

我的应用程序内部使用通过sys_guid()生成的RAW(16)guids.
最近我开始将我获得guid的Active Directory用户关联起来,格式为:00000000-0000-0000-0000-00000000000

以下两个函数是否正确执行此转换?

找到以下网站:

http://www.timvasil.com/blog14/post/2009/01/20/User-defined-function-to-convert-from-RAW(16)-to-a-GUID-in-Oracle.aspx

create or replace
FUNCTION RAWTOGUID
( RawData IN RAW
) RETURN VARCHAR AS

BEGIN

declare HexData varchar(32) := rawtohex(RawData);

begin
return
    substr(HexData, 7, 2) 
    || substr(HexData, 5, 2) 
    || substr(HexData, 3, 2) 
    || substr(HexData, 1, 2) 
    || '-'
    || substr(HexData, 11, 2) 
    || substr(HexData, 9, 2) 
    || '-'
    || substr(HexData, 15, 2) 
    || substr(HexData, 13, 2) 
    || '-'
    || substr(HexData, 17, 4) 
    || '-'
    || substr(HexData, 21, 12);
end;

END RAWTOGUID;
Run Code Online (Sandbox Code Playgroud)

添加以下站点:

http://dbaspot.com/oracle-server/69226-guid-char-conversion-function.html

想出了这个功能来反过来: …

.net oracle guid converter

5
推荐指数
1
解决办法
1690
查看次数

在perl模块中使用sigtrap,如何在对象上下文中收到回收的陷阱?

在我的模块的BEGIN部分中有以下内容:

use sigtrap qw(handler shutdown normal-signals);
use sigtrap qw(die untrapped normal-signals stack-trace any error-signals);
Run Code Online (Sandbox Code Playgroud)

但是当sigtrap捕获INT等时,我在关闭子中获得的内容只包含陷阱而不是对象句柄.没有$ self.

sub shutdown {
    my $sig = shift || 'Nothing';   
    print "Got signal: $sig\n";
    exit;
}
Run Code Online (Sandbox Code Playgroud)

简单地回来

Got signal: INT
Run Code Online (Sandbox Code Playgroud)

我的DESTROY在此之后正确调用并且可以访问对象句柄,但由于我在关机时无法访问句柄,因此我无法存储它并且不知道信号是什么.

我需要知道我得到了什么陷阱,所以我的DESTROY方法可以记录导致关闭的原因.

也许sigtrap不是这里的最佳选择.意见欢迎.

perl signals module

2
推荐指数
1
解决办法
2501
查看次数

单片PHP编码与小型专用PHP脚本相比有哪些优点/缺点?

我历来使用单片方法来编写PHP代码.

也就是说,我写了一个index.php,平均大小为70k-250k,并使用

mod_rewrite
Run Code Online (Sandbox Code Playgroud)

转过剩下的

REQUEST_URI 
Run Code Online (Sandbox Code Playgroud)

传入index.php的参数来控制发生的事情.

另一种方法是编写许多小的PHP脚本,每个脚本专门用于特定目的.我认为我的一些更活跃的ajax脚本可能会从中受益.

让我参与这个思考过程的一件事是我不知道如何使用包含,特别是条件包含会影响操作码缓存的性能.

如果可能的话,由于我对此的偏执,我一般完全避免包含,但这会导致重复代码或保持整体.

因为我无论如何都在使用mod_rewrite,所以在两种方法之间进行转换应该很简单.

我期待你的评论.

编辑:我的一个目标应用程序目前每秒处理80-100页点击(我得到了一些不错的硬件).其中大多数是ajax请求.一切正常,而且很快,但我已经发展成为一个没有批评的PHP程序员,需要它.

php optimization opcode-cache

1
推荐指数
1
解决办法
6312
查看次数