SitePoint Sponsor

User Tag List

Results 1 to 8 of 8
  1. #1
    SitePoint Zealot
    Join Date
    Feb 2007
    Posts
    127
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    formmailnot redirecting

    I have tried and tried and I can't figure this one out. HOw do I get my form to redirect the "submitter" to a web page of my choice? (like in this case, the index page)

    problem code:
    <input type="hidden" name="redirect" value="http://hbhsystems.com/to/index.html">

    I'm using Jack's FormMail.php and the documentation says:
    If you wish to redirect the user to a different URL, rather than having them see the default response to the fill-out form, you can use this hidden variable to send them to a pre-made HTML page or as another form type to let the user decide.
    Syntax: To choose the URL they will end up at:
    <input type=hidden name="redirect" value="http://your.host.com/to/ file.html">

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

    It all sounds easy enough, so I'm wondering if it might be something with the server that I can't control.
    Anybody have any ideas?

    thanks.
    R

    LINKS:
    http://www.dtheatre.com/scripts/formmail

  2. #2
    SitePoint Zealot
    Join Date
    Apr 2007
    Location
    New London, CT
    Posts
    172
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    You would need to specify a <form method="" action=""> the method would send the request to the action page and then what ever the action told the form to do it would. This includes redirecting to a new page.

  3. #3
    SitePoint Zealot
    Join Date
    Feb 2007
    Posts
    127
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    I did use method and action in the form

    thanks for your response. I had put more html above the pertinent line of code I included.

    I wrote above it:
    <form method="post" enctype="multipart/form-data" action="formmail/forms2.php">

    so it seems that's not it. That's why I'm puzzled.
    any more thoughts?
    R

  4. #4
    SitePoint Wizard silver trophybronze trophy Stormrider's Avatar
    Join Date
    Sep 2006
    Location
    Nottingham, UK
    Posts
    3,133
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Is it something to do with register_globals needing to be on? If so, I suggest you steer clear of this script and use something else isntead, since having that option on is a security issue. From the source of the file, it certainly looks like it - $redirect isn't set anywhere else, and is only used in that if statement.

  5. #5
    SitePoint Zealot
    Join Date
    Feb 2007
    Posts
    127
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Allow me to post more of the code. thanks for taking a look at it as I'm stumped.
    Rick

    here's the entire php:
    <?
    // for ultimate security, use this instead of using the form
    $recipient = "rick@austinwebmedia.com"; // youremail@domain.com(not used in the html form)

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

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

    // 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');

    // 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..
    function print_error($reason,$type = 0) {
    build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
    // for missing required data
    if ($type == "missing") {
    if ($missing_field_redirect) {
    header("Location: $missing_field_redirect?error=$reason");
    exit;
    } else {
    ?>
    The form was not submitted for the following reasonsp>
    <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 reasonsp>
    <?
    }
    echo "<br><br>\n";
    // echo "<small>T <a href=\"http://www.dtheatre.com/scripts/\"> ""</a></small>\n\n";
    exit;
    }

    // function to check the banlist
    // suggested by a whole lot of people.. Thanks
    function check_banlist($banlist, $email) {
    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("You are using from a <b>banned email address.</b>");
    }
    }

    // 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("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);

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

    // 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_fields_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])) {
    for ($z=0;$z<count($array[$field]);$z++)
    $content .= $field.SEPARATOR.$array[$field][$z].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)) {
    for ($z=0;$z<count($val);$z++)
    $content .= $key.SEPARATOR.$val[$z].NEWLINE;
    } else
    $content .= $key.SEPARATOR.$val.NEWLINE;
    }
    }
    }
    return $content;
    }

    // mail the content we figure out in the following steps
    function mail_it($content, $subject, $email, $recipient) {
    global $attachment_chunk, $attachment_name, $attachment_type, $attachment_sent, $bcc;

    $ob = "----=_OuterBoundary_000";
    $ib = "----=_InnerBoundery_001";

    $headers = "MIME-Version: 1.0\r\n";
    $headers .= "From: ".$email."\n";
    $headers .= "To: ".$recipient."\n";
    $headers .= "Reply-To: ".$email."\n";
    if ($bcc) $headers .= "Bcc: ".$bcc."\n";
    //$headers .= "X-Priority: 1\n";
    $headers .= "X-Mailer: DT Formmail".VERSION."\n";
    $headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$ob."\"\n";


    $message = "This is a multi-part message in MIME format.\n";
    $message .= "\n--".$ob."\n";
    $message .= "Content-Type: multipart/alternative;\n\tboundary=\"".$ib."\"\n\n";
    $message .= "\n--".$ib."\n";
    $message .= "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
    $message .= "Content-Transfer-Encoding: quoted-printable\n\n";
    $message .= $content."\n\n";
    $message .= "\n--".$ib."--\n";
    if ($attachment_name && !$attachment_sent) {
    $message .= "\n--".$ob."\n";
    $message .= "Content-Type: $attachment_type;\n\tname=\"".$attachment_name."\"\n";
    $message .= "Content-Transfer-Encoding: base64\n";
    $message .= "Content-Disposition: attachment;\n\tfilename=\"".$attachment_name."\"\n\n";
    $message .= $attachment_chunk;
    $message .= "\n\n";
    $attachment_sent = 1;
    }
    $message .= "\n--".$ob."--\n";

    mail($recipient, $subject, $message, $headers);
    }

    // take in the body building arguments and build the body tag for page display
    function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
    if ($style_sheet)
    echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";
    if ($title)
    echo "<title>$title</title>\n";
    if (!$bgcolor)
    $bgcolor = "#FFFFFF";
    if (!$text_color)
    $text_color = "#000000";
    if (!$link_color)
    $link_color = "#0000FF";
    if (!$vlink_color)
    $vlink_color = "#FF0000";
    if (!$alink_color)
    $alink_color = "#000088";
    if ($background)
    $background = "background=\"$background\"";
    echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";
    }

    // check for a recipient email address and check the validity of it
    // Thanks to Bradley miller (bradmiller@accesszone.com) for pointing
    // out the need for multiple recipient checking and providing the code.
    $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,6}$", $recipient_to_test)) {
    print_error("<b>I NEED VALID RECIPIENT EMAIL ADDRESS ($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})) || (!(${$string}))) {
    // if the missing_fields_redirect option is on: redirect them
    // if ($missing_fields_redirect) {
    // header ("Location: $missing_fields_redirect");
    // exit;
    // }
    // $require;
    // $missing_field_list .= "<b>Missing: $required[$i]</b><br>\n";
    // }
    // }
    // send error to our mighty error function
    // 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,6}$", $email))
    // print_error("your <b>email address</b> is invalid");
    // $EMAIL = $email;
    //}

    // check zipcodes for validity
    //if (($ZIP_CODE) || ($zip_code)) {
    // $zip_code = trim($zip_code);
    // if ($ZIP_CODE) $zip_code = trim($ZIP_CODE);
    // if (!ereg("(^[0-9]{5})-([0-9]{4}$)", trim($zip_code)) && (!ereg("^[a-zA-Z][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$", trim($zip_code))) && (!ereg("(^[0-9]{5})", trim($zip_code))))
    // print_error("your <b>zip/postal code</b> is invalid");
    //}

    // check phone for validity
    //if (($PHONE_NO) || ($phone_no)) {
    // $phone_no = trim($phone_no);
    // if ($PHONE_NO) $phone_no = trim($PHONE_NO);
    // if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $phone_no))
    // print_error("your <b>phone number</b> is invalid");
    //}

    // check phone for validity
    //if (($FAX_NO) || ($fax_no)) {
    // $fax_no = trim($fax_no);
    // if ($FAX_NO) $fax_no = trim($FAX_NO);
    // if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $fax_no))
    // print_error("your <b>fax number</b> is invalid");
    //}

    // sort alphabetic or prepare an order
    if ($sort == "alphabetic") {
    uksort($HTTP_POST_VARS, "strnatcasecmp");
    } elseif ((ereg('^order:.*,.*', $sort)) && ($list = explode(',', ereg_replace('^order:', '', $sort)))) {
    $sort = $list;
    }

    // prepare the content
    $content = parse_form($HTTP_POST_VARS, $sort);

    // check for an attachment if there is a file upload it
    if ($attachment_name) {
    if ($attachment_size > 0) {
    if (!$attachment_type) $attachment_type = "application/unknown";
    $content .= "Attached File: ".$attachment_name."\n";
    $fp = fopen($attachment, "r");
    $attachment_chunk = fread($fp, filesize($attachment));
    $attachment_chunk = base64_encode($attachment_chunk);
    $attachment_chunk = chunk_split($attachment_chunk);
    }
    }

    // check for a file if there is a file upload it
    if ($file_name) {
    if ($file_size > 0) {
    if (!ereg("/$", $path_to_file))
    $path_to_file = $path_to_file."/";
    $location = $path_to_file.$file_name;
    if (file_exists($path_to_file.$file_name))
    $location = $path_to_file.rand(1000,3000).".".$file_name;
    copy($file,$location);
    unlink($file);
    $content .= "Uploaded File: ".$location."\n";
    }
    }

    // second file (see manual for instructions on how to add more.)
    if ($file2_name) {
    if ($file_size > 0) {
    if (!ereg("/$", $path_to_file))
    $path_to_file = $path_to_file."/";
    $location = $path_to_file.$file2_name;
    if (file_exists($path_to_file.$file2_name))
    $location = $path_to_file.rand(1000,3000).".".$file2_name;
    copy($file2,$location);
    unlink($file2);
    $content .= "Uploaded File: ".$location."\n";
    }
    }

    // if the env_report option is on: get eviromental variables
    if ($env_report) {
    $env_report = ereg_replace( " +", "", $env_report);
    $env_reports = split(",",$env_report);
    $content .= "\n------ eviromental variables ------\n";
    for ($i=0;$i<count($env_reports);$i++) {
    $string = trim($env_reports[$i]);
    if ($env_reports[$i] == "REMOTE_HOST")
    $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
    if ($env_reports[$i] == "REMOTE_USER")
    $content .= "REMOTE USER: ". $REMOTE_USER."\n";
    if ($env_reports[$i] == "REMOTE_ADDR")
    $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
    if ($env_reports[$i] == "HTTP_USER_AGENT")
    $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
    }
    }

    // send it off
    mail_it(stripslashes($content), ($subject)?stripslashes($subject):"Form Submission", $email, $recipient);
    if (file_exists($ar_file)) {
    $fd = fopen($ar_file, "rb");
    $ar_message = fread($fd, filesize($ar_file));
    fclose($fd);
    mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: HBH Web Form Submission", ($ar_from)?$ar_from:$recipient, $email);
    }

    // if the redirect option is set: redirect them
    if ($redirect) {
    header("Location: $redirect");
    exit;
    } else {
    echo "Thank you for your submission\n";
    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;
    }

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

    here's the html form code(hidden fields):

    <form method="post" enctype="multipart/form-data" action="formmail/forms2.php">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    <input type="hidden" name="redirect" value="http://hbhsystems.com/to/index.html">

  6. #6
    SitePoint Wizard silver trophybronze trophy Stormrider's Avatar
    Join Date
    Sep 2006
    Location
    Nottingham, UK
    Posts
    3,133
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    I've seen the source - I downloaded it and had a look at it before. I think it needs register_globals turned on, unless there is something I am missing, in which case I would stay away from it.

  7. #7
    SitePoint Wizard silver trophybronze trophy Stormrider's Avatar
    Join Date
    Sep 2006
    Location
    Nottingham, UK
    Posts
    3,133
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)
    Try this on a php page to see what the setting is:

    <?php
    if (ini_get('register_globals')) {
    echo "register_globals ON";
    } else {
    echo "register_globals OFF";
    }
    ?>

    Visit the page and see what it says... I suspect you have it turned off (as it should be), but the form mail php script you are using requires it to be on.

  8. #8
    SitePoint Zealot
    Join Date
    Feb 2007
    Posts
    127
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Thanks. actually, I'll try that when I get a moment. I got redirect working however by just changing one line of code at the bottom:
    // if the redirect option is set: redirect them
    if ($redirect) {
    header("Location: $redirect");//how it was originally)
    exit;
    } else {
    header("Location: http://www.hbhsystems.com/info_redirect.html");//HERE'S THE KICKER
    exit;
    }

    It all works now. I'll try your fix when I get a chance. thanks.


Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •