Home Backend Development PHP Tutorial Input validation using filter function in php

Input validation using filter function in php

Jul 25, 2016 am 09:10 AM

  1. if (isset($_GET["value"])) {
  2. $value = $_GET["value"];
  3. }
  4. else {
  5. $value = false;
  6. }
  7. if (is_numeric($value) && ($value >= 15 && $value <= 20)) {
  8. // run my code
  9. }
  10. else {
  11. // handle the issue
  12. }
Copy code

This is a very basic example, we have written more lines that I would like to see. First, since we can't determine what $_GET is set to, the code performs the appropriate checks so that the script doesn't tip over. Second is the fact that the USD value is now a "dirty" variable because it has been specified directly from the $_GET value. We need to take care not to use the dollar value elsewhere in the code in case we break anything. Then there is the problem that the 16.0 is_numeric() function is valid because of various modal particles. Finally, we have to deal with the fact that if the statement is taken out of a mouth, there is an extra bit of logic passed through when you work through code tracing. Now compare the above example:

  1. $value = filter_input(INPUT_GET, "value", FILTER_VALIDATE_INT,
  2. array("options" => array("min_range" => 15, "max_range" => 20 )));
  3. if ($value) {
  4. // run my code
  5. }
  6. else {
  7. // handle the issue
  8. }
Copying the code

doesn’t make you feel warm and fuzzy? The $_GET value handled by filter_input() is not set, so you don't have to stress whether the script is receiving the correct information, or not. You also don't have to worry about the dollar value being dirty because it has been verified before it has been assigned. Note that the current version 16.0 is no longer valid. Finally, our logic is no longer complicated. This is just a quick check for truthy values ​​(filter_input() will return false if validation fails and null if $_GET["value"] is not set. Obviously, in a real world setting, you could extract the array of variables stored in the configuration file somewhere so that you could get something to change without even having to get into the business logic. gorgeous! Now, you might be thinking that it might be useful to grab a couple of $_GET or $_POST variables in a simple script, but what about using a function or class internally? Fortunately, we have filter_var(). The filter_var() function was introduced to do the same thing as filter_input().

  1. //This is an example function, it would be stupid not to use this to actually email,

  2. //

  3. function emailUser($email) {
  4. mail($email, "Here is my email", "Some Content");
  5. }

Copy code

The danger here is, is there any When trying to send an email, literally any value can be stored in the stopmail() function $email. This could result in an email being unable to be sent, or something getting malicious functionality that could, in the worst case scenario, be used. What I've seen people do is check the result of mail() , which is nice to see if the function completes successfully, but what harms it is the time value returned. Something like this is much more sane:

  1. // This is a sample function, do not use this to actually email,
  2. // that would be silly.
  3. function emailUser($email) {
  4. $email = filter_var($ email, FILTER_VALIDATE_EMAIL);
  5. if ($email !== false) {
  6. mail($email, "Here is my email", "Some Content");
  7. }
  8. else {
  9. // handle the issue invalid email address
  10. }
  11. }
Copy code

A lot of examples are used, including the above questions, they are basic. You might be thinking that filter_var() or filter_input() cannot be used for anything other than basic checking. And allows you to pass in a filter to these functions called FILTER_CALLBACK. FILTER_CALLBACK allows you to pass in the variables you create that will accept the variables being filtered - this is where you can start, because to have a lot of fun, you can start applying your own business logic to your filtering. some potential pitfalls These features are really great and they let you do some really powerful filtering that we've discussed that can help improve the security and reliability of your code. But there are some potential drawbacks, and I'd feel remiss if I didn't point them out. The main flaw is that as long as your filter is applied to its function. One final example, using email validation - how to handle email addresses changing between 5.2.14 and 5.3.3 FILTER_VALIDATE_EMAIL, even assuming all applications running the same version of PHP have email addresses that are technically valid, You probably don't want to. Make sure you know which filter you are using. The second pitfall is that people think that if they put in some filters then their code is safe. Filtered variables go some help, but it won't make your code 100% safe from abuse. I'd love to talk about this, but it's beyond the scope of this article and my word count is already quite high! Summarize: I think you make one function and only one in your code and see what happens when you pass in different data types and different values. Then, I'd like you to apply some of the filtering methods discussed here and see if there are differences in how your code performs. I'd love to know what you think about your comments.



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 AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

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)

Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Explain JSON Web Tokens (JWT) and their use case in PHP APIs. Apr 05, 2025 am 12:04 AM

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

Describe the SOLID principles and how they apply to PHP development. Describe the SOLID principles and how they apply to PHP development. Apr 03, 2025 am 12:04 AM

The application of SOLID principle in PHP development includes: 1. Single responsibility principle (SRP): Each class is responsible for only one function. 2. Open and close principle (OCP): Changes are achieved through extension rather than modification. 3. Lisch's Substitution Principle (LSP): Subclasses can replace base classes without affecting program accuracy. 4. Interface isolation principle (ISP): Use fine-grained interfaces to avoid dependencies and unused methods. 5. Dependency inversion principle (DIP): High and low-level modules rely on abstraction and are implemented through dependency injection.

How to automatically set permissions of unixsocket after system restart? How to automatically set permissions of unixsocket after system restart? Mar 31, 2025 pm 11:54 PM

How to automatically set the permissions of unixsocket after the system restarts. Every time the system restarts, we need to execute the following command to modify the permissions of unixsocket: sudo...

How to debug CLI mode in PHPStorm? How to debug CLI mode in PHPStorm? Apr 01, 2025 pm 02:57 PM

How to debug CLI mode in PHPStorm? When developing with PHPStorm, sometimes we need to debug PHP in command line interface (CLI) mode...

Explain the concept of late static binding in PHP. Explain the concept of late static binding in PHP. Mar 21, 2025 pm 01:33 PM

Article discusses late static binding (LSB) in PHP, introduced in PHP 5.3, allowing runtime resolution of static method calls for more flexible inheritance.Main issue: LSB vs. traditional polymorphism; LSB's practical applications and potential perfo

How to send a POST request containing JSON data using PHP's cURL library? How to send a POST request containing JSON data using PHP's cURL library? Apr 01, 2025 pm 03:12 PM

Sending JSON data using PHP's cURL library In PHP development, it is often necessary to interact with external APIs. One of the common ways is to use cURL library to send POST�...

Explain late static binding in PHP (static::). Explain late static binding in PHP (static::). Apr 03, 2025 am 12:04 AM

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

See all articles