小编tex*_*ate的帖子

PHP cURL:CURLOPT_CONNECTTIMEOUT与CURLOPT_TIMEOUT

PHP有两个与超时相关的选项:CURLOPT_CONNECTTIMEOUTCURLOPT_TIMEOUT.

PHP站点上的描述有点模糊.有什么不同?

要使用真实世界的示例:假设您通过cURL将GET变量发送到URL并且您希望接收XML,则CURLOPT_CONNECTTIMEOUT与连接到服务器CURLOPT_TIMEOUT所花费的最长时间和最长时间有关可以将XML发回去吗?

php curl

33
推荐指数
5
解决办法
5万
查看次数

PHP + MySQL:缓冲和非缓冲查询之间的区别

我总是觉得差异,简单来说,PHP/MySQL缓冲和无缓冲查询之间的区别是缓冲(默认)将所有数据加载到结果集变量中然后你可以开始使用它们而无缓冲加载一行一时间

假设你跑了SELECT * FROM sometable然后做了$result = $db->query($query);,$result将包含所有行和补充信息,如行数.因此,如果你在一个100MB的数据库上做到这一点,$result那么如果那里没有索引,你可能会占用大约100MB.

但是,我遇到了这个SO溢出问题部分,其中提到了缓冲查询:

[]结果将包含一些依赖于实现的行缓冲区.它可能是100行或更多或更少.每行返回所有列; 当您最终获取更多行时,客户端将向服务器请求更多行.这可能是在客户端耗尽或可能是先发制人的情况下.

这是对的,还有一些缓冲正在进行吗?如果是这种情况,在处理大型结果集时,我们通常不需要担心PHP内存不足吗?这很奇怪,因为我在40MB测试表上运行了一些测试缓冲查询,PHP总是报告大约5MB的峰值内存使用量.

最后,根据经验,你什么时候选择无缓冲的缓冲?你能举个例子吗?

谢谢.

(顺便说一句,我使用的是MySQLi.我认为校长是一样的).

编辑:我现在读了更多,更加困惑.在http://php.net/manual/en/mysqli.quickstart.statements.php上说

在After语句上,可以立即检索执行结果,以便客户端缓冲或逐行读取.客户端结果集缓冲允许服务器尽可能早地释放与语句结果相关联的资源.一般来说,客户端是慢速消耗结果集.因此,建议使用缓冲结果集.mysqli_query()结合了语句执行和结果集缓冲.

PHP应用程序可以通过缓冲结果自由导航.导航很快,因为结果集保存在客户端内存中.请记住,客户端扩展通常比扩展服务器更容易.

And on http://php.net/manual/en/mysqli-result.fetch-all.php it says:

As mysqli_fetch_all() returns all the rows as an array in a single step, it may consume more memory than some similar functions such as mysqli_fetch_array(), which only returns one row at a time from the result set. Further, if you need to iterate over …

php mysql

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

mysqli_real_escape_string如何阻止SQL注入?

首先,我得到了人们想要使用存储过程,以便他们重用查询并进行转义处理.但是,我看过许多开发人员说mysqli_real_escape_string不能100%阻止SQL注入.有人可以提供一个例子吗?

从我关于这个问题的知识有限,我会说,mysqli_real_escape_string永远被罚款字符串而是数值你可能会被抓出来,除非你核对一下电话号码是一个整数,浮点,双等.

编辑:我忘了添加一些关键的东西:假设字符集是UTF8并且相应地调用了mysqli_set_charset.我见过的唯一一次注射依赖于一些charsets(其中没有一个是UTF8).

php mysql mysqli

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

PHP的mb_internal_encoding实际上做了什么?

根据PHP网站,它执行此操作:

encoding是用于HTTP输入字符编码转换的字符编码名称,HTTP输出字符编码转换,以及由mbstring模块定义的字符串函数的默认字符编码.您应该注意到内部编码与多字节正则表达式完全不同.

有人可以用更简单的术语解释一下吗?

  1. HTTP输入字符编码转换
  2. HTTP输出字符编码转换
  3. 字符串函数的默认字符编码
  4. "内部编码与多字节正则表达式完全不同"是什么意思?

我的猜测是

  1. 表示GET和POST被视为该编码.
  2. 意味着它输出到该编码.
  3. 意味着它对所有多字节字符串函数使用该编码.
  4. 我不知道.为什么正则表达式与普通字符串函数不同?

如果第2点是正确的,您需要做:

ini_set('default_charset', 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,那就意味着:

mb_internal_encoding('UTF-8')
Run Code Online (Sandbox Code Playgroud)

你不需要这样做:

mb_strtolower($str, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)

只是:

mb_strtolower($str);
Run Code Online (Sandbox Code Playgroud)

我确实读过另一个SO帖子,mb_strtolower($ str)不应该被信任,你需要为每个多字节字符串函数设置编码.这是真的?

php string

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

CKEditor 中 allowedContent 和 extraAllowedContent 有什么区别?

在 CKEditor 中,配置中有allowedContent和选项。extraAllowedContent我知道如何allowedContent让您说出 ACF 将留下哪些标签和属性,但为什么会出现allowedContentextraAllowedContent?他们不做同样的事情吗?

我发现的一件事是,当想要允许 iframe 时,它​​似乎只有在输入 ; 时才iframe[*]有效extraAllowedContent。如果你把它放进去,它就不起作用allowedContent

为什么?有什么不同?

javascript ckeditor

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

使用哈希作为唯一ID是错误的吗?

我想在数据库表中使用PHP生成的唯一ID,该表可能永远不会超过10,000条记录.我不希望创建时间可见或使用纯数值,所以我使用:

sha1(uniqid(mt_rand(), true))
Run Code Online (Sandbox Code Playgroud)

使用哈希作为唯一ID是错误的吗?不是所有的哈希都会导致碰撞,或者是否有机会如此遥远以至于在这种情况下不应该考虑它们?

还有一点:如果要散列的字符数小于sha1散列中的字符数,它是否总是唯一的?

php hash

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

你应该使用准备好的陈述来逃避吗?

我看到很多人说你应该总是使用预准备语句进行数据库查询.但是,PHP文档说:

每个准备好的语句占用服务器资源.声明应在使用后立即明确关闭.如果没有显式完成,则在PHP释放语句句柄时将关闭该语句.

使用预准备语句并不总是执行语句的最有效方式.仅执行一次的预准备语句会导致客户端 - 服务器往返次数超过未准备好的语句.

来自http://php.net/manual/en/mysqli.quickstart.prepared-statements.php

鉴于上述情况,如果您只打算使用一次查询,那么最好不要使用预准备语句吗?

php mysql

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

PHP中的安全令牌需要Blowfish还记得我的系统吗?

我搜索了SO,我知道有很多"记住我"的问题,但我找不到一个专门用于生成安全令牌的Blowfish.

我正在实现一个登录系统,使用基于cookie的"记住我"功能,我读过的所有教程看起来都不安全(例如,根据时间只是一个未加盐的md5哈希)或者看起来过于复杂.

我不是为银行或类似的东西建立网站,而只是想要一个合理的安全级别.

我建议的系统是简单地为用户名创建一个128 char随机字符串,为登录令牌创建第二个128 char字符串.原始字符串将存储在cookie中,未加保证的sha1'd版本将存入数据库中其用户帐户的行中.

我想我甚至可以在每个页面加载时重新生成字符串.

对我来说这提供了不错的安全性(我认为!)因为:

  1. 黑客无法定位特定帐户但知道他们的用户名(他们需要知道128个字符串)
  2. 要伪造登录cookie并获得访问该帐户的人,必须猜测2 x 128个char字符串.
  3. 如果数据库被黑客攻击,那么为128个字符串创建彩虹表就太困难了.
  4. 只有将实际用户名存储在cookie中,我才能安全地记住用户名.

我的问题是:

  1. 这听起来相当安全吗?我应该使用超过128个字符的字符串吗?
  2. 是否值得使用Blowfish而不是sha1?(即我说对,彩虹表太难以制作?)
  3. 如果没有,运行sha1说1000次有什么好处吗?

非常感谢.

php hash

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

MySQL的FULLTEXT搜索是否为MyISAM和InnoDb返回相同的结果?

如果您拿着一张桌子,简单地将存储引擎引擎从MyISAM更改为InnoDb,是否都将WHERE MATCH (col1,col2,col3...) AGAINST (expr)返回与MyISAM下完全相同的结果?如果没有,有什么区别?

我的意思在全文搜索方面仅存在差异,仅此而已。这两个存储引擎显然还有其他巨大差异。

mysql full-text-search

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

标签 统计

php ×7

mysql ×4

hash ×2

ckeditor ×1

curl ×1

full-text-search ×1

javascript ×1

mysqli ×1

string ×1