ellora Posted January 10, 2010 Share Posted January 10, 2010 Hi, This is a email a friend type of form, and it isn't working anymore. <? function validate_email($email, $location) { $valid_address = true; $mail_pat = '^(.+)@(.+)$'; $valid_chars = "[^] \(\)<>@,;:\.\\\"\[]"; $atom = "$valid_chars+"; $quoted_user='(\"[^\"]*\")'; $word = "($atom|$quoted_user)"; $user_pat = "^$word(\.$word)*$"; $ip_domain_pat='^\[([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\]$'; $domain_pat = "^$atom(\.$atom)*$"; if (eregi($mail_pat, $email, $components)) { $user = $components[1]; $domain = $components[2]; // validate user if (eregi($user_pat, $user)) { // validate domain if (eregi($ip_domain_pat, $domain, $ip_components)) { // this is an IP address for ($i=1;$i<=4;$i++) { if ($ip_components[$i] > 255) { $valid_address = false; break; } } } else { // Domain is a name, not an IP if (eregi($domain_pat, $domain)) { /* domain name seems valid, but now make sure that it ends in a valid TLD or ccTLD and that there's a hostname preceding the domain or country. */ $domain_components = explode(".", $domain); // Make sure there's a host name preceding the domain. if (sizeof($domain_components) < 2) { $valid_address = false; } else { $top_level_domain = strtolower($domain_components[sizeof($domain_components)-1]); // Allow all 2-letter TLDs (ccTLDs) if (eregi('^[a-z][a-z]$', $top_level_domain) != 1) { $tld_pattern = ''; // Get authorized TLDs from text file $file_t = $location . "functions/tld.txt"; $tlds = file($file_t); while (list(,$line) = each($tlds)) { // Get rid of comments $words = explode('#', $line); $tld = trim($words[0]); // TLDs should be 3 letters or more if (eregi('^[a-z]{3,}$', $tld) == 1) { $tld_pattern .= '^' . $tld . '$|'; } } // Remove last '|' $tld_pattern = substr($tld_pattern, 0, -1); if (eregi("$tld_pattern", $top_level_domain) == 0) { $valid_address = false; } } } } else { $valid_address = false; } } } else { $valid_address = false; } } else { $valid_address = false; } if ($valid_address && ENTRY_EMAIL_ADDRESS_CHECK == 'true') { if (!checkdnsrr($domain, "MX") && !checkdnsrr($domain, "A")) { $valid_address = false; } } return $valid_address; } ?> These are the errors I get: Warning: failed to open stream: No such file or directory on line 46 Warning: Variable passed to each() is not an array or object on line 47 Warning: eregi() [function.eregi]: REG_EMPTY on line 58 Could someone please help me. Thank you, ellora. Link to comment https://forums.phpfreaks.com/topic/187962-variable-passed-to-each-is-not-an-array-or-object/ Share on other sites More sharing options...
mmarif4u Posted January 10, 2010 Share Posted January 10, 2010 Hi ellora, As i can see the code is messed up, can u please tell us which are line 45,46,47,48. So we can further help. Link to comment https://forums.phpfreaks.com/topic/187962-variable-passed-to-each-is-not-an-array-or-object/#findComment-992386 Share on other sites More sharing options...
PHP Monkeh Posted January 10, 2010 Share Posted January 10, 2010 The first error referrs to these two lines: $file_t = $location . "functions/tld.txt"; $tlds = file($file_t); Have you deleted the file 'tld.txt' recently or moved it? Link to comment https://forums.phpfreaks.com/topic/187962-variable-passed-to-each-is-not-an-array-or-object/#findComment-992387 Share on other sites More sharing options...
teamatomic Posted January 10, 2010 Share Posted January 10, 2010 46. Looks like maybe $location is not getting passed to the function. 47. related to 46 not being correct 56. related to $tld which is all related to 47->46 Fix the $location problem and all should be OK. HTH Teamatomic Link to comment https://forums.phpfreaks.com/topic/187962-variable-passed-to-each-is-not-an-array-or-object/#findComment-992402 Share on other sites More sharing options...
ellora Posted January 11, 2010 Author Share Posted January 11, 2010 The first error referrs to these two lines: $file_t = $location . "functions/tld.txt"; $tlds = file($file_t); Have you deleted the file 'tld.txt' recently or moved it? Yep, this was it. It's working fine now Thanks a whole lot. Link to comment https://forums.phpfreaks.com/topic/187962-variable-passed-to-each-is-not-an-array-or-object/#findComment-992619 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.