Jump to content

Add validation question


flamtech

Recommended Posts

I have created a form with http://www.freeformmaker.com/index.php here is the files.

 

1.

<?php
error_reporting(E_PARSE);
define("ADMIN_MAIL", "[email protected]");
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', '[email protected]');
// --- Array of Form Elements ---
$form_mail[] = array( "name" => "Name", "text" => "Name",  "type" => "text", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Email", "text" => "Email",  "type" => "email", "required" => "Required" ) ;
$form_mail[] = array( "name" => "Message_Format", "text" => "Message Format",  "type" => "radio", "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 = "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"):
				 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 = "[email protected]" , $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 ;
}
?>

 

and

 

<?php 	include_once( "20080521-3a01803a5a5c29f6097b4fbd500938ac.lib.php" ); ?>
<html>
<head>
<title>Free Form Maker - PHP Forms</title>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-1">
<meta name="keywords" content="free forms php form maker">
<meta name="description" content="build php forms with unlimited fields automatic validation, file attachments and auto-responder.">
	<style type='text/css'>
	.form_title{
		color : #000000;
		font-size: 13px;
		font-family: verdana, Geneva, Arial, Helvetica, sans-serif;
		font-weight : bold;
	}

	.form_field {
		font-size : 13px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #474747;
		font-weight : bold;
		text-align:left;
	}

	.form_text{
		font-size : 11px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #000000;
	}

	.text_box{
		font-size : 11px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #000000;
		width:200px;
	}

	.text_area{
		font-size : 11px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #000000;
		width:200px;
		height:60px;
	}

	.text_select{
		font-size : 11px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #000000;
	}

	.form_error{
		font-size : 11px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #ff0000;
		font-weight : bold;
	}

	.copyright{
		font-size : 11px;
		font-family : Verdana, Arial, Helvetica, sans-serif;
		color : #000000;
	}

</style>
</head>
<body  marginheight="0" marginwidth="0" leftmargin="0" topmargin="0">
<center>
<meta http-equiv="content-type" content="text/html; charset=">


<!-- Begin: Form Description -->

<br><br><br>
<table cellspacing='16' cellpadding='0' border='0' align='center' ><tr><td>

<font class='form_title'></font>

</td></tr></table>

<!-- End: Your FormMail's Description -->





<!-- Begin: Form -->



<?php
if( !$isHideForm ): 
	global $sErr ;
	if( $sErr ) print "<br><a name='error'></a><center><font class='form_error' >$sErr</font></center><br>"; 

	$starColor = $sErr ? "#ff0000" : "#000000";
	$style=" class='form_text' ";
?>

<form name="frmFormMail" action="<?php print PHP_SELF ?>" method='post' enctype='multipart/form-data'>
<input type='hidden' name='formmail_submit' value='Y'>
<input type='hidden' name='esh_formmail_subject' value="New">
<input type='hidden' name='esh_formmail_return_subject' value="">
<input type='hidden' name='esh_formmail_return_msg' value="">

<table cellspacing='16' cellpadding='0' border='0'  >
<tr>
	<td class="form_field" valign='top' align='right'>Name </td><td width='10'  aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
	<td class="form_text">
<input type="text" name="Name"  value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Name" ] ); ?>" class='text_box'>
	</td>
</tr>

<tr>
	<td class="form_field" valign='top' align='right'>Email </td><td width='10'  aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
	<td class="form_text">
<input type="email" name="Email"  value="<?php  print HtmlSpecialChars( $HTTP_POST_VARS[ "Email" ] ); ?>" class='text_box'>
	</td>
</tr>

<tr>
	<td class="form_field" valign='top' align='right'>Message Format </td><td width='10'  aligh='right' valign='top'> <font size='2' color='#ff0000'>*</font> </td>
	<td class="form_text">
<input type="radio" name="Message_Format"  value="TIFF"  <?php  formChecked( $HTTP_POST_VARS[ "Message_Format" ], "TIFF" ); ?> > TIFF<br>
<input type="radio" name="Message_Format"  value="PDF"  <?php  formChecked( $HTTP_POST_VARS[ "Message_Format" ], "PDF" ); ?> > PDF<br>

	</td>
</tr>


<tr><td colspan=3 align='center'><input type='submit' value='Submit'>    <input type='button' value='Cancel' onclick="location.href='/';"></td></tr>
</table>


</form>




<!-- End: -->



<?php
	if( $sErr ) print "<script language='javascript' type='text/javascript'>location.href='#error';</script>";;; 

else: //!$isHideForm
print( "<br><br><hr><center><b>Your form has been sent. Thank you.</b><br><br><input type='button' value='Home' onclick=\"location.href='/';\"></center><br><br>" );
endif; //!$isHideForm
		?>

<!-- footer -->
<br /><br />
<div class='form_copyr'>
	Generated by : <a href="http://www.freeformmaker.com/" target="_blank">Free Form Maker</a>
</div>
<p> </p>
</center>


<script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
</script>
<script type="text/javascript">
_uacct = "UA-2637029-29";
urchinTracker();
</script>

</body>
</html>

 

I want to insert a question "Is fire hot or cold". If the answer is not "hot" (not case sensitive) the user must try again.

 

Any help will be appreciated.

Link to comment
https://forums.phpfreaks.com/topic/106579-add-validation-question/
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • 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.