?? formail.php
字號:
<?
/*
##############################################################################
# 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 + -