ClioSport.net

Register a free account today to become a member!
Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

PHP guru required for quick aysistaaarnce pls.



  306 TD Slut
Hi,
I have been using a website called free form maker to create forms for a while now. What i thought was making a small edit to some of the generated php, turned out to feck it up!

Basically. I need to the 'upload Vcard' field to not be a mandatory field and all the others to stay how they are.

Full Name *
Company Name *
Email Address *
Telephone Number *
Country *
City
Where did you hear about us? *
Google
Yahoo
MSN
Exhibition Magazine
Website
Other
If other, or Website please state here
How would you like us to contact you? *
Phone Call
Email
Subject *
Enquiry *
Upload vCard


Thats how the form looks, red star is mandatory field. heres the PHP.

PHP:
<?php
error_reporting(E_PARSE);
define("ADMIN_MAIL", "myemail@here.com");
define("HOST_NAME", $_SERVER['HTTP_HOST']);
define("PHP_SELF", $_SERVER['PHP_SELF']);
define("ERR_MISSING", "Missing field required : ");
define("ERR_EMAIL", "Please enter a valid e-mail address : ");
define("ERR_CREDIT_CARD_NUMBER", "Please check the credit card number : ");
define("ERR_CREDIT_CARD_EXPIRED", "Please check the credit card expiry date : ");
define("ERR_SELECT_UPLOAD", "Please select file : ");// recipient
 define('FORM_RECIPIENT', 'myemail@here.com');
// --- Array of Form Elements ---
$form_mail[] = array( "name" => "Full_Name", "text" => "Full Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Company_Name", "text" => "Company Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Email", "text" => "Email Address",  "type" => "email", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Telephone_Number", "text" => "Telephone Number",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Country", "text" => "Country",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "City", "text" => "City",  "type" => "text", "required" => "" ) ;
$form_mail[] = array( "name" => "where", "text" => "Where did you hear about us?",  "type" => "radio", "required" => "Required" ) ;
$form_mail[] = array( "name" => "other", "text" => "If other, or Website please state here",  "type" => "text", "required" => "" ) ;
$form_mail[] = array( "name" => "return_contact", "text" => "How would you like us to contact you?",  "type" => "radio", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Subject", "text" => "Subject",  "type" => "textarea", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Enquiry", "text" => "Enquiry",  "type" => "textarea", "required" => "Required" ) ;
$form_mail[] = array( "name" => "upload_vcard", "text" => "upload vcard",  "type" => "attachment", "required" => "" ) ;
// -- Detech Submit & SendMail --
$isHideForm = false;
if( $HTTP_POST_VARS["formmail_submit"] ){
    $sErr = checkPass();
    if( ! $sErr ){
        sendFormMail( $form_mail, "") ;
        $isHideForm = true;

        $redirect = "";
        if( strlen(trim($redirect)) ):
            header( "Location:$redirect" );
            exit;
        endif;
    }
}


?>
<?
// ===============================================
function    sendFormMail( $form_mail, $sFileName = ""  )
{
    global    $HTTP_POST_VARS ;

    if (ereg('/freeformmaker.com/', HOST_NAME))
    {
        return;
    }
    $to = FORM_RECIPIENT;
    $from = "ENQUIRY@" . HOST_NAME;
    $subject = $HTTP_POST_VARS["esh_formmail_subject"];

    // first stage keep it simple:
    $sWhatToDo = $sFileName ? "mailandfile" : "" ; //$HTTP_POST_VARS["esh_formmail_mail_and_file"];

    //$sFileName = $HTTP_POST_VARS["esh_formmail_save_record_file"];
    $cc = $HTTP_POST_VARS["esh_formmail_cc"];
    $bcc = $HTTP_POST_VARS["esh_formmail_bcc"];
    $charset = $HTTP_POST_VARS["esh_formmail_charset"];

    for( $i = 0; $i < count( $form_mail ); $i ++ ){
        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
        $content .= $form_mail[ $i ][ "text" ] . " \t : " . $value ."\n";
        $line .= remove_newline( $value ) . "\t" ;
        if( strtolower("Sender's email") == strtolower($form_mail[ $i ][ "type" ]) ) {
            //print "Type:[" . $form_mail[ $i ][ "type" ] . "] $value <br>\n";
            $from = $value ;
        }
    };
    $content .= "\n\nIP:" . getEnv( "REMOTE_ADDR" );

    switch( strtolower($sWhatToDo) ){
        case "mailandfile" :
            mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;
            if( ! appendToFile( $sFileName, $line ) )
                mailReport( $content . "\n\nWrite Form Mail to File Fail." );
            break;

        case "fileonly" :
            if( ! appendToFile( $sFileName, $line ) )
                mailReport( $content . "\n\nWrite Form Mail to File Fail.", $from );
            break;

        default :
            mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;
    }

    mailAutoResponse( $from ) ;
}


//------------------------------------------------------------------------------------------
function mailAutoResponse( $to ){
    global    $HTTP_POST_VARS ;
    $subject = $HTTP_POST_VARS["esh_formmail_return_subject"];
    $responseMsg = $HTTP_POST_VARS["esh_formmail_return_msg"];
    if( $to && $responseMsg )
        mail( $to, $subject, $responseMsg, "From: " . FORM_RECIPIENT);
}


//------------------------------------------------------------------------------------------
function mailReport( $content = "", $from = "" ){
    mail( ADMIN_MAIL, "Error@" . HOST_NAME . PHP_SELF, $content, "From:$from" );
}

//------------------------------------------------------------------------------------------
function    remove_newline( $str = "" ){
    $newliner = "<!--esh_newline-->" ; // replace \r\n with $newliner ;
    $newtaber = "<!--esh_newtaber-->" ; // replace \t with $newtaber ;
    $str = ereg_replace( "\t", $newtaber, $str );
    $str = ereg_replace( "\r\n", $newliner, $str );
    return ereg_replace( "\n", $newliner, $str );
}

//------------------------------------------------------------------------------------------
function    checkPass()
{
    global    $form_mail ;
    global    $HTTP_POST_VARS ;
    global    $HTTP_POST_FILES ;

    for( $i = 0; $i < count( $form_mail ); $i ++ ){
        $type = strtolower( $form_mail[ $i ][ "type" ]  );
        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
        $required = $form_mail[ $i ][ "required" ] ;
        $text = stripslashes( $form_mail[ $i ][ "text" ] );

        // simple check the field has something keyed in.
        if( !strlen($value) && (  $required == "Required" ) && $type != "attachment" )
            return ERR_MISSING . $text  ;

        // verify the special case
        /*if(
            ( strlen($value) || $type == "attachment" )
            &&  $required == "Required"
        ):
        */
            switch( $type ){
                    case     strtolower("Sender's Name") :
                              break;
                    case     strtolower("Generic email"):
                    //case     strtolower("Sender's email"):
                     case     "email":    
                               if( ! formIsEMail($value) )     return ERR_EMAIL . $text ;
                               break;
                    case    "text" :
                                break;
                    case     "textarea" :
                                break;
                    case    "checkbox" :
                    case     "radio" :
                                break;
                    case     "select" :
                                break;
                    case     "attachment" :
                                $upload_file = $HTTP_POST_FILES[ $form_mail[ $i ]["name"] ][ "tmp_name" ] ;
                                if( ! is_uploaded_file($upload_file)  )
                                    return  ERR_SELECT_UPLOAD . $text;
                                break;
                    case strtolower("Date(MM-DD-YYYY)"):
                                break;
                    case strtolower("Date(MM-YYYY)"):
                                break;
                    case strtolower("CreditCard(MM-YYYY)"):
                                if( $value < date("Y-m") ) return ERR_CREDIT_CARD_EXPIRED  . $text;
                                break;
                    case strtolower("CreditCard#"):
                                if( !formIsCreditNumber( $value )  ) return ERR_CREDIT_CARD_NUMBER  . $text ;
                                break;
                    case strtolower("Time(HH:MM:SS)"):
                                break;
                    case strtolower("Time(HH:MM)"):
                                break;
                    default :
                        //return $sErrRequired . $form_mail[ $i ][ "text" ];
                } // switch
        //endif;
    } // for

    return "" ;
}



//------------------------------------------------------------------------------------------
function formSelected( $var, $val )
{
    echo ( $var == $val ) ? "selected" : "";
}


//------------------------------------------------------------------------------------------
function formChecked( $var, $val )
{
    echo ( $var == $val ) ? "checked" : "";
}


//------------------------------------------------------------------------------------------
function    formIsEMail( $email ){
        return ereg( "^(.+)@(.+)\\.(.+)$", $email );
}


//------------------------------------------------------------------------------------------
function    selectList( $name, $selectedValue, $start, $end, $prompt = "-Select-", $style = "" )
{
    $tab = "\t" ;
    print "<select name=\"$name\" $style>\n" ;
    print $tab . "<option value=''>$prompt</option>\n" ;
    $nLen = strlen( "$end" ) ;
    $prefix_zero = str_repeat( "0", $nLen );
    for( $i = $start; $i <= $end ; $i ++ ){
        $stri = substr( $prefix_zero . $i, strlen($prefix_zero . $i)-$nLen, $nLen );
        $selected = ( $stri == $selectedValue ) ? " selected " : "" ;
        print $tab . "<option value=\"$stri\" $selected >$stri</option>\n" ;
    }
    print "</select>\n\n" ;
}


//------------------------------------------------------------------------------------------
// something like CreditCard.pm in perl CPAN
function formIsCreditNumber( $number ) {

    $tmp = $number;
    $number = preg_replace( "/[^0-9]/", "", $tmp );

    if ( preg_match(  "/[^\d\s]/", $number ) )  return 0;
    if ( strlen($number) < 13  && 0+$number ) return 0;

    for ($i = 0; $i < strlen($number) - 1; $i++) {
        $weight = substr($number, -1 * ($i + 2), 1) * (2 - ($i % 2));
        $sum += (($weight < 10) ? $weight : ($weight - 9));
    }

    if ( substr($number, -1) == (10 - $sum % 10) % 10  )  return $number;
    return $number;
}


// -------------------------- Begin Mail Attachment Functions -----------------------------------------------------------------
function    mailAttachments( $to = "" , $subject = "" , $message = "" , $from = "support@lynx.net" , $charset = "iso-8859-1", $cc = "" , $bcc = "" ){
    global    $HTTP_POST_FILES ;

        if( ! strlen( trim( $to ) ) ) return "Missing \"To\" Field." ;

        $boundary = "====_My_PHP_Form_Generator_" . md5( uniqid( srand( time() ) ) ) . "====";

        // setup mail header infomation
        $headers = "From: $from\r\n";
        if ($cc) $headers .= "CC: $cc\r\n";
        if ($bcc) $headers .= "BCC: $bcc\r\n";
        $plainHeaders = $headers ; // for no attachments header
        $headers .= "MIME-Version: 1.0\nContent-type: multipart/mixed;\n\tboundary=\"$boundary\"\n";

        $txtMsg = "\nThis is a multi-part message in MIME format.\n" .
                        "\n--$boundary\n" .
                        "Content-Type: text/plain;\n\tcharset=\"$charset\"\n\n"  . $message . "\n";

        //create mulitipart attachments boundary
        $sError = "" ;
        $nFound = 0;
        foreach( $HTTP_POST_FILES as $aFile ){
                    $sFileName = $aFile[ "tmp_name" ] ;
                    $sFileRealName = $aFile[ "name" ] ;
                    if( is_file( $sFileName ) ):

                        if( $fp = fopen( $sFileName, "rb" ) ) :
                            $sContent = fread( $fp, filesize( $sFileName ) );
                            $sFName = basename( $sFileRealName ) ;
                            $sMIME = getMIMEType( $sFName ) ;

                            $bPlainText = ( $sMIME == "text/plain" ) ;
                            if( $bPlainText ) :
                                $encoding = "" ;
                            else:
                                $encoding = "Content-Transfer-Encoding: base64\n";
                                $sContent = chunk_split( base64_encode( $sContent ) );
                            endif;

                            $sEncodeBody .=     "\n--$boundary\n" .
                                                        "Content-Type: $sMIME;\n" .
                                                        "\tname=\"$sFName\"\n" .
                                                        $encoding .
                                                        "Content-Disposition: attachment;\n" .
                                                        "\tfilename=\"$sFName\"\n\n" .
                                                        $sContent . "\n" ;
                            $nFound ++;
                        else:
                            $sError .= "<br>File $sFileName can not open.\n" ;
                        endif; // if( $fp = fopen( $sFileName, "rb" ) ) :

                    else:
                        $sError .= "<br>File $sFileName doesn't exist.\n" ;
                    endif; //if( file_exists( $sFileName ) ):
        }; // end foreach

         $sEncodeBody .= "\n\n--$boundary--" ;
         $sSource = $txtMsg . $sEncodeBody ;


         $nFound ? mail( $to, $subject, $sSource, $headers  )
                        : mail( $to, $subject, $message, $plainHeaders );

        return $sError ;
}

/* ---------------------------------------------------------------------------------------------------
    Parameters: $sFileName
    Return :
        1. "" :  no extendsion name, or sFileName is empty
        2. string: MIME Type name of array aMimeType's definition.
   ---------------------------------------------------------------------------------------------------*/
function    getMIMEType( $sFileName = "" ) {

        $sFileName = strtolower( trim( $sFileName ) );
        if( ! strlen( $sFileName  ) ) return "";

        $aMimeType = array(
                                        "txt" => "text/plain" ,
                                        "pdf" => "application/pdf" ,
                                        "zip" => "application/x-compressed" ,

                                        "html" => "text/html" ,
                                        "htm" => "text/html" ,

                                        "avi" => "video/avi" ,
                                        "mpg" => "video/mpeg " ,
                                        "wav" => "audio/wav" ,

                                        "jpg" => "image/jpeg " ,
                                        "gif" => "image/gif" ,
                                        "tif" => "image/tiff " ,
                                        "png" => "image/x-png" ,
                                        "bmp" => "image/bmp"
                                    );
        $aFile = split( "\.", basename( $sFileName ) ) ;
        $nDiminson = count( $aFile ) ;
         $sExt = $aFile[ $nDiminson - 1 ] ; // get last part: like ".tar.zip", return "zip"

        return ( $nDiminson > 1 ) ? $aMimeType[ $sExt ] : "";
}
// End Mail Attachment Functions


//------------------------------------------------------------------------------------------
function    appendToFile( $sFileName = "", $line = "" ){
    if( !$sFileName || !$line ) return 0;
    $hFile = fopen( "$sFileName", "a+w" );
    $nBytes = 0;
    if( $hFile ){
        $nBytes = fputs( $hFile , trim($line)."\r\n" );
        fclose( $hFile );
    };
    return $nBytes ;
}
?>
some of that code above it not being used in my form, its just generic from the form maker site.

thanks in advance.
 

sn00p

ClioSport Club Member
  A blue one.
At a guess:

PHP:
<?php
error_reporting(E_PARSE);
define("ADMIN_MAIL", "myemail@here.com");
define("HOST_NAME", $_SERVER['HTTP_HOST']);
define("PHP_SELF", $_SERVER['PHP_SELF']);
define("ERR_MISSING", "Missing field required : ");
define("ERR_EMAIL", "Please enter a valid e-mail address : ");
define("ERR_CREDIT_CARD_NUMBER", "Please check the credit card number : ");
define("ERR_CREDIT_CARD_EXPIRED", "Please check the credit card expiry date : ");
define("ERR_SELECT_UPLOAD", "Please select file : ");// recipient
define('FORM_RECIPIENT', 'myemail@here.com');
// --- Array of Form Elements ---
$form_mail[] = array( "name" => "Full_Name", "text" => "Full Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Company_Name", "text" => "Company Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Email", "text" => "Email Address",  "type" => "email", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Telephone_Number", "text" => "Telephone Number",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Country", "text" => "Country",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "City", "text" => "City",  "type" => "text", "required" => "" ) ;
$form_mail[] = array( "name" => "where", "text" => "Where did you hear about us?",  "type" => "radio", "required" => "Required" ) ;
$form_mail[] = array( "name" => "other", "text" => "If other, or Website please state here",  "type" => "text", "required" => "" ) ;
$form_mail[] = array( "name" => "return_contact", "text" => "How would you like us to contact you?",  "type" => "radio", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Subject", "text" => "Subject",  "type" => "textarea", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Enquiry", "text" => "Enquiry",  "type" => "textarea", "required" => "Required" ) ;
$form_mail[] = array( "name" => "upload_vcard", "text" => "upload vcard",  "type" => "attachment", "required" => "Required" ) ;
// -- Detech Submit & SendMail --
$isHideForm = false;
if( $HTTP_POST_VARS["formmail_submit"] ){
    $sErr = checkPass();
    if( ! $sErr ){
        sendFormMail( $form_mail, "") ;
        $isHideForm = true;

        $redirect = "";
        if( strlen(trim($redirect)) ):
            header( "Location:$redirect" );
            exit;
        endif;
    }
}


?>
<?
// ===============================================
function    sendFormMail( $form_mail, $sFileName = ""  )
{
    global    $HTTP_POST_VARS ;

    if (ereg('/freeformmaker.com/', HOST_NAME))
    {
        return;
    }
    $to = FORM_RECIPIENT;
    $from = "ENQUIRY@" . HOST_NAME;
    $subject = $HTTP_POST_VARS["esh_formmail_subject"];

    // first stage keep it simple:
    $sWhatToDo = $sFileName ? "mailandfile" : "" ; //$HTTP_POST_VARS["esh_formmail_mail_and_file"];

    //$sFileName = $HTTP_POST_VARS["esh_formmail_save_record_file"];
    $cc = $HTTP_POST_VARS["esh_formmail_cc"];
    $bcc = $HTTP_POST_VARS["esh_formmail_bcc"];
    $charset = $HTTP_POST_VARS["esh_formmail_charset"];

    for( $i = 0; $i < count( $form_mail ); $i ++ ){
        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
        $content .= $form_mail[ $i ][ "text" ] . " \t : " . $value ."\n";
        $line .= remove_newline( $value ) . "\t" ;
        if( strtolower("Sender's email") == strtolower($form_mail[ $i ][ "type" ]) ) {
            //print "Type:[" . $form_mail[ $i ][ "type" ] . "] $value <br>\n";
            $from = $value ;
        }
    };
    $content .= "\n\nIP:" . getEnv( "REMOTE_ADDR" );

    switch( strtolower($sWhatToDo) ){
        case "mailandfile" :
            mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;
            if( ! appendToFile( $sFileName, $line ) )
                mailReport( $content . "\n\nWrite Form Mail to File Fail." );
            break;

        case "fileonly" :
            if( ! appendToFile( $sFileName, $line ) )
                mailReport( $content . "\n\nWrite Form Mail to File Fail.", $from );
            break;

        default :
            mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;
    }

    mailAutoResponse( $from ) ;
}


//------------------------------------------------------------------------------------------
function mailAutoResponse( $to ){
    global    $HTTP_POST_VARS ;
    $subject = $HTTP_POST_VARS["esh_formmail_return_subject"];
    $responseMsg = $HTTP_POST_VARS["esh_formmail_return_msg"];
    if( $to && $responseMsg )
        mail( $to, $subject, $responseMsg, "From: " . FORM_RECIPIENT);
}


//------------------------------------------------------------------------------------------
function mailReport( $content = "", $from = "" ){
    mail( ADMIN_MAIL, "Error@" . HOST_NAME . PHP_SELF, $content, "From:$from" );
}

//------------------------------------------------------------------------------------------
function    remove_newline( $str = "" ){
    $newliner = "<!--esh_newline-->" ; // replace \r\n with $newliner ;
    $newtaber = "<!--esh_newtaber-->" ; // replace \t with $newtaber ;
    $str = ereg_replace( "\t", $newtaber, $str );
    $str = ereg_replace( "\r\n", $newliner, $str );
    return ereg_replace( "\n", $newliner, $str );
}

//------------------------------------------------------------------------------------------
function    checkPass()
{
    global    $form_mail ;
    global    $HTTP_POST_VARS ;
    global    $HTTP_POST_FILES ;

    for( $i = 0; $i < count( $form_mail ); $i ++ ){
        $type = strtolower( $form_mail[ $i ][ "type" ]  );
        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
        $required = $form_mail[ $i ][ "required" ] ;
        $text = stripslashes( $form_mail[ $i ][ "text" ] );

        // simple check the field has something keyed in.
        if( !strlen($value) && (  $required == "Required" ) && $type != "attachment" )
            return ERR_MISSING . $text  ;

        // verify the special case
        /*if(
            ( strlen($value) || $type == "attachment" )
            &&  $required == "Required"
        ):
        */
            switch( $type ){
                    case     strtolower("Sender's Name") :
                              break;
                    case     strtolower("Generic email"):
                    //case     strtolower("Sender's email"):
                     case     "email":    
                               if( ! formIsEMail($value) )     return ERR_EMAIL . $text ;
                               break;
                    case    "text" :
                                break;
                    case     "textarea" :
                                break;
                    case    "checkbox" :
                    case     "radio" :
                                break;
                    case     "select" :
                                break;
                    case     "attachment" :
                                $upload_file = $HTTP_POST_FILES[ $form_mail[ $i ]["name"] ][ "tmp_name" ] ;
                                if( ! is_uploaded_file($upload_file)  )
                                    return  ERR_SELECT_UPLOAD . $text;
                                break;
                    case strtolower("Date(MM-DD-YYYY)"):
                                break;
                    case strtolower("Date(MM-YYYY)"):
                                break;
                    case strtolower("CreditCard(MM-YYYY)"):
                                if( $value < date("Y-m") ) return ERR_CREDIT_CARD_EXPIRED  . $text;
                                break;
                    case strtolower("CreditCard#"):
                                if( !formIsCreditNumber( $value )  ) return ERR_CREDIT_CARD_NUMBER  . $text ;
                                break;
                    case strtolower("Time(HH:MM:SS)"):
                                break;
                    case strtolower("Time(HH:MM)"):
                                break;
                    default :
                        //return $sErrRequired . $form_mail[ $i ][ "text" ];
                } // switch
        //endif;
    } // for

    return "" ;
}



//------------------------------------------------------------------------------------------
function formSelected( $var, $val )
{
    echo ( $var == $val ) ? "selected" : "";
}


//------------------------------------------------------------------------------------------
function formChecked( $var, $val )
{
    echo ( $var == $val ) ? "checked" : "";
}


//------------------------------------------------------------------------------------------
function    formIsEMail( $email ){
        return ereg( "^(.+)@(.+)\\.(.+)$", $email );
}


//------------------------------------------------------------------------------------------
function    selectList( $name, $selectedValue, $start, $end, $prompt = "-Select-", $style = "" )
{
    $tab = "\t" ;
    print "<select name=\"$name\" $style>\n" ;
    print $tab . "<option value=''>$prompt</option>\n" ;
    $nLen = strlen( "$end" ) ;
    $prefix_zero = str_repeat( "0", $nLen );
    for( $i = $start; $i <= $end ; $i ++ ){
        $stri = substr( $prefix_zero . $i, strlen($prefix_zero . $i)-$nLen, $nLen );
        $selected = ( $stri == $selectedValue ) ? " selected " : "" ;
        print $tab . "<option value=\"$stri\" $selected >$stri</option>\n" ;
    }
    print "</select>\n\n" ;
}


//------------------------------------------------------------------------------------------
// something like CreditCard.pm in perl CPAN
function formIsCreditNumber( $number ) {

    $tmp = $number;
    $number = preg_replace( "/[^0-9]/", "", $tmp );

    if ( preg_match(  "/[^\d\s]/", $number ) )  return 0;
    if ( strlen($number) < 13  && 0+$number ) return 0;

    for ($i = 0; $i < strlen($number) - 1; $i++) {
        $weight = substr($number, -1 * ($i + 2), 1) * (2 - ($i % 2));
        $sum += (($weight < 10) ? $weight : ($weight - 9));
    }

    if ( substr($number, -1) == (10 - $sum % 10) % 10  )  return $number;
    return $number;
}


// -------------------------- Begin Mail Attachment Functions -----------------------------------------------------------------
function    mailAttachments( $to = "" , $subject = "" , $message = "" , $from = "support@lynx.net" , $charset = "iso-8859-1", $cc = "" , $bcc = "" ){
    global    $HTTP_POST_FILES ;

        if( ! strlen( trim( $to ) ) ) return "Missing \"To\" Field." ;

        $boundary = "====_My_PHP_Form_Generator_" . md5( uniqid( srand( time() ) ) ) . "====";

        // setup mail header infomation
        $headers = "From: $from\r\n";
        if ($cc) $headers .= "CC: $cc\r\n";
        if ($bcc) $headers .= "BCC: $bcc\r\n";
        $plainHeaders = $headers ; // for no attachments header
        $headers .= "MIME-Version: 1.0\nContent-type: multipart/mixed;\n\tboundary=\"$boundary\"\n";

        $txtMsg = "\nThis is a multi-part message in MIME format.\n" .
                        "\n--$boundary\n" .
                        "Content-Type: text/plain;\n\tcharset=\"$charset\"\n\n"  . $message . "\n";

        //create mulitipart attachments boundary
        $sError = "" ;
        $nFound = 0;
        foreach( $HTTP_POST_FILES as $aFile ){
                    $sFileName = $aFile[ "tmp_name" ] ;
                    $sFileRealName = $aFile[ "name" ] ;
                    if( is_file( $sFileName ) ):

                        if( $fp = fopen( $sFileName, "rb" ) ) :
                            $sContent = fread( $fp, filesize( $sFileName ) );
                            $sFName = basename( $sFileRealName ) ;
                            $sMIME = getMIMEType( $sFName ) ;

                            $bPlainText = ( $sMIME == "text/plain" ) ;
                            if( $bPlainText ) :
                                $encoding = "" ;
                            else:
                                $encoding = "Content-Transfer-Encoding: base64\n";
                                $sContent = chunk_split( base64_encode( $sContent ) );
                            endif;

                            $sEncodeBody .=     "\n--$boundary\n" .
                                                        "Content-Type: $sMIME;\n" .
                                                        "\tname=\"$sFName\"\n" .
                                                        $encoding .
                                                        "Content-Disposition: attachment;\n" .
                                                        "\tfilename=\"$sFName\"\n\n" .
                                                        $sContent . "\n" ;
                            $nFound ++;
                        else:
                            $sError .= "<br>File $sFileName can not open.\n" ;
                        endif; // if( $fp = fopen( $sFileName, "rb" ) ) :

                    else:
                        $sError .= "<br>File $sFileName doesn't exist.\n" ;
                    endif; //if( file_exists( $sFileName ) ):
        }; // end foreach

         $sEncodeBody .= "\n\n--$boundary--" ;
         $sSource = $txtMsg . $sEncodeBody ;


         $nFound ? mail( $to, $subject, $sSource, $headers  )
                        : mail( $to, $subject, $message, $plainHeaders );

        return $sError ;
}

/* ---------------------------------------------------------------------------------------------------
    Parameters: $sFileName
    Return :
        1. "" :  no extendsion name, or sFileName is empty
        2. string: MIME Type name of array aMimeType's definition.
   ---------------------------------------------------------------------------------------------------*/
function    getMIMEType( $sFileName = "" ) {

        $sFileName = strtolower( trim( $sFileName ) );
        if( ! strlen( $sFileName  ) ) return "";

        $aMimeType = array(
                                        "txt" => "text/plain" ,
                                        "pdf" => "application/pdf" ,
                                        "zip" => "application/x-compressed" ,

                                        "html" => "text/html" ,
                                        "htm" => "text/html" ,

                                        "avi" => "video/avi" ,
                                        "mpg" => "video/mpeg " ,
                                        "wav" => "audio/wav" ,

                                        "jpg" => "image/jpeg " ,
                                        "gif" => "image/gif" ,
                                        "tif" => "image/tiff " ,
                                        "png" => "image/x-png" ,
                                        "bmp" => "image/bmp"
                                    );
        $aFile = split( "\.", basename( $sFileName ) ) ;
        $nDiminson = count( $aFile ) ;
         $sExt = $aFile[ $nDiminson - 1 ] ; // get last part: like ".tar.zip", return "zip"

        return ( $nDiminson > 1 ) ? $aMimeType[ $sExt ] : "";
}
// End Mail Attachment Functions


//------------------------------------------------------------------------------------------
function    appendToFile( $sFileName = "", $line = "" ){
    if( !$sFileName || !$line ) return 0;
    $hFile = fopen( "$sFileName", "a+w" );
    $nBytes = 0;
    if( $hFile ){
        $nBytes = fputs( $hFile , trim($line)."\r\n" );
        fclose( $hFile );
    };
    return $nBytes ;
}
?>
 
  306 TD Slut
which parts did you change?

PHP:
$form_mail[] = array( "name" => "upload_vcard", "text" => "upload vcard",  "type" => "attachment", "required" => "Required" ) ;
 

sn00p

ClioSport Club Member
  A blue one.
which parts did you change?

PHP:
$form_mail[] = array( "name" => "upload_vcard", "text" => "upload vcard",  "type" => "attachment", "required" => "Required" ) ;

Yeah, that line, it's an associative array with a field called required..so set that to Required (as per the other ones) rather than a blank string.
 

sn00p

ClioSport Club Member
  A blue one.
surley that would mean that that field is required now though..? I'll give it a go

Humn, hang on, I can't read. :eek: Thought you wanted it mandatory!

Let me look at the code again.

Hang on: Replacement code coming.... :p
 
  306 TD Slut
i think it may be something to do with this section

PHP:
case     "attachment" :
                                $upload_file = $HTTP_POST_FILES[ $form_mail[ $i ]["name"] ][ "tmp_name" ] ;
                                if( ! is_uploaded_file($upload_file)  )
                                    return  ERR_SELECT_UPLOAD . $text;
                                break;
 

sn00p

ClioSport Club Member
  A blue one.
PHP:
<?php
error_reporting(E_PARSE);
define("ADMIN_MAIL", "myemail@here.com");
define("HOST_NAME", $_SERVER['HTTP_HOST']);
define("PHP_SELF", $_SERVER['PHP_SELF']);
define("ERR_MISSING", "Missing field required : ");
define("ERR_EMAIL", "Please enter a valid e-mail address : ");
define("ERR_CREDIT_CARD_NUMBER", "Please check the credit card number : ");
define("ERR_CREDIT_CARD_EXPIRED", "Please check the credit card expiry date : ");
define("ERR_SELECT_UPLOAD", "Please select file : ");// recipient
define('FORM_RECIPIENT', 'myemail@here.com');
// --- Array of Form Elements ---
$form_mail[] = array( "name" => "Full_Name", "text" => "Full Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Company_Name", "text" => "Company Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Email", "text" => "Email Address",  "type" => "email", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Telephone_Number", "text" => "Telephone Number",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Country", "text" => "Country",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "City", "text" => "City",  "type" => "text", "required" => "" ) ;
$form_mail[] = array( "name" => "where", "text" => "Where did you hear about us?",  "type" => "radio", "required" => "Required" ) ;
$form_mail[] = array( "name" => "other", "text" => "If other, or Website please state here",  "type" => "text", "required" => "" ) ;
$form_mail[] = array( "name" => "return_contact", "text" => "How would you like us to contact you?",  "type" => "radio", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Subject", "text" => "Subject",  "type" => "textarea", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Enquiry", "text" => "Enquiry",  "type" => "textarea", "required" => "Required" ) ;
$form_mail[] = array( "name" => "upload_vcard", "text" => "upload vcard",  "type" => "attachment", "required" => "" ) ;
// -- Detech Submit & SendMail --
$isHideForm = false;
if( $HTTP_POST_VARS["formmail_submit"] ){
    $sErr = checkPass();
    if( ! $sErr ){
        sendFormMail( $form_mail, "") ;
        $isHideForm = true;

        $redirect = "";
        if( strlen(trim($redirect)) ):
            header( "Location:$redirect" );
            exit;
        endif;
    }
}


?>
<?
// ===============================================
function    sendFormMail( $form_mail, $sFileName = ""  )
{
    global    $HTTP_POST_VARS ;

    if (ereg('/freeformmaker.com/', HOST_NAME))
    {
        return;
    }
    $to = FORM_RECIPIENT;
    $from = "ENQUIRY@" . HOST_NAME;
    $subject = $HTTP_POST_VARS["esh_formmail_subject"];

    // first stage keep it simple:
    $sWhatToDo = $sFileName ? "mailandfile" : "" ; //$HTTP_POST_VARS["esh_formmail_mail_and_file"];

    //$sFileName = $HTTP_POST_VARS["esh_formmail_save_record_file"];
    $cc = $HTTP_POST_VARS["esh_formmail_cc"];
    $bcc = $HTTP_POST_VARS["esh_formmail_bcc"];
    $charset = $HTTP_POST_VARS["esh_formmail_charset"];

    for( $i = 0; $i < count( $form_mail ); $i ++ ){
        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
        $content .= $form_mail[ $i ][ "text" ] . " \t : " . $value ."\n";
        $line .= remove_newline( $value ) . "\t" ;
        if( strtolower("Sender's email") == strtolower($form_mail[ $i ][ "type" ]) ) {
            //print "Type:[" . $form_mail[ $i ][ "type" ] . "] $value <br>\n";
            $from = $value ;
        }
    };
    $content .= "\n\nIP:" . getEnv( "REMOTE_ADDR" );

    switch( strtolower($sWhatToDo) ){
        case "mailandfile" :
            mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;
            if( ! appendToFile( $sFileName, $line ) )
                mailReport( $content . "\n\nWrite Form Mail to File Fail." );
            break;

        case "fileonly" :
            if( ! appendToFile( $sFileName, $line ) )
                mailReport( $content . "\n\nWrite Form Mail to File Fail.", $from );
            break;

        default :
            mailAttachments( $to , $subject , $content,  $from,  $charset, $cc , $bcc ) ;
    }

    mailAutoResponse( $from ) ;
}


//------------------------------------------------------------------------------------------
function mailAutoResponse( $to ){
    global    $HTTP_POST_VARS ;
    $subject = $HTTP_POST_VARS["esh_formmail_return_subject"];
    $responseMsg = $HTTP_POST_VARS["esh_formmail_return_msg"];
    if( $to && $responseMsg )
        mail( $to, $subject, $responseMsg, "From: " . FORM_RECIPIENT);
}


//------------------------------------------------------------------------------------------
function mailReport( $content = "", $from = "" ){
    mail( ADMIN_MAIL, "Error@" . HOST_NAME . PHP_SELF, $content, "From:$from" );
}

//------------------------------------------------------------------------------------------
function    remove_newline( $str = "" ){
    $newliner = "<!--esh_newline-->" ; // replace \r\n with $newliner ;
    $newtaber = "<!--esh_newtaber-->" ; // replace \t with $newtaber ;
    $str = ereg_replace( "\t", $newtaber, $str );
    $str = ereg_replace( "\r\n", $newliner, $str );
    return ereg_replace( "\n", $newliner, $str );
}

//------------------------------------------------------------------------------------------
function    checkPass()
{
    global    $form_mail ;
    global    $HTTP_POST_VARS ;
    global    $HTTP_POST_FILES ;

    for( $i = 0; $i < count( $form_mail ); $i ++ ){
        $type = strtolower( $form_mail[ $i ][ "type" ]  );
        $value = trim( $HTTP_POST_VARS[ $form_mail[ $i ][ "name" ] ] );
        $required = $form_mail[ $i ][ "required" ] ;
        $text = stripslashes( $form_mail[ $i ][ "text" ] );

        // simple check the field has something keyed in.
        if( !strlen($value) && (  $required == "Required" ) && $type != "attachment" )
            return ERR_MISSING . $text  ;

        // verify the special case
        /*if(
            ( strlen($value) || $type == "attachment" )
            &&  $required == "Required"
        ):
        */
            switch( $type ){
                    case     strtolower("Sender's Name") :
                              break;
                    case     strtolower("Generic email"):
                    //case     strtolower("Sender's email"):
                     case     "email":    
                               if( ! formIsEMail($value) )     return ERR_EMAIL . $text ;
                               break;
                    case    "text" :
                                break;
                    case     "textarea" :
                                break;
                    case    "checkbox" :
                    case     "radio" :
                                break;
                    case     "select" :
                                break;
                    case     "attachment" :
								if ($required=="Required")
								{
 	                               $upload_file = $HTTP_POST_FILES[ $form_mail[ $i ]["name"] ][ "tmp_name" ] ;
	                                if( ! is_uploaded_file($upload_file)  )
	                                    return  ERR_SELECT_UPLOAD . $text;
								}
                                break;
                    case strtolower("Date(MM-DD-YYYY)"):
                                break;
                    case strtolower("Date(MM-YYYY)"):
                                break;
                    case strtolower("CreditCard(MM-YYYY)"):
                                if( $value < date("Y-m") ) return ERR_CREDIT_CARD_EXPIRED  . $text;
                                break;
                    case strtolower("CreditCard#"):
                                if( !formIsCreditNumber( $value )  ) return ERR_CREDIT_CARD_NUMBER  . $text ;
                                break;
                    case strtolower("Time(HH:MM:SS)"):
                                break;
                    case strtolower("Time(HH:MM)"):
                                break;
                    default :
                        //return $sErrRequired . $form_mail[ $i ][ "text" ];
                } // switch
        //endif;
    } // for

    return "" ;
}



//------------------------------------------------------------------------------------------
function formSelected( $var, $val )
{
    echo ( $var == $val ) ? "selected" : "";
}


//------------------------------------------------------------------------------------------
function formChecked( $var, $val )
{
    echo ( $var == $val ) ? "checked" : "";
}


//------------------------------------------------------------------------------------------
function    formIsEMail( $email ){
        return ereg( "^(.+)@(.+)\\.(.+)$", $email );
}


//------------------------------------------------------------------------------------------
function    selectList( $name, $selectedValue, $start, $end, $prompt = "-Select-", $style = "" )
{
    $tab = "\t" ;
    print "<select name=\"$name\" $style>\n" ;
    print $tab . "<option value=''>$prompt</option>\n" ;
    $nLen = strlen( "$end" ) ;
    $prefix_zero = str_repeat( "0", $nLen );
    for( $i = $start; $i <= $end ; $i ++ ){
        $stri = substr( $prefix_zero . $i, strlen($prefix_zero . $i)-$nLen, $nLen );
        $selected = ( $stri == $selectedValue ) ? " selected " : "" ;
        print $tab . "<option value=\"$stri\" $selected >$stri</option>\n" ;
    }
    print "</select>\n\n" ;
}


//------------------------------------------------------------------------------------------
// something like CreditCard.pm in perl CPAN
function formIsCreditNumber( $number ) {

    $tmp = $number;
    $number = preg_replace( "/[^0-9]/", "", $tmp );

    if ( preg_match(  "/[^\d\s]/", $number ) )  return 0;
    if ( strlen($number) < 13  && 0+$number ) return 0;

    for ($i = 0; $i < strlen($number) - 1; $i++) {
        $weight = substr($number, -1 * ($i + 2), 1) * (2 - ($i % 2));
        $sum += (($weight < 10) ? $weight : ($weight - 9));
    }

    if ( substr($number, -1) == (10 - $sum % 10) % 10  )  return $number;
    return $number;
}


// -------------------------- Begin Mail Attachment Functions -----------------------------------------------------------------
function    mailAttachments( $to = "" , $subject = "" , $message = "" , $from = "support@lynx.net" , $charset = "iso-8859-1", $cc = "" , $bcc = "" ){
    global    $HTTP_POST_FILES ;

        if( ! strlen( trim( $to ) ) ) return "Missing \"To\" Field." ;

        $boundary = "====_My_PHP_Form_Generator_" . md5( uniqid( srand( time() ) ) ) . "====";

        // setup mail header infomation
        $headers = "From: $from\r\n";
        if ($cc) $headers .= "CC: $cc\r\n";
        if ($bcc) $headers .= "BCC: $bcc\r\n";
        $plainHeaders = $headers ; // for no attachments header
        $headers .= "MIME-Version: 1.0\nContent-type: multipart/mixed;\n\tboundary=\"$boundary\"\n";

        $txtMsg = "\nThis is a multi-part message in MIME format.\n" .
                        "\n--$boundary\n" .
                        "Content-Type: text/plain;\n\tcharset=\"$charset\"\n\n"  . $message . "\n";

        //create mulitipart attachments boundary
        $sError = "" ;
        $nFound = 0;
        foreach( $HTTP_POST_FILES as $aFile ){
                    $sFileName = $aFile[ "tmp_name" ] ;
                    $sFileRealName = $aFile[ "name" ] ;
                    if( is_file( $sFileName ) ):

                        if( $fp = fopen( $sFileName, "rb" ) ) :
                            $sContent = fread( $fp, filesize( $sFileName ) );
                            $sFName = basename( $sFileRealName ) ;
                            $sMIME = getMIMEType( $sFName ) ;

                            $bPlainText = ( $sMIME == "text/plain" ) ;
                            if( $bPlainText ) :
                                $encoding = "" ;
                            else:
                                $encoding = "Content-Transfer-Encoding: base64\n";
                                $sContent = chunk_split( base64_encode( $sContent ) );
                            endif;

                            $sEncodeBody .=     "\n--$boundary\n" .
                                                        "Content-Type: $sMIME;\n" .
                                                        "\tname=\"$sFName\"\n" .
                                                        $encoding .
                                                        "Content-Disposition: attachment;\n" .
                                                        "\tfilename=\"$sFName\"\n\n" .
                                                        $sContent . "\n" ;
                            $nFound ++;
                        else:
                            $sError .= "<br>File $sFileName can not open.\n" ;
                        endif; // if( $fp = fopen( $sFileName, "rb" ) ) :

                    else:
                        $sError .= "<br>File $sFileName doesn't exist.\n" ;
                    endif; //if( file_exists( $sFileName ) ):
        }; // end foreach

         $sEncodeBody .= "\n\n--$boundary--" ;
         $sSource = $txtMsg . $sEncodeBody ;


         $nFound ? mail( $to, $subject, $sSource, $headers  )
                        : mail( $to, $subject, $message, $plainHeaders );

        return $sError ;
}

/* ---------------------------------------------------------------------------------------------------
    Parameters: $sFileName
    Return :
        1. "" :  no extendsion name, or sFileName is empty
        2. string: MIME Type name of array aMimeType's definition.
   ---------------------------------------------------------------------------------------------------*/
function    getMIMEType( $sFileName = "" ) {

        $sFileName = strtolower( trim( $sFileName ) );
        if( ! strlen( $sFileName  ) ) return "";

        $aMimeType = array(
                                        "txt" => "text/plain" ,
                                        "pdf" => "application/pdf" ,
                                        "zip" => "application/x-compressed" ,

                                        "html" => "text/html" ,
                                        "htm" => "text/html" ,

                                        "avi" => "video/avi" ,
                                        "mpg" => "video/mpeg " ,
                                        "wav" => "audio/wav" ,

                                        "jpg" => "image/jpeg " ,
                                        "gif" => "image/gif" ,
                                        "tif" => "image/tiff " ,
                                        "png" => "image/x-png" ,
                                        "bmp" => "image/bmp"
                                    );
        $aFile = split( "\.", basename( $sFileName ) ) ;
        $nDiminson = count( $aFile ) ;
         $sExt = $aFile[ $nDiminson - 1 ] ; // get last part: like ".tar.zip", return "zip"

        return ( $nDiminson > 1 ) ? $aMimeType[ $sExt ] : "";
}
// End Mail Attachment Functions


//------------------------------------------------------------------------------------------
function    appendToFile( $sFileName = "", $line = "" ){
    if( !$sFileName || !$line ) return 0;
    $hFile = fopen( "$sFileName", "a+w" );
    $nBytes = 0;
    if( $hFile ){
        $nBytes = fputs( $hFile , trim($line)."\r\n" );
        fclose( $hFile );
    };
    return $nBytes ;
}
?>

Edit:

Just seen your post above, you are correct - that's what I've changed. I can't run the PHP so I can't check it, but I think that'll do what you want.
 
  306 TD Slut
lol, i was rather surprised that you didnt pop up first matey!

If you are bored you could always cut all that PHP down to minimal size for me..? lol
 

KDF

  Audi TT Stronic
Had a quick look but not much point TBH. You could remove the functions that you dont seem to be using (credit card checks for example)

But in order to totally compress it down would be quicker rewriting it from scratch.
 


Top