]> git.defcon.no Git - hermes/blob - api/lib/check_email.php
Added license text
[hermes] / api / lib / check_email.php
1 <?php
2 /*
3 # Copyright (c) 2012, Gjøvik University College
4 # All rights reserved.
5
6 # Redistribution and use in source and binary forms, with or without
7 # modification, are permitted provided that the following conditions are met:
8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above copyright
11 # notice, this list of conditions and the following disclaimer in the
12 # documentation and/or other materials provided with the distribution.
13 # * Neither the name of the Gjøvik University College nor the
14 # names of its contributors may be used to endorse or promote products
15 # derived from this software without specific prior written permission.
16 #
17 # THIS SOFTWARE IS PROVIDED BY Gjøvik University College ''AS IS'' AND ANY
18 # EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 # DISCLAIMED. IN NO EVENT SHALL Gjøvik University College BE LIABLE FOR ANY
21 # DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 # (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 # SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 function check_email_address($email) {
30 // First, we check that there's one @ symbol,
31 // and that the lengths are right.
32 if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
33 // Email invalid because wrong number of characters
34 // in one section or wrong number of @ symbols.
35 return false;
36 }
37 // Split it into sections to make life easier
38 $email_array = explode("@", $email);
39 $local_array = explode(".", $email_array[0]);
40 for ($i = 0; $i < sizeof($local_array); $i++) {
41 if
42 (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$",
43 $local_array[$i])) {
44 return false;
45 }
46 }
47 // Check if domain is IP. If not,
48 // it should be valid domain name
49 if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
50 $domain_array = explode(".", $email_array[1]);
51 if (sizeof($domain_array) < 2) {
52 return false; // Not enough parts to domain
53 }
54 for ($i = 0; $i < sizeof($domain_array); $i++) {
55 if
56 (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$",
57 $domain_array[$i])) {
58 return false;
59 }
60 }
61 }
62 return true;
63 }
64 ?>