form problem

They have: 121 posts

Joined: Apr 2003

Can someone help me get my form workings? I have been beating my head against the wall on this. Confused the link is here . The form is at the bottom of the page. Thanks

Suzanne's picture

She has: 5,507 posts

Joined: Feb 2000

What is the problem? The form seems to be displaying? If the problem is in feedback.php I can move this to the scripting forum for you.

They have: 121 posts

Joined: Apr 2003

Yes I believe that is the problem. I am not getting the email. Thank you.

Suzanne's picture

She has: 5,507 posts

Joined: Feb 2000

let's see what's inside that feedback.php file, then, see if we can fix it up for you.

They have: 121 posts

Joined: Apr 2003

I'm sorry Suzanne, I've been unable to post lately, but here is the feedback.php file. Thanks

<?php
// $recipient="[email protected]";  Make double sure of security...
// Note - reset below (triple sure)

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

// Show error
function print_error($reason,$type = 0) {
   echo
"<html><head>";
   echo
"<title>Sunglass Replica Link Partner - Error</title>\n";
   echo
"</head><body>\n\n";
  
// for missing required data
  
if ($type == "missing") {
     
?>

The form was not submitted for the following reasons:

<?php
echo $reason."\n";
?>

Please close this window to return to the form and try again.

<?php
  
} else { // every other error
  
?>

The form was not submitted because of the following reasons:
<?php
echo $reason."\n";
}
echo "\n";
exit;
}

// 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];
for ($x=0; $x < count($referers); $x++) {
if (eregi ($referers[$x], $referer)) {
$found = true;
}
}
if (!getenv("HTTP_REFERER"))
$found = false;
if (!$found){
print_error("You are coming from an 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.
}
}
if ($referers)
check_referer($referers);

// parse the form and create the content string which we will send
function parse_form($array) {
// build reserved keyword array
$reserved_keys[] = "MAX_FILE_SIZE";
$reserved_keys[] = "required";
$reserved_keys[] = "redirect";
// $reserved_keys[] = "email";
$reserved_keys[] = "submit"; /* added */
$reserved_keys[] = "require";
$reserved_keys[] = "path_to_file";
$reserved_keys[] = "recipient";
$reserved_keys[] = "subject";
$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_fields_redirect";
$reserved_keys[] = "env_report";
if (count($array)) {
while (list($key, $val) = each($array)) {
// exclude reserved keywords
$reserved_violation = 0;
for ($ri=0; $riI NEED VALID RECIPIENT EMAIL ADDRESS ($HTTP_POST_VARS['recipient']) ($recipient_to_test) TO CONTINUE");
}
}

// This is because I originally had it require but too many people
// were used to Matt's Formmail.pl which used required instead.
if ($required)
$require = $required;
// handle the required fields
if ($require) {
// seperate at the commas
$require = ereg_replace( " +", "", $require);
$required = split(",",$require);
for ($i=0;$iMissing: $required[$i]\n";
}
}

if ($missing_field_list)
print_error($missing_field_list,"missing");
}

// check the email fields for validity
if (($email) || ($EMAIL)) {
$email = trim($email);
if ($EMAIL)
$email = trim($EMAIL);
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $email)) {
print_error("your email address is invalid");
}
$EMAIL = $email;
}
// prepare the content

if (!isset($_SERVER)) {
$_GET = &$HTTP_GET_VARS;
$_POST = &$HTTP_POST_VARS;
$_ENV = &$HTTP_ENV_VARS;
$_SERVER = &$HTTP_SERVER_VARS;
$_COOKIE = &$HTTP_COOKIE_VARS;
$_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
}
$content = parse_form($_POST);

// if the subject option is not set: set the default
if (!$subject)
$subject = "Form submission";

// send it off
mail_it(stripslashes($content), stripslashes($subject), $email, $recipient);

// if the redirect option is set: redirect them
if ($redirect) {
header ("Location: $redirect");
exit;
} else {
print "Thank you for your submission\n";
echo "\n";
exit;
}

// <---------- THE END ----------> //

Suzanne's picture

She has: 5,507 posts

Joined: Feb 2000

before I go digging, is the closing ?> on the file?

Suzanne's picture

She has: 5,507 posts

Joined: Feb 2000

This is a lot of code -- I went through it and tried to fix it by indenting the code so I can see but I can't work on it further tonight. Hopefully others can use this code to find the problem for you:

<?php


// reset recipient variable for security (why not only set it here?!)
$recipient=\"[email protected]\";

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

// Show error
function print_error(
$reason,$type = 0) {
echo<<<HEADER
<html>
    <head>
        <title>Sunglass Replica Link Partner - Error</title>
    </head>
    <body>
HEADER;

    // for missing required data
    if (
$type == \"missing\") {
echo<<<ERROR
<p>The form was not submitted for the following reasons:</p>
<p>
$reason</p>
<p>Please close this window to return to the form and try again.</p>
ERROR;
    }
    else { // every other error
echo<<<ERROR
<p>The form was not submitted because of the following reasons:</p>
<p>
$reason</p>
ERROR;
    }

echo<<<FOOTER
    </body>
</html>
FOOTER;
exit;
}

// function to check referer for security reasons.
function check_referer(
$referers) {
    if (count(
$referers)) {
       
$found = false;
       
$temp = explode(\"/\",getenv(\"HTTP_REFERER\"));
       
$referer = $temp[2];
        for (
$x=0; $x < count($referers); $x++) {
            if (eregi (
$referers[$x], $referer)) {
               
$found = true;
            }
        }

        if (!getenv(\"HTTP_REFERER\"))
           
$found = false;
            if (!
$found) {
                print_error(\"You are coming from an <b>unauthorized domain.</b>\");
                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.
        }
    }
}

if (
$referers) check_referer($referers);

// parse the form and create the content string which we will send
function parse_form(
$array) {
    // build reserved keyword array
   
$reserved_keys[] = \"MAX_FILE_SIZE\";
   
$reserved_keys[] = \"required\";
   
$reserved_keys[] = \"redirect\";
    //
$reserved_keys[] = \"email\";
   
$reserved_keys[] = \"submit\"; /* added */
   
$reserved_keys[] = \"require\";
   
$reserved_keys[] = \"path_to_file\";
   
$reserved_keys[] = \"recipient\";
   
$reserved_keys[] = \"subject\";
   
$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_fields_redirect\";
   
$reserved_keys[] = \"env_report\";

    if (count(
$array)) {
        while (list(
$key, $val) = each($array)) {
            // exclude reserved keywords
           
$reserved_violation = 0;
            for (
$ri=0; $ri<count($reserved_keys); $ri++) {
                if (
$key == $reserved_keys[$ri]) {
                   
$reserved_violation = 1;
                }
            }
            // prepare content
            if (
$reserved_violation != 1) {
                if (is_array(
$array[$val])) {
                    for (
$z=0;$z<count($array[$key]);$z++) {
                       
$content .= \"$key: $array[$key][$z]\n\";
                    }
                } else {
                   
$content .= \"$key: $array[$key]\n\";
                }
            }
        }
    }
    return
$content;
}

// mail the content we figure out in the following steps
function mail_it(
$content, $subject, $email, $recipient) {
   
$recipient=\"[email protected]\"; //  repeat
    mail(
$recipient, $subject, $content, \"From: $email\r\nReply-To: $email\r\nX-Mailer: DT_formmail\");
}

// set up variables
$website_url = $_POST['website_url'];
$website_title = $_POST['website_title'];
$description = $_POST['description'];
$reciprocal_link = $_POST['reciprocal_link'];
$contact_name = $_POST['contact_name'];
$email = $_POST['email'];
$comments = $_POST['comments'];
$required = $_POST['required'];
$subject = $_POST['subject'];
$redirect = $_POST['redirect'];

// check for a recipient email address and check the validity of it
$recipient = $_POST['recipient'];
$recipient_in = split(',',$recipient);
for (
$i=0;$i<count($recipient_in);$i++) {
   
$recipient_to_test = trim($recipient_in[$i]);
    if (!eregi(\"^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,3}$\", recipient_to_test)) {
        print_error(\"<b>I NEED VALID RECIPIENT EMAIL ADDRESS (
$HTTP_POST_VARS['recipient']) ($recipient_to_test) TO CONTINUE</b>\");
    }
}

// This is because I originally had it require but too many people
// were used to Matt's Formmail.pl which used required instead.
if (
$required) $require = $required;

// handle the required fields
if (
$require) {
    // seperate at the commas
   
$require = ereg_replace( \" +\", \"\", $require);
   
$required = split(\",\",$require);
    for (
$i=0;$i<count($required);$i++) {
       
$string = trim($required[$i]);
        // check if they exsist
        if( (!(
${$string})) || ('http://' == (${$string})) ) {
            // if the missing_fields_redirect option is on: redirect
            if (
$missing_fields_redirect) {
                header (\"Location:
$missing_fields_redirect\");
                exit;
            }
       
$require;
       
$missing_field_list .= \"<b>Missing: $required[$i]</b><br>\n\";
    }
}

if (
$missing_field_list) print_error($missing_field_list,\"missing\");

// check the email fields for validity
if ((
$email) || ($EMAIL)) {
   
$email = trim($email);
    if (
$EMAIL) $email = trim($EMAIL);
    if (!eregi(\"^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$\",
$email)) {
        print_error(\"your <b>email address</b> is invalid\");
    }
   
$EMAIL = $email;
}

// prepare the content
if (!isset(
$_SERVER)) {
   
$_GET     = &$HTTP_GET_VARS;
   
$_POST    = &$HTTP_POST_VARS;
   
$_ENV     = &$HTTP_ENV_VARS;
   
$_SERVER  = &$HTTP_SERVER_VARS;
   
$_COOKIE  = &$HTTP_COOKIE_VARS;
   
$_REQUEST = array_merge($_GET, $_POST, $_COOKIE);
}

$content = parse_form($_POST);

// if the subject option is not set: set the default
if (!
$subject) $subject = \"Form submission\";

// send it off
mail_it(stripslashes(
$content), stripslashes($subject), $email, $recipient);

// if the redirect option is set: redirect them
if (
$redirect) {
    header (\"Location:
$redirect\");
    exit;
} else {
    print \"Thank you for your submission\n\";
    echo \"<br><br>\n\";
    exit;
}

// <----------    THE END    ----------> //
?>

They have: 121 posts

Joined: Apr 2003

That was very kind of you. Yes maybe someone will lend me a hand.

druagord's picture

He has: 335 posts

Joined: May 2003

And what do you get as an output when you post ?

i have seen something in this function i don't think this is your problem but it could cause errors

function parse_form($array) {
    // build reserved keyword array
    $reserved_keys[] = "MAX_FILE_SIZE";
    $reserved_keys[] = "required";
    $reserved_keys[] = "redirect";
    // $reserved_keys[] = "email";
    $reserved_keys[] = "submit"; /* added */
    $reserved_keys[] = "require";
    $reserved_keys[] = "path_to_file";
    $reserved_keys[] = "recipient";
    $reserved_keys[] = "subject";
    $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_fields_redirect";
    $reserved_keys[] = "env_report";

    if (count($array)) {
        // moved here
        $reserved_violation = 0;
        while (list($key, $val) = each($array)) {
            // exclude reserved keywords
         // this goes out of the loop   $reserved_violation = 0;
            for ($ri=0; $ri<count($reserved_keys); $ri++) {
                if ($key == $reserved_keys[$ri]) {
                    $reserved_violation = 1;
                }
            }
            // prepare content
            if ($reserved_violation != 1) {
                if (is_array($array[$val])) {
                    for ($z=0;$z<count($array[$key]);$z++) {
                        $content .= "$key: $array[$key][$z]\n";
                    }
                } else {
                    $content .= "$key: $array[$key]\n";
                }
            }
        }
    }
    return $content;
}
'

IF , ELSE , WHILE isn't that what life is all about

They have: 121 posts

Joined: Apr 2003

I'm not sure what you are refering to druagord.

druagord's picture

He has: 335 posts

Joined: May 2003

You have to move the $reserved_violation =0 out of the while loop

Mark Hensler's picture

He has: 4,048 posts

Joined: Aug 2000

<?php
function parse_form($array) {
   
// build reserved keyword array
   
$reserved_keys[] = \"MAX_FILE_SIZE\";
   
$reserved_keys[] = \"required\";
   
$reserved_keys[] = \"redirect\";
    //
$reserved_keys[] = \"email\";
   
$reserved_keys[] = \"submit\"; /* added */
   
$reserved_keys[] = \"require\";
   
$reserved_keys[] = \"path_to_file\";
   
$reserved_keys[] = \"recipient\";
   
$reserved_keys[] = \"subject\";
   
$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_fields_redirect\";
   
$reserved_keys[] = \"env_report\";

   
$content = '';
   
    foreach (
$reserved_keys as $key) {
        if (isset(
$array[$key])) {
            if (is_array(
$array[$key])) {
                for (
$z=0;$z<count($array[$key]);$z++) {
                   
$content .= \"$key: $array[$key][$z]\n\";
                }
            }
            else {
               
$content .= \"$key: $array[$key]\n\";
            }
        }
    }
   
    return
$content;
}
?>

Mark Hensler
If there is no answer on Google, then there is no question.

Want to join the discussion? Create an account or log in if you already have one. Joining is fast, free and painless! We’ll even whisk you back here when you’ve finished.