Table of Contents
Some technical details that are easy to forget when developing PHP. PHP development details
Articles you may be interested in:
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

Jul 12, 2016 am 08:59 AM
array empty in php

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()

<?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()

<?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:

<?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:

<?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...
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

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installation and Upgrade guide for Ubuntu and Debian

CakePHP Date and Time CakePHP Date and Time Sep 10, 2024 pm 05:27 PM

CakePHP Date and Time

CakePHP File upload CakePHP File upload Sep 10, 2024 pm 05:27 PM

CakePHP File upload

CakePHP Routing CakePHP Routing Sep 10, 2024 pm 05:25 PM

CakePHP Routing

CakePHP Project Configuration CakePHP Project Configuration Sep 10, 2024 pm 05:25 PM

CakePHP Project Configuration

Discuss CakePHP Discuss CakePHP Sep 10, 2024 pm 05:28 PM

Discuss CakePHP

CakePHP Quick Guide CakePHP Quick Guide Sep 10, 2024 pm 05:27 PM

CakePHP Quick Guide

How To Set Up Visual Studio Code (VS Code) for PHP Development How To Set Up Visual Studio Code (VS Code) for PHP Development Dec 20, 2024 am 11:31 AM

How To Set Up Visual Studio Code (VS Code) for PHP Development

See all articles