Use of PHP set_error_handler() function_PHP tutorial
When we write programs, there will inevitably be problems (problems are often encountered), and when PHP encounters an error, it will give the location, line number and reason of the error script. A lot of people say it's not a big deal. Indeed, in the debugging phase, this really doesn't matter, and I think giving the error path is necessary.
But the consequences of leaking the actual path are unimaginable. For some intruders, this information is very important. In fact, many servers now have this problem. Some network administrators simply set display_errors in the PHP configuration file to Off to solve the problem (it seems like we did this), but I think this method is too negative.
Sometimes, we really need PHP to return error information for debugging. And when something goes wrong, you may also need to give the user an explanation or even navigate to another page.
So, what’s the solution?
set_error_handler()
PHP has provided the function set_error_handler() to customize error handling handles since 4.1.0, but few script writers know about it. The set_error_handler function can prevent error paths from being leaked, and of course has other functions.
- can be used to mask errors. If an error occurs, some information will be exposed to users, and it is very likely to become a tool for hackers to attack your website. Second, it makes users feel that your level is very low.
- You can write down error information and discover some problems in the production environment in time.
- Corresponding processing can be done. When an error occurs, a jump to a predefined error page can be displayed to provide a better user experience.
- It can be used as a debugging tool. Sometimes you have to debug something in the production environment, but you don’t want to affect the users who are using it.
- . . . .
The usage of set_error_handler is as follows:
1 |
|
Now we use custom error handling to filter out the actual paths. Suppose there is a variable $admin, which we use to determine whether the visitor is an administrator (this determination can be made by IP or logged in user ID)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
In this way, an error handling function is customized, so how to hand over error handling to this custom function?
1 2 3 4 5 |
|
So easy, in this way, the contradiction between security and debugging convenience can be well solved. And you can also put some thought into making the error message more beautiful to match the style of the website.
The original author gave two points that need attention. I will also post them, hoping to attract the attention of our compatriots:
- E_ERROR, E_PARSE, E_CORE_ERROR, E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING will not be processed by this handle, that is, they will be displayed in the most original way. However, these errors are caused by compilation or PHP kernel errors and will not occur under normal circumstances.
- After using set_error_handler(), error_reporting () will be invalid. That is, all errors (except the above errors) will be handed over to the custom function for processing.
Finally, the original author gave another example (he is such a serious and responsible person.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
|
Okay, to summarize, here are three uses of set_error_handler:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
|

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How to solve MySQL error: The number of columns does not match the value. Specific code examples are needed. When using the MySQL database for data operations, sometimes you will encounter the error message: "Columncountdoesn'tmatchvaluecountatrow1", which means that the number of columns does not match the number of values. match. This error usually occurs when inserting data and the number of columns specified is inconsistent with the number of values inserted. This article describes specific workarounds and provides code examples. examine

The solutions to mysql error 10060 include checking whether the MySQL server is running normally, checking the network connection, checking the firewall settings, checking the MySQL server configuration, checking the MySQL user permissions, checking the network configuration, checking the maximum number of connections limit of the MySQL server, and using the IP address instead of the host. Name and restart the MySQL server, etc. Detailed introduction: 1. Check whether the MySQL server is running normally. First, make sure the MySQL server is running and listening to the correct port, etc.

How to solve MySQL error: Wrong table definition; there can only be one automatic column and it must be defined as a key. Specific code examples are required. In recent years, MySQL database has become more and more widely used, but during use, we often encounter Various error reports. Among them, a common error is "wrong table definition; there can only be one automatic column and it must be defined as a key". This error usually occurs when we create a table, which may be a headache for beginners. This article will give you a detailed analysis of the reasons for this error and provide specific

Brief introduction to the reason for the http request error: 504GatewayTimeout: During network communication, the client interacts with the server by sending HTTP requests. However, sometimes we may encounter some error messages during the process of sending the request. One of them is the 504GatewayTimeout error. This article will explore the causes and solutions to this error. What is the 504GatewayTimeout error? GatewayTimeo

http request error: Solution to SocketError When making network requests, we often encounter various errors. One of the common problems is SocketError. This error is thrown when our application cannot establish a connection with the server. In this article, we will discuss some common causes and solutions of SocketError. First, we need to understand what Socket is. Socket is a communication protocol that allows applications to

If you are learning Python and want to develop GUI applications, PyQt5 is a very good choice. It is a bound version of the PyQt library under Python, which makes it very convenient to call and develop the Qt graphics library. However, sometimes you may encounter some problems when installing PyQt5. This guide will provide you with some steps to quickly solve installation error problems, and also attach specific code examples. Make sure the Python version is correct PyQt5 is a Python-based library, so first

Unknowncolumn'column_name'in'whereclause'-How to solve MySQL error: unknown column in where clause, specific code example is needed MySQL is a widely used relational database management system, which supports the use of Structured Query Language (SQL) Storage, management and retrieval of data. However, when using MySQL to query, sometimes we will encounter errors. One of the common errors is: Unkno

Errors are one of the problems that developers often encounter when writing MySQL query statements. One of the common errors is "Incorrectsyntaxnear 'error_keyword'" (Syntax error near 'error_keyword'). This error message is very common and means that there is a syntax error in the MySQL query statement. In this article, we'll detail how to solve this problem and provide some concrete code examples. First, let's look at
