Home > Backend Development > PHP Tutorial > Some technical details that are easy to forget when developing PHP, PHP development details_PHP tutorial

Some technical details that are easy to forget when developing PHP, PHP development details_PHP tutorial

WBOY
Release: 2016-07-12 08:59:35
Original
962 people have browsed it

Some technical details that are easy to forget when developing PHP. PHP development details

When doing development, it is possible to forget some technical details. These details may cause serious consequences, such as website injection, website crash, etc. Now let’s summarize some of the “traps” in PHP that you may encounter.

Trap 1: empty()

<&#63;php
//以下代码会直接导致PHP解析错误
$arr1 = [1, 2, 3];
$arr2 = [3, 4];
if(empty(array_diff($arr1, $arr2))) { //解析错误
  echo 'empty';
} else {
  echo 'not empty';
}
Copy after login

The latest official website manual has special instructions on this:

Note:

在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。
Copy after login

In other words, the following code will not take effect: empty(trim($name)). As an alternative, trim($name) == false.
should be used The last time I encountered this error was when I was developing with Phalcon. The server kept reporting a 503 error. It was baffling at first. After eliminating it line by line, it was caused by the incorrect usage of empty. Of course, since PHP 5.5, empty has supported this writing method.

Trap 2: in_array()

<&#63;php
//判断数组里是否存在用户所提交的用户 ID
//$post_dirty_id = '1092';
$post_dirty_id = '1092 ORDER BY #1';
$safe_arr = [
  987 => '小明',
  1092 => '汤姆',
  1256 => '奥立升'
];
if(in_array($post_dirty_id, array_keys($safe_arr))) {
  echo 'find me';
} else {
  echo 'do not find me';
}
//输出结果:find me,此结果明显错误
Copy after login

I discovered this problem because the website was injected with SQL. Fortunately, it was discovered during testing and there were no serious consequences.

Regarding the use of the in_array() function, there are other things worthy of our attention. In the PHP manual, there are a large number of examples provided by netizens to illustrate the "weird" behavior of this function, such as:

<&#63;php
 $a = ['a', 32, true, 'x' => 'y'];
 var_dump(in_array(25, $a)); // true, one would expect false
 var_dump(in_array('ggg', $a)); // true, one would expect false
 var_dump(in_array(0, $a)); // true
 var_dump(in_array(null, $a)); // false
Copy after login

For the sake of safety, it is recommended to use the following method to judge:

<&#63;php
//判断数组里是否存在用户提交的 ID
//$post_dirty_id = '1092';
$post_dirty_id = '1092 ORDER BY #1';
$safe_arr = [
  987 => '小明',
  1092 => '汤姆',
  1256 => '奥立升'
];
if(isset($safe_arr[$post_dirty_id])) {
  echo 'find me';
} else {
  echo 'do not find me';
}
//输出结果:do not find me,这是正确的结果

Copy after login

Articles you may be interested in:

  • php in_array function usage instructions and in_array instructions for what you need to pay attention to
  • Detailed explanation of the difference between PHP isset() and empty()
  • php empty, isset, is_null judgment comparison (difference and similarity)
  • php array function sequence in_array() finds whether the array value exists
  • php empty() checks a variable Whether it is empty
  • php warning Creating default object from empty value Solution to the problem
  • php array search function in_array(), array_search(), array_key_exists() usage examples
  • Detailed explanation of usage of ThinkPHP template judgment output Empty tag

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1098687.htmlTechArticleSome technical details that are easy to forget when developing PHP. PHP development details may be forgotten when developing. Some technical details. These details may have serious consequences, than...
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template