Deprecated: Creation of dynamic property wpdb::$categories is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$post2cat is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/wp-db.php on line 668

Deprecated: Creation of dynamic property wpdb::$link2cat is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/wp-db.php on line 668

Deprecated: Return type of WP_Theme::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-theme.php on line 554

Deprecated: Return type of WP_Theme::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-theme.php on line 595

Deprecated: Return type of WP_Theme::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-theme.php on line 535

Deprecated: Return type of WP_Theme::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-theme.php on line 544

Deprecated: Using ${var} in strings is deprecated, use {$var} instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/comment-template.php on line 1739

Deprecated: wp_getimagesize(): Implicitly marking parameter $image_info as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/media.php on line 5006

Deprecated: Return type of WP_REST_Request::offsetExists($offset) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/rest-api/class-wp-rest-request.php on line 960

Deprecated: Return type of WP_REST_Request::offsetGet($offset) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/rest-api/class-wp-rest-request.php on line 980

Deprecated: Return type of WP_REST_Request::offsetSet($offset, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/rest-api/class-wp-rest-request.php on line 992

Deprecated: Return type of WP_REST_Request::offsetUnset($offset) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/rest-api/class-wp-rest-request.php on line 1003

Deprecated: Return type of WP_Block_List::current() should either be compatible with Iterator::current(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 151

Deprecated: Return type of WP_Block_List::next() should either be compatible with Iterator::next(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 175

Deprecated: Return type of WP_Block_List::key() should either be compatible with Iterator::key(): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 164

Deprecated: Return type of WP_Block_List::valid() should either be compatible with Iterator::valid(): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 186

Deprecated: Return type of WP_Block_List::rewind() should either be compatible with Iterator::rewind(): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 138

Deprecated: Return type of WP_Block_List::offsetExists($index) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 75

Deprecated: Return type of WP_Block_List::offsetGet($index) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 89

Deprecated: Return type of WP_Block_List::offsetSet($index, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 110

Deprecated: Return type of WP_Block_List::offsetUnset($index) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 127

Deprecated: Return type of WP_Block_List::count() should either be compatible with Countable::count(): int, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-list.php on line 199

Deprecated: quickdocs\Quickdocs_Menus::render_metabox_dropdown(): Implicitly marking parameter $selected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/quickdocs/src/class-quickdocs-menus.php on line 154

Deprecated: YoastSEO_Vendor\GuzzleHttp\Promise\queue(): Implicitly marking parameter $assign as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/promises/src/functions.php on line 22

Deprecated: YoastSEO_Vendor\GuzzleHttp\Promise\each(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/promises/src/functions.php on line 304

Deprecated: YoastSEO_Vendor\GuzzleHttp\Promise\each(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/promises/src/functions.php on line 304

Deprecated: YoastSEO_Vendor\GuzzleHttp\Promise\each_limit(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/promises/src/functions.php on line 323

Deprecated: YoastSEO_Vendor\GuzzleHttp\Promise\each_limit(): Implicitly marking parameter $onRejected as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/promises/src/functions.php on line 323

Deprecated: YoastSEO_Vendor\GuzzleHttp\Promise\each_limit_all(): Implicitly marking parameter $onFulfilled as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/promises/src/functions.php on line 338

Deprecated: YoastSEO_Vendor\Symfony\Component\DependencyInjection\Container::__construct(): Implicitly marking parameter $parameterBag as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/vendor_prefixed/symfony/dependency-injection/Container.php on line 60

Deprecated: Creation of dynamic property Yoast\WP\SEO\Main::$helpers is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/lib/abstract-main.php on line 65

Deprecated: popbot\Popbot::__construct(): Implicitly marking parameter $blog_id as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-popbot.php on line 37

Deprecated: popbot\Popbot::create(): Optional parameter $title declared before required parameter $template is implicitly treated as a required parameter in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-popbot.php on line 559

Deprecated: Creation of dynamic property popbot\Admin_Page::$parent is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 19

Deprecated: Creation of dynamic property popbot\Admin_Page::$slug is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 24

Deprecated: Creation of dynamic property popbot\Admin_Page::$title is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 25

Deprecated: Creation of dynamic property popbot\Admin_Page::$hidden is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 26

Deprecated: Creation of dynamic property popbot\Admin_Page::$template is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 27

Deprecated: Creation of dynamic property popbot\Admin_Page::$capability is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 28

Deprecated: Creation of dynamic property popbot\Admin_Page::$icon is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 29

Deprecated: Creation of dynamic property popbot\Admin_Page::$redirect is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 30

Deprecated: Creation of dynamic property popbot\Admin_Page::$scripts is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 31

Deprecated: Creation of dynamic property popbot\Admin_Page::$styles is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 32

Deprecated: Creation of dynamic property popbot\Admin_Page::$parent is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 19

Deprecated: Creation of dynamic property popbot\Admin_Page::$slug is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 24

Deprecated: Creation of dynamic property popbot\Admin_Page::$title is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 25

Deprecated: Creation of dynamic property popbot\Admin_Page::$hidden is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 26

Deprecated: Creation of dynamic property popbot\Admin_Page::$template is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 27

Deprecated: Creation of dynamic property popbot\Admin_Page::$capability is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 28

Deprecated: Creation of dynamic property popbot\Admin_Page::$icon is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 29

Deprecated: Creation of dynamic property popbot\Admin_Page::$redirect is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 30

Deprecated: Creation of dynamic property popbot\Admin_Page::$scripts is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 31

Deprecated: Creation of dynamic property popbot\Admin_Page::$styles is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 32

Deprecated: Creation of dynamic property popbot\Admin_Page::$parent is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 19

Deprecated: Creation of dynamic property popbot\Admin_Page::$slug is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 24

Deprecated: Creation of dynamic property popbot\Admin_Page::$title is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 25

Deprecated: Creation of dynamic property popbot\Admin_Page::$hidden is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 26

Deprecated: Creation of dynamic property popbot\Admin_Page::$template is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 27

Deprecated: Creation of dynamic property popbot\Admin_Page::$capability is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 28

Deprecated: Creation of dynamic property popbot\Admin_Page::$icon is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 29

Deprecated: Creation of dynamic property popbot\Admin_Page::$redirect is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 30

Deprecated: Creation of dynamic property popbot\Admin_Page::$scripts is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 31

Deprecated: Creation of dynamic property popbot\Admin_Page::$styles is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 32

Deprecated: Creation of dynamic property popbot\Admin_Page::$parent is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 19

Deprecated: Creation of dynamic property popbot\Admin_Page::$slug is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 24

Deprecated: Creation of dynamic property popbot\Admin_Page::$title is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 25

Deprecated: Creation of dynamic property popbot\Admin_Page::$hidden is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 26

Deprecated: Creation of dynamic property popbot\Admin_Page::$template is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 27

Deprecated: Creation of dynamic property popbot\Admin_Page::$capability is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 28

Deprecated: Creation of dynamic property popbot\Admin_Page::$icon is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 29

Deprecated: Creation of dynamic property popbot\Admin_Page::$redirect is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 30

Deprecated: Creation of dynamic property popbot\Admin_Page::$scripts is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 31

Deprecated: Creation of dynamic property popbot\Admin_Page::$styles is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 32

Deprecated: Creation of dynamic property popbot\Admin_Page::$parent is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 19

Deprecated: Creation of dynamic property popbot\Admin_Page::$slug is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 24

Deprecated: Creation of dynamic property popbot\Admin_Page::$title is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 25

Deprecated: Creation of dynamic property popbot\Admin_Page::$hidden is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 26

Deprecated: Creation of dynamic property popbot\Admin_Page::$template is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 27

Deprecated: Creation of dynamic property popbot\Admin_Page::$capability is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 28

Deprecated: Creation of dynamic property popbot\Admin_Page::$icon is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 29

Deprecated: Creation of dynamic property popbot\Admin_Page::$redirect is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 30

Deprecated: Creation of dynamic property popbot\Admin_Page::$scripts is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 31

Deprecated: Creation of dynamic property popbot\Admin_Page::$styles is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/popbot/src/class-admin-page.php on line 32

Deprecated: WPSEO_Admin_Asset_Manager::__construct(): Implicitly marking parameter $asset_location as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/admin/class-admin-asset-manager.php on line 43

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated since 8.1, use htmlspecialchars() instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/src/conditionals/third-party/elementor-edit-conditional.php on line 22

Deprecated: Constant FILTER_SANITIZE_STRING is deprecated since 8.1, use htmlspecialchars() instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/src/conditionals/third-party/elementor-edit-conditional.php on line 28

Deprecated: WPSEO_Admin_Bar_Menu::__construct(): Implicitly marking parameter $asset_manager as nullable is deprecated, the explicit nullable type must be used instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-content/plugins/wordpress-seo/inc/class-wpseo-admin-bar-menu.php on line 62

Deprecated: Calling get_class() without arguments is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-http.php on line 328

Deprecated: Return type of Requests_Cookie_Jar::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Cookie/Jar.php on line 63

Deprecated: Return type of Requests_Cookie_Jar::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Cookie/Jar.php on line 73

Deprecated: Return type of Requests_Cookie_Jar::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Cookie/Jar.php on line 89

Deprecated: Return type of Requests_Cookie_Jar::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Cookie/Jar.php on line 102

Deprecated: Return type of Requests_Cookie_Jar::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Cookie/Jar.php on line 111

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetExists($key) should either be compatible with ArrayAccess::offsetExists(mixed $offset): bool, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 40

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetGet($key) should either be compatible with ArrayAccess::offsetGet(mixed $offset): mixed, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 51

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetSet($key, $value) should either be compatible with ArrayAccess::offsetSet(mixed $offset, mixed $value): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 68

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::offsetUnset($key) should either be compatible with ArrayAccess::offsetUnset(mixed $offset): void, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 82

Deprecated: Return type of Requests_Utility_CaseInsensitiveDictionary::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/Requests/Utility/CaseInsensitiveDictionary.php on line 91

Deprecated: Creation of dynamic property WP_Term::$object_id is deprecated in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-term.php on line 198
Tips for Stopping Website Hacks & Hacking: Preventing SQL Injections

Tips for Stopping Website Hacks & Hacking: Preventing SQL Injections


Deprecated: Using null as an array offset is deprecated, use an empty string instead in /var/www/vhosts/wrd.studio/httpdocs/blog/wp-includes/class-wp-block-type-registry.php on line 152

 

What is an SQL injection?

Hackers can target a website by adding SQL (Structured Query Language) into an application to make changes to the database. For example, an SQL statement that selects fields from a table could be manipulated by adding ‘DROP TABLE’ after the value. This would then delete the entire table. 

SQL injections can be used to view personal information such as passwords, delete entire tables and gaining access to the database by use of admin credentials.  

 

How to prevent a SQL injection?

Fortunately, an SQL Injection can be prevented by a ‘prepare’ statement. A prepare statement will send the program to the sever first and it will use a placeholder such as ‘?’ in its place.  

For example: $db->prepare(“SELECT * FROM  media where id=?”);  

The data of the placeholder gets sent separately to the query so the any user input is not treated as a SQL statement and therefore is not executed.  

 

When should you use a prepare statement?

Generally, any form of data that is touched by a user or that pulls data from a database, should use a prepared statement.  

This can include:  

  • Usernames 
  • Email addresses 
  • Passwords 
  • Search queries 
  • File uploading 

 

Using a prepare statement

We use a prepare keyword and the placeholder ‘?’ is used as a placeholder where the value will go. 

We then bind the values to the query using ‘bind_param’. This is also attached with the correct data type so in this case it is a string – hence “s”.  

The query is then executed – $stmt->execute(); 

The bind_result() is used to bind the results and then this can be displayed by looping through the results.  

In this example, the user fills out a search field with a city name. This value is stored in the variable $term. This selects all the images that matches the user’s entered location.  

 

<?php  
$term = “$_POST[‘city‘]”; 
$stmt = $conn->prepare(“SELECT image_name FROM media WHERE location LIKE ?“); 
$stmt->bind_param(“s”, $term); 
$stmt->execute(); 
$stmt->bind_result($image_name); 
?> 

 

Displaying the results

 

while($stmt->fetch()) 
{ 
    echo $image_name; 
} 
 

Conclusion

SQL injections are often overlooked and can be a common threat, therefore suitable prevention is essential in keeping your database and it’s data safe. Separating the data and the query will ensure that your program cannot be manipulated.