gitman328 / youtube-upload-mail-reminder

Receive a mail notification if your favorite YouTube channel has upload a video
https://yumr.me
4 stars 0 forks source link

Error because usage of 'eregi' #2

Closed joergRossdeutscher closed 4 years ago

joergRossdeutscher commented 4 years ago

PHP Fatal error: Uncaught Error: Call to undefined function eregi() in youtube-upload-mail-reminder/index.php thrown on line 168 See the php manual: https://www.php.net/manual/en/function.eregi.php

eregi was DEPRECATED in PHP 5.3.0, and REMOVED in PHP 7.0.0.

I suggest to remove that function completely. Checking for a valid mail address that does REALLY work without over- or underreacting is something that makes grown senior developers cry. There is an unbelievable amount of valid but rarely used schemes, you will never get them all. „How would you validate an email address syntax?“ is a classic question for advanced developer job interviews, and the only correct answer is: „I don't. I get some 3rd party tool that does this for years.“

The pattern you are using is even very outdated, it rejects perfectly valid domains like “.berlin“.

See http://emailregex.com/ to get an impression of this.

However, if you insist of checking the address, then let's “steal“ the RegExp from there and use:

if(preg_match('/^(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){255,})(?!(?:(?:\x22?\x5C[\x00-\x7E]\x22?)|(?:\x22?[^\x5C\x22]\x22?)){65,}@)(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22))(?:\.(?:(?:[\x21\x23-\x27\x2A\x2B\x2D\x2F-\x39\x3D\x3F\x5E-\x7E]+)|(?:\x22(?:[\x01-\x08\x0B\x0C\x0E-\x1F\x21\x23-\x5B\x5D-\x7F]|(?:\x5C[\x00-\x7F]))*\x22)))*@(?:(?:(?!.*[^.]{64,})(?:(?:(?:xn--)?[a-z0-9]+(?:-[a-z0-9]+)*\.){1,126}){1,}(?:(?:[a-z][a-z0-9]*)|(?:(?:xn--)[a-z0-9]+))(?:-[a-z0-9]+)*)|(?:\[(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){7})|(?:(?!(?:.*[a-f0-9][:\]]){7,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,5})?)))|(?:(?:IPv6:(?:(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){5}:)|(?:(?!(?:.*[a-f0-9]:){5,})(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3})?::(?:[a-f0-9]{1,4}(?::[a-f0-9]{1,4}){0,3}:)?)))?(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))(?:\.(?:(?:25[0-5])|(?:2[0-4][0-9])|(?:1[0-9]{2})|(?:[1-9]?[0-9]))){3}))\]))$/i', $mailadress)){ return TRUE; } else { return FALSE; }

gitman328 commented 4 years ago

Well may it's better to remove that code part, if it not works with some PHP versions. It should be reasonable that everyone enters their own email address correctly.

But thx for the code. Maybe it's useful for another project.