⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formail.php

📁 this is the secure socket example seee it
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<? 
/* 
############################################################################## 
# This script has been grossly modified by RJ of rjwebgraphix.com to suit the 
# needs of our clients. 
############################################################################## 
# PLEASE DO NOT REMOVE THIS HEADER!!! 
# 
# COPYRIGHT NOTICE 
# 
# FormMail.php v5.0 (MODIFIED) 
# Copyright 2000-2004 Ai Graphics and Joe Lumbroso (c) All rights reserved. 
# Created 07/06/2000   Last Modified 10/28/2003 
# Joseph Lumbroso, http://www.aigraphics.com, http://www.dtheatre.com 
#                  http://www.dtheatre.com/scripts/ 
############################################################################## 
# 
# This cannot and will not be inforced but I would appreciate a link back 
# to any of these sites: 
# http://www.dtheatre.com 
# http://www.aigraphics.com 
# http://www.dtheatre.com/scripts/ 
# 
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR 
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
# OTHER DEALINGS IN THE SOFTWARE. 
# 
############################################################################## 
*/ 
/////////////////////////////////////////// 
// Added by RJ - Converts _post to _session 
/////////////////////////////////////////// 
session_start(); 
foreach ($_POST as $key => $value) 
{ 
    $_SESSION[$key] = $value; 
} 

////////////////////////////////////////////////////////// 
// Added by RJ for using one form for multiple recipients 
// This section does not need to be edited. 
////////////////////////////////////////////////////////// 
$emls = explode(",", $sendto);  // sets up $emls array from , separated $sendto 

$domain = "domain.com"; // Your domain 

foreach ($emls as $eml) 
    { 
    $reciever[] = $eml. "@" .$domain; 
    } 

$recipient = implode(",", $reciever); 

// used to put first and last name in header. 
$user = '"' .$first_name. " " .$last_name. '"'; 

///////////////////////////////////////////////////////////// 
// allows you to add a hidden pre-subject while still giving 
// submitter ability to enter a subject.  This is handy if 
// you have multiple contact forms 
///////////////////////////////////////////////////////////// 

//$subject = "hello"; 

if ($presub and $postsubject) 
{ 
    $subject = $presub. "--" .$postsubject; 
} 
else 
{ 
    $subject = $postsubject; 
} 

////////////////////////////////////////////////////////// 
// END of RJ's Addition - Other changes have been 
// made throughout the rest of the script as needed 
////////////////////////////////////////////////////////// 

////////////////////////////////////////////////////////// 
//  USER CONTROLS 
////////////////////////////////////////////////////////// 

// THIS REMOVED RECIPIENT MODIFIED ABOVE!!!! 
// for ultimate security, use this instead of using the form 
//$recipient = "someone@domain.com"; // youremail@domain.com 

// bcc emails (separate multiples with commas (,)) 
$bcc = ""; 

// referers.. domains/ips that you will allow forms to 
// reside on. 
$referers = array ('domain.com','255.255.255.0','255.255.255.2'); 

// banned emails, these will be email addresses of people 
// who are blocked from using the script (requested) 
$banlist = array ('*@somedomain.com, $user@domain.com, $etc@domains.com'); 

// 
$banip = array ('192.168.0.191'); 

// field / value seperator 
define("SEPARATOR", ($separator)?$separator:": "); 

// content newline 
define("NEWLINE", ($newline)?$newline:"\n"); 

// formmail version (for debugging mostly) 
define("VERSION", "5.0"); 


// our mighty error function..  Modified by RJ, mainly to determine 
// if it already has a PHP parm on url it will use & instead of ? 
function print_error($missing_field_redirect,$reason,$type = 0) 
{ 
       if ($type == "missing") 
    { 
        if ($missing_field_redirect) 
        { 
            if (strstr($missing_field_redirect,"?")) 
            { 
                header("Location: ".$missing_field_redirect."&error=".$reason); 
                exit; 
            } 
            else 
            { 
                header("Location: ".$missing_field_redirect."?error=".$reason); 
                exit; 
            } 

        } 
        else 
        { 
              ?> 
              IIIThe form was not submitted for the following reasons:<p> 
              <ul><? 
              echo $reason."\n"; 
              echo $missing_field_redirect; 
              ?></ul> 
              Please use your browser's back button to return to the form and try again.<? 
          } 

    } 
    else 
    { // every other error 
     build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet); 
      ?> 
      The form was not submitted because of the following reasons:<p> 
      <? 
    } 
    echo "<br><br>"; 
    echo "<small>This form is powered by <a href=\"http://www.dtheatre.com/scripts/\">Jack's Formmail.php ".VERSION."</a></small>\n\n"; 
    exit; 

   /* -----[ Original missing field redirector ]------------- 

   if ($type == "missing") 
   { 
      if ($missing_field_redirect) 
      { 
          header("Location: $missing_field_redirect&error=$reason"); 
         //header("Location: $missing_field_redirect?error=$reason"); 
         exit; 
      } 
      else 
      { 
      ?> 
      The form was not submitted for the following reasons:<p> 
      <ul><? 
      echo $reason."\n"; 
      ?></ul> 
      Please use your browser's back button to return to the form and try again.<? 
      } 
   } 
   else 
   { // every other error 
      ?> 
      The form was not submitted because of the following reasons:<p> 
      <? 
   } 
   echo "<br><br>\n"; 
   echo "<small>This form is powered by <a href=\"http://www.dtheatre.com/scripts/\">Jack's Formmail.php ".VERSION."</a></small>\n\n"; 
   exit;*/ 
} 

// function to check the banlist 
// suggested by a whole lot of people.. Thanks 
function check_banlist($banlist, $email, $missing_field_redirect) { 
   if (count($banlist)) { 
      $allow = true; 
      foreach($banlist as $banned) { 
         $temp = explode("@", $banned); 
         if ($temp[0] == "*") { 
            $temp2 = explode("@", $email); 
            if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1]))) 
               $allow = false; 
         } else { 
            if (trim(strtolower($email)) == trim(strtolower($banned))) 
               $allow = false; 
         } 
      } 
   } 
   if (!$allow) { 
      print_error($missing_field_redirect, "banned_email"); 
   } 
} 

// function to check the referer for security reasons. 
// contributed by some one who's name got lost.. Thanks 
// goes out to him any way. 
function check_referer($referers) { 
   if (count($referers)) { 
      $found = false; 

      $temp = explode("/",getenv("HTTP_REFERER")); 
      $referer = $temp[2]; 

      if ($referer=="") {$referer = $_SERVER['HTTP_REFERER']; 
         list($remove,$stuff)=split('//',$referer,2); 
         list($home,$stuff)=split('/',$stuff,2); 
         $referer = $home; 
      } 

      for ($x=0; $x < count($referers); $x++) { 
         if (eregi ($referers[$x], $referer)) { 
            $found = true; 
         } 
      } 
      if ($referer =="") 
         $found = false; 
      if (!$found){ 
         print_error($missing_field_redirect,"unauthorized_domain"); 
         error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0); 
      } 
         return $found; 
      } else { 
         return true; // not a good idea, if empty, it will allow it. 
   } 
} 

// Same as above, but for IP address instead 

function check_ip($banip, $missing_field_redirect) { 

    foreach ($banip as $badip) 
    { 

        if ($badip == $_SERVER['REMOTE_ADDR']) 
        { 
            print_error($missing_field_redirect,"banned_ip"); 
            error_log("[FormMail.php] Banned IP. (".getenv("REMOTE_ADDR").")", 0); 
        } 
    } 
} 

if ($referers) 
   check_referer($referers, $missing_field_redirect); 

if ($banlist) 
   check_banlist($banlist, $email, $missing_field_redirect); 

if ($banip) 
   check_ip($banip, $missing_field_redirect); 

/////////////////////////////////////////////////////////////////////// 
// Modified by Seriph on Sitepoint for RJ - MUCHO GRASIAS 
// Modification allows for any field name arrays that have string keys. 
/////////////////////////////////////////////////////////////////////// 

// This function takes the sorts, excludes certain keys and 
// makes a pretty content string. 
function parse_form($array, $sort = "") { 
   // build reserved keyword array 
   $reserved_keys[] = "MAX_FILE_SIZE"; 
   $reserved_keys[] = "required"; 
   $reserved_keys[] = "redirect"; 
   $reserved_keys[] = "require"; 
   $reserved_keys[] = "path_to_file"; 
   $reserved_keys[] = "recipient"; 
   $reserved_keys[] = "subject"; 
   $reserved_keys[] = "sort"; 
   $reserved_keys[] = "style_sheet"; 
   $reserved_keys[] = "bgcolor"; 
   $reserved_keys[] = "text_color"; 
   $reserved_keys[] = "link_color"; 
   $reserved_keys[] = "vlink_color"; 
   $reserved_keys[] = "alink_color"; 
   $reserved_keys[] = "title"; 
   $reserved_keys[] = "missing_field_redirect"; 
   $reserved_keys[] = "env_report"; 
   $reserved_keys[] = "submit"; 
   if (count($array)) { 
      if (is_array($sort)) { 
         foreach ($sort as $field) { 
            $reserved_violation = 0; 
            for ($ri=0; $ri<count($reserved_keys); $ri++) 
               if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1; 

            if ($reserved_violation != 1) { 
               if (is_array($array[$field])) { 

                 foreach ($array[$field] as $key=>$val) { 
                   $content .= $field.'['.$key.']'.SEPARATOR.$val.NEWLINE; 
                 } 

               } else 
                  $content .= $field.SEPARATOR.$array[$field].NEWLINE; 
            } 
         } 
      } 
      while (list($key, $val) = each($array)) { 
         $reserved_violation = 0; 
         for ($ri=0; $ri<count($reserved_keys); $ri++) 
            if ($key == $reserved_keys[$ri]) $reserved_violation = 1; 

         for ($ri=0; $ri<count($sort); $ri++) 
            if ($key == $sort[$ri]) $reserved_violation = 1; 

         // prepare content 
         if ($reserved_violation != 1) { 
            if (is_array($val)) { 
                 foreach ($val as $key2=>$val2) { 
                   $content .= $key.'['.$key2.']'.SEPARATOR.$val2.NEWLINE; 
                 } 
            } else 
               $content .= $key.SEPARATOR.$val.NEWLINE; 
         } 
      } 
   } 
   return $content; 
} 



/* 
// ORIGINAL parse_form function 

// This function takes the sorts, excludes certain keys and 
// makes a pretty content string. 
function parse_form($array, $sort = "") { 
   // build reserved keyword array 
   $reserved_keys[] = "MAX_FILE_SIZE"; 
   $reserved_keys[] = "required"; 
   $reserved_keys[] = "redirect"; 
   $reserved_keys[] = "require"; 
   $reserved_keys[] = "path_to_file"; 
   $reserved_keys[] = "recipient"; 
   $reserved_keys[] = "subject"; 
   $reserved_keys[] = "sort"; 
   $reserved_keys[] = "style_sheet"; 
   $reserved_keys[] = "bgcolor"; 
   $reserved_keys[] = "text_color"; 
   $reserved_keys[] = "link_color"; 
   $reserved_keys[] = "vlink_color"; 
   $reserved_keys[] = "alink_color"; 
   $reserved_keys[] = "title"; 
   $reserved_keys[] = "missing_field_redirect"; 
   $reserved_keys[] = "env_report"; 
   $reserved_keys[] = "submit"; 

   if (count($array)) { 
      if (is_array($sort)) { 
         foreach ($sort as $field) { 
            $reserved_violation = 0; 
            for ($ri=0; $ri<count($reserved_keys); $ri++) 
               if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1; 

            if ($reserved_violation != 1) { 
               if (is_array($array[$field])) { 
                   foreach ($array[$field] as $key=>$val) { 
                    $content .= $field.'['.$key.']'.SEPARATOR.$val.NEWLINE; 
                   for ($z=0;$z<count($array[$field]);$z++) 
                     $content .= $field.SEPARATOR.$array[$field][$z].NEWLINE; 

                 } 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -