Jump to content

HELP WITH PHP FORM


dark_go

Recommended Posts

hI, guys.

 

I've been seeking some help with this php form. Everything is fine but the php script does not validate the email field. So, for instance, if i forget to write down the "@", the script does send the form info instead of showing a notice. I hope someone here can give me a hand. Another question. what script should i add to the file if I want the php to allow only numbers in a textfield (like for example, a phone number)

 

Here are the 3 files (the form.php, form.css...)

 

Here is the php code

 

 

<?php

error_reporting(E_PARSE);

define("ADMIN_MAIL", "jb@bwp.net");

define("HOST_NAME", $_SERVER['HTTP_HOST']);

define("PHP_SELF", $_SERVER['PHP_SELF']);

define("ERR_MISSING", "Missing required field : ");

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', 'dark_go@hotmail.com');

// --- Array of Form Elements ---

$form_mail[] = array( "name" => "erterter", "text" => "erterter",  "type" => "text", "required" => "Required" ) ;

$form_mail[] = array( "name" => "etrt", "text" => "etrt",  "type" => "text", "required" => "Required" ) ;

$form_mail[] = array( "name" => "xxcvcv", "text" => "xxcvcv",  "type" => "text", "required" => "Required" ) ;

$form_mail[] = array( "name" => "email", "text" => "email",  "type" => "email", "required" => "Required" ) ;

$form_mail[] = array( "name" => "sdfdfsd", "text" => "sdfdf",  "type" => "date(mm-dd-yyyy)", "required" => "Required" ) ;

 

 

// -- Create new vars for checkPass() & sendFormMail() --

$HTTP_POST_VARS[ "sdfdfsd" ] = ( $HTTP_POST_VARS[ "sdfdfsd_YYYY" ] && $HTTP_POST_VARS[ "sdfdfsd_MM" ] && $HTTP_POST_VARS[ "sdfdfsd_DD" ] )

                                                          ?  $HTTP_POST_VARS[ "sdfdfsd_YYYY" ] . "-" .  $HTTP_POST_VARS[ "sdfdfsd_MM" ]  . "-" .  $HTTP_POST_VARS[ "sdfdfsd_DD" ]

                                                          : "" ;

 

 

 

// -- 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 = "NO_REPLY@" . 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"):

  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 ;

}

?>

 

[attachment deleted by admin]

Link to comment
Share on other sites

first, put ALL ur code like this, ESP the BIG CODE

 


<?php
error_reporting(E_PARSE);
define("ADMIN_MAIL", "jb@bwp.net");
define("HOST_NAME", $_SERVER['HTTP_HOST']);
define("PHP_SELF", $_SERVER['PHP_SELF']);
define("ERR_MISSING", "Missing required field : ");
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', 'dark_go@hotmail.com');
// --- Array of Form Elements ---
$form_mail[] = array( "name" => "erterter", "text" => "erterter",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "etrt", "text" => "etrt",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "xxcvcv", "text" => "xxcvcv",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "email", "text" => "email",  "type" => "email", "required" => "Required" ) ;
$form_mail[] = array( "name" => "sdfdfsd", "text" => "sdfdf",  "type" => "date(mm-dd-yyyy)", "required" => "Required" ) ;


// -- Create new vars for checkPass() & sendFormMail() --
$HTTP_POST_VARS[ "sdfdfsd" ] = ( $HTTP_POST_VARS[ "sdfdfsd_YYYY" ] && $HTTP_POST_VARS[ "sdfdfsd_MM" ] && $HTTP_POST_VARS[ "sdfdfsd_DD" ] )
                                                          ?  $HTTP_POST_VARS[ "sdfdfsd_YYYY" ] . "-" .  $HTTP_POST_VARS[ "sdfdfsd_MM" ]  . "-" .  $HTTP_POST_VARS[ "sdfdfsd_DD" ]
                                                          : "" ;



// -- 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 = "NO_REPLY@" . 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
\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"):
                        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 .= "
File $sFileName can not open.\n" ;
                        endif; // if( $fp = fopen( $sFileName, "rb" ) ) :

                    else:
                        $sError .= "
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 ;
}
?>

 

now ill look at it

 

UPDATE

 

minor errors: you keep changing from <?php to <?  think about just sticking to <?php incase short_tags is disabled, ill keep trying to look :P

 

*headache* brb

Link to comment
Share on other sites

I think the bug is here. Please, check it out

 

//------------------------------------------------------------------------------------------

function    formIsEMail( $email ){

       return ereg( "^(.+)@(.+)\\.(.+)$", $email );

}

 

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.