[ Ludvig @ 09.03.2013. 16:18 ] @
Pošto nisam upoznat sa php-om napravio sam kontakt formu preko generatora,na stranici gdje je napravljena sve radi ali kada je stavim na stranicu jednostavno neće,znam da bi trebao nešto dodati a ne znam gdje ni kako ako ima netko tko bi izgubio par minuta da to pogleda poslao bi mu na mail .
Previše je dugačka da ovdje postavim
moj mail je: [email protected]

Ovo je prva:

<?php

// if the from is loaded from WordPress form loader plugin,
// the phpfmg_display_form() will be called by the loader
if( !defined('FormmailMakerFormLoader') ){
# This block must be placed at the very top of page.
# --------------------------------------------------
require_once( dirname(__FILE__).'/form.lib.php' );
phpfmg_display_form();
# --------------------------------------------------
};


function phpfmg_form( $sErr = false ){
$style=" class='form_text' ";

?>

<form name="frmFormMail" action='' method='post' enctype='multipart/form-data' onsubmit='return fmgHandler.onsubmit(this);'>
<input type='hidden' name='formmail_submit' value='Y'>
<div id='err_required' class="form_error" style='display:none;'>
<label class='form_error_title'>Please check the required fields</label>
</div>



<ol class='phpfmg_form' >

<li class='field_block' id='field_0_div'><div class='col_label'>
<label class='form_field'>Ime i Prezime</label> <label class='form_required' >*</label> </div>
<div class='col_field'>
<input type="text" name="field_0" id="field_0" value="<?php phpfmg_hsc("field_0", ""); ?>" class='text_box'>
<div id='field_0_tip' class='instruction'></div>
</div>
</li>

<li class='field_block' id='field_1_div'><div class='col_label'>
<label class='form_field'>Email</label> <label class='form_required' >*</label> </div>
<div class='col_field'>
<input type="text" name="field_1" id="field_1" value="<?php phpfmg_hsc("field_1", ""); ?>" class='text_box'>
<div id='field_1_tip' class='instruction'></div>
</div>
</li>

<li class='field_block' id='field_2_div'><div class='col_label'>
<label class='form_field'>Kontakt broj</label> <label class='form_required' >&nbsp;</label> </div>
<div class='col_field'>
<input type="text" name="field_2" id="field_2" value="<?php phpfmg_hsc("field_2", ""); ?>" class='text_box'>
<div id='field_2_tip' class='instruction'></div>
</div>
</li>

<li class='field_block' id='field_3_div'><div class='col_label'>
<label class='form_field'>Poruka</label> <label class='form_required' >*</label> </div>
<div class='col_field'>
<textarea name="field_3" id="field_3" rows=4 cols=25 class='text_area'><?php phpfmg_hsc("field_3"); ?></textarea>

<div id='field_3_tip' class='instruction'></div>
</div>
</li>

<li class='field_block' id='field_4_div'><div class='col_label'>
<label class='form_field'>Privitak</label> <label class='form_required' >&nbsp;</label> </div>
<div class='col_field'>
<input type="file" name="field_4" id="field_4" value="" class='text_box' onchange="fmgHandler.check_upload(this);">
<div id='field_4_tip' class='instruction'></div>
</div>
</li>


<li class='field_block' id='phpfmg_captcha_div'>
<div class='col_label'><label class='form_field'>Security Code:</label> <label class='form_required' >*</label> </div><div class='col_field'>
<?php phpfmg_show_captcha(); ?>
</div>
</li>


<li>
<div class='col_label'>&nbsp;</div>
<div class='form_submit_block col_field'>

<input type='submit' value='Submit' class='form_button'>
<span id='phpfmg_processing' style='display:none;'>
<img id='phpfmg_processing_gif' src='<?php echo PHPFMG_ADMIN_URL . '?mod=image&amp;func=processing' ;?>' border=0 alt='Processing...'> <label id='phpfmg_processing_dots'></label>
</span>
</div>
</li>

</ol>




</form>




<?php

phpfmg_javascript($sErr);

}
# end of form




function phpfmg_form_css(){
$formOnly = isset($GLOBALS['formOnly']) && true === $GLOBALS['formOnly'];
?>
<style type='text/css'>
<?php
if( !$formOnly ){
echo"
body{
margin-left: 18px;
margin-top: 18px;
}

body{
font-family : Verdana, Arial, Helvetica, sans-serif;
font-size : 13px;
color : #474747;
background-color: transparent;
}

select, option{
font-size:13px;
}
";
}; // if
?>

ol.phpfmg_form{
list-style-type:none;
padding:0px;
margin:0px;
}

ol.phpfmg_form li{
margin-bottom:5px;
clear:both;
display:block;
overflow:hidden;
width: 100%
}


.form_field, .form_required{
font-weight : bold;
}

.form_required{
color:red;
margin-right:8px;
}

.field_block_over{
}

.form_submit_block{
padding-top: 3px;
}

.text_box, .text_area, .text_select {
width:300px;
}

.text_area{
height:80px;
}

.form_error_title{
font-weight: bold;
color: red;
}

.form_error{
background-color: #F4F6E5;
border: 1px dashed #ff0000;
padding: 10px;
margin-bottom: 10px;
}

.form_error_highlight{
background-color: #F4F6E5;
border-bottom: 1px dashed #ff0000;
}

div.instruction_error{
color: red;
font-weight:bold;
}

hr.sectionbreak{
height:1px;
color: #ccc;
}

#one_entry_msg{
background-color: #F4F6E5;
border: 1px dashed #ff0000;
padding: 10px;
margin-bottom: 10px;
}

<?php phpfmg_text_align();?>



</style>

<?php
}
# end of css

# By: formmail-maker.com
?>



Ovo je druga

<?php
# PHPFMG_ID:'20130308-6131'
# Date : 20130308 14:41:55
# Generated By Free PHP Formmail Generator : http://phpfmg.sourceforge.net
# -----------------------------------------------------------------------------


define( 'PAYPAL_ID' , '' ); // Put donation ID here to disable the copyright link

define( 'PHPFMG_TO' , '[email protected]' );
define( 'PHPFMG_REDIRECT', 'http://www.onlinecentar.net/Kontakt_Upit.html' );

define( 'PHPFMG_ID' , '20130308-6131' );
define( 'PHPFMG_ROOT_DIR' , dirname(__FILE__) );
define( 'PHPFMG_SAVE_FILE' , PHPFMG_ROOT_DIR . '/form-data-log.php' ); // save submitted data to this file
define( 'PHPFMG_EMAILS_LOGFILE' , PHPFMG_ROOT_DIR . '/email-traffics-log.php' ); // log email traffics to this file
if( !defined('PHPFMG_ADMIN_URL') ) define( 'PHPFMG_ADMIN_URL' , 'admin.php' ); // might be defined already by wordpress form loader plugin

define( 'PHPFMG_SAVE_ATTACHMENTS' , '' );
define( 'PHPFMG_SAVE_ATTACHMENTS_DIR' , PHPFMG_ROOT_DIR . '/uploaded/' );

// three options : empty - always mail file as attachment, 0 - always mail file as link, N - mail file as link if filesize larger than N Kilobytes
define( 'PHPFMG_FILE2LINK_SIZE' , '' );

define( 'PHPFMG_UPLOAD_CONTROL' , '' );
define( 'PHPFMG_HARMFUL_EXTS' , ".php, .html, .css, .js, .exe, .com, .bat, .vb, .vbs, scr, .inf, .reg, .lnk, .pif, .ade, .adp, .app, .bas, .chm, .cmd, .cpl, .crt, .csh, .fxp, .hlp, .hta, .ins, .isp, .jse, .ksh, .Lnk, .mda, .mdb, .mde, .mdt, .mdw, .mdz, .msc, .msi, .msp, .mst, .ops, .pcd, .prf, .prg, .pst, .scf, .scr, .sct, .shb, .shs, .url, .vbe, .wsc, .wsf, .wsh" );
define( 'PHPFMG_HARMFUL_EXTS_MSG' , 'File is potential harmful. Upload is not allowed.' );
define( 'PHPFMG_ALLOW_EXTS' , ".jpg, .gif, .png, .bmp" );
define( 'PHPFMG_ALLOW_EXTS_MSG' , "Upload is not allowed. Please check your file type." );

define( 'PHPFMG_SUBJECT' , "KONTAKT" );
define( 'PHPFMG_CC' , '' );
define( 'PHPFMG_BCC', '' );

// for auto-response email
define( 'PHPFMG_RETURN_ENABLE' , 'Y' ); // 'Y' to enable auto-response email, use '' or 'N' to turn off
define( 'PHPFMG_YOUR_NAME' , '' ); // name of auto-response mail address
define( 'PHPFMG_RETURN_EMAIL' , "" );
define( 'PHPFMG_RETURN_SUBJECT' , "Automatska poruka" ); // auto-response mail subject
define( 'PHPFMG_RETURN_NO_ATTACHMENT' , '' ); // Y - No attachements will be included for auto-response email


define( 'PHPFMG_CHARSET' , 'UTF-8' );
define( 'PHPFMG_MAIL_TYPE' , 'html' ); // send mail in html format or plain text.
define( 'PHPFMG_ACTION' , 'mailandfile' ); // delivery method
define( 'PHPFMG_TEXT_ALIGN' , 'top' ); // field label text alignment: top, right, left
define( 'PHPFMG_NO_FROM_HEADER' , '' ); // don't make up From: header.
define( 'PHPFMG_SENDMAIL_FROM' , '' ); // force sender's email

define( 'PHPFMG_USE_PHPMAILER' , '' ); // Y - use phpmailer as the default

// smtp options
define( 'PHPFMG_USE_SMTP' , '' ); // Y - enable
define( 'PHPFMG_SMTP_HOST' , '' );
define( 'PHPFMG_SMTP_USER' , '' );
define( 'PHPFMG_SMTP_PASSWORD' , '' );
define( 'PHPFMG_SMTP_PLAIN_PASSWORD' , '' ); // use this to overwrite above password
define( 'PHPFMG_SMTP_PORT' , '' ); // default 25, use 465 for gmail
define( 'PHPFMG_SMTP_SECURE' , '' );
define( 'PHPFMG_SMTP_DEBUG_LEVEL' , '' ); // empty or 0 - trun off debug

if( !class_exists('PHPMailer') && file_exists(PHPFMG_ROOT_DIR.'/phpmailer.php') ){
include_once( PHPFMG_ROOT_DIR.'/phpmailer.php' );
};


define( 'PHPFMG_SIMPLE_CAPTCHA_NAME' , phpfmg_captcha_name() ); // comment this line if you want to disable the simple built-in captcha code

define( 'HOST_NAME',getEnv( 'SERVER_NAME' ) );
define( 'PHP_SELF', getEnv( 'SCRIPT_NAME' ) );
define( 'PHPFMG_LNCR', phpfmg_linebreak() );

define( 'PHPFMG_ANTI_HOTLINKING' , '' );
define( 'PHPFMG_REFERERS_ALLOW', "" ); // Referers - domains/ips that you will allow forms to reside on.
define( 'PHPFMG_REFERERS_DENIED_MSG', "You are coming from an <b>unauthorized domain.</b>" );

define( 'PHPFMG_ONE_ENTRY' , '' );
define( 'PHPFMG_ONE_ENTRY_METHOD' , '' );

phpfmg_init();
# -----------------------------------------------------------------------------









function phpfmg_thankyou(){
phpfmg_redirect_js();
?>

<!-- [Your confirmation message goes here] -->
<br>

<b></b>
<br><br>

<?php

} // end of function phpfmg_thankyou()



function phpfmg_auto_response_message(){
ob_start();
?>
Poštovani %TitleOfSender% %NameOfSender%,

Šaljemo Vam kopiju upita.
Ovo je automatska poruka i molimo Vas da ne odgovarate na nju. Hvala!

%DataOfForm%

Vaš upit ćemo obraditi u što kraćem vremenskom roku i kontaktirat Vas.

Srdačan pozdrav,
Daniel Rušev
Online Centar za strane jezike

Website: www.onlinecentar.net
<?php
$msg = ob_get_contents() ;
ob_end_clean();
return trim($msg);
}



function phpfmg_mail_template(){
ob_start();
?>
Dobili ste mail od %TitleOfSender% %NameOfSender%.

Podaci:
%DataOfForm%

Daniel Rusev,
Web Administrator

IP: %IP%
Date: %Date%
Time: %Time%
Reference ID: %AutoID%

Website: www.onlinecentar.net
<?php
$msg = ob_get_contents() ;
ob_end_clean();
return trim($msg);
}




# --- Array of Form Elements ---
$GLOBALS['form_mail'] = array();
$GLOBALS['form_mail']['field_0'] = array( "name" => "field_0", "text" => "Ime i Prezime", "type" => "sender's name", "instruction" => "", "required" => "Required" ) ;
$GLOBALS['form_mail']['field_1'] = array( "name" => "field_1", "text" => "Email", "type" => "sender's email", "instruction" => "", "required" => "Required" ) ;
$GLOBALS['form_mail']['field_2'] = array( "name" => "field_2", "text" => "Kontakt broj", "type" => "", "instruction" => "", "required" => "" ) ;
$GLOBALS['form_mail']['field_3'] = array( "name" => "field_3", "text" => "Poruka", "type" => "textarea", "instruction" => "", "required" => "Required" ) ;
$GLOBALS['form_mail']['field_4'] = array( "name" => "field_4", "text" => "Privitak", "type" => "attachment", "instruction" => "", "required" => "" ) ;

?>
<?php
/**
* Copyright (C) : http://www.formmail-maker.com
*/

function phpfmg_init(){

error_reporting( E_ERROR );
ini_set('magic_quotes_runtime', 0);
ini_set( 'max_execution_time', 0 );
ini_set( 'max_input_time', 36000 );

session_start();

if( !isset($_SESSION['HTTP_REFERER']) )
$_SESSION['HTTP_REFERER'] = $_SERVER['HTTP_REFERER'] ;
phpfmg_check_referers();

if ( get_magic_quotes_gpc() && isset($_POST) ) {
phpfmg_stripslashes( $_POST );
};

}


function phpfmg_stripslashes(&$var){
if(!is_array($var)) {
$var = stripslashes($var);
} else {
array_walk($var,'phpfmg_stripslashes');
};
}


function phpfmg_display_form( $title="", $keywords="", $description="" ){
@header( 'Content-Type: text/html; charset=' . PHPFMG_CHARSET );
$phpfmg_send = phpfmg_sendmail( $GLOBALS['form_mail'] ) ;
$isHideForm = isset($phpfmg_send['isHideForm']) ? $phpfmg_send['isHideForm'] : false;
$sErr = isset($phpfmg_send['error']) ? $phpfmg_send['error'] : '';

# FormMail main()
phpfmg_header( $title, $keywords, $description );
if( !$isHideForm ){
phpfmg_form($sErr);
}else{
phpfmg_thankyou();
};
phpfmg_footer();

return;
}

function phpfmg_linebreak(){
$os = strtolower(PHP_OS);
switch( true ){
case ("\\" == DIRECTORY_SEPARATOR) : // windows
return "\x0d\x0a" ;
case ( strpos($os, 'darwin') !== false ) : // Mac
return "\x0d" ;
default :
return "\x0a" ; // *nix
};
}

function phpfmg_sendmail( &$form_mail ) {
if( !isset($_POST["formmail_submit"]) ) return ;

$isHideForm = false ;
$sErr = checkPass($form_mail);

$err_captcha = phpfmg_check_captcha();
if( $err_captcha != '' ){
$sErr['fields'][] = 'phpfmg_captcha';
$sErr['errors'][] = ERR_CAPTCHA;
};

if( empty($sErr['fields']) && phpfmg_has_entry() ){
$sErr['fields'][] = 'phpfmg_found_entry';
$sErr['errors'][] = 'Found entry already!';
};
if( empty($sErr['fields']) ){

sendFormMail( $form_mail, PHPFMG_SAVE_FILE ) ;
$isHideForm = true;
// move the redirect to phpfmg_thankyou() to get around the redirection within an iframe problem
/*
$redirect = PHPFMG_REDIRECT;
if( strlen(trim($redirect)) ):
header( "Location: $redirect" );
exit;
endif;
*/
};

return array(
'isHideForm' => $isHideForm,
'error' => $sErr ,
);
}


function phpfmg_has_entry(){
if( !file_exists(PHPFMG_SAVE_FILE) ){
return false; // has nothing to check
};

$found = false ;
if( defined('PHPFMG_ONE_ENTRY') && 'Y' == PHPFMG_ONE_ENTRY ){
$query = defined('PHPFMG_ONE_ENTRY_METHOD') && PHPFMG_ONE_ENTRY_METHOD == 'email' && isset($GLOBALS['sender_email']) ? $GLOBALS['sender_email'] : $_SERVER['REMOTE_ADDR'] ;
if( empty($query) )
return false ;

$GLOBALS['OneEntry'] = $query;
$query = '"'. strtolower($query) . '"';
$handle = fopen(PHPFMG_SAVE_FILE,'r');
if ($handle) {
while (!feof($handle)) {
$entry = strtolower(fgets($handle, 4096));
if( strpos($entry,$query) !== false ){
$found = true ;
break;
};
};
fclose($handle);
};
};
return $found ;

}

function sendFormMail( $form_mail, $sFileName = "" )
{
$to = filterEmail(PHPFMG_TO) ;
$cc = filterEmail(PHPFMG_CC) ;
$bcc = filterEmail(PHPFMG_BCC) ;

// simply chop email address to avoid my website being abused
if( false !== strpos( strtolower($_SERVER['HTTP_HOST']),'formmail-maker.com') ){
$cc = substr($cc, 0, 50);
$bcc = substr($bcc,0, 50);
};


$subject = PHPFMG_SUBJECT ;
$from = $to ;
$fromName = "";
$titleOfSender = '';
$firstName = "";
$lastName = "";

$strip = get_magic_quotes_gpc() ;
$content = '' ;
$style = 'font-family:Verdana, Arial, Helvetica, sans-serif; font-size : 13px; color:#474747;padding:6px;border-bottom:1px solid #cccccc;' ;
$tr = array() ; // html table
$csvValues = array();
$cols = array();
$replace = array();
$RecordID = phpfmg_getRecordID();
$isWritable = is_writable( dirname(PHPFMG_SAVE_ATTACHMENTS_DIR) );

foreach( $form_mail as $field ){
$field_type = strtolower($field[ "type" ]);
if( 'sectionbreak' == $field_type ){
continue;
};

$field[ "text" ] = stripslashes( $field[ "text" ] );
//$value = trim( $_POST[ $field[ "name" ] ] );
$value = phpfmg_field_value( $field[ "name" ] );
$value = $strip ? stripslashes($value) : $value ;
if( 'attachment' == $field_type ){
$value = $isWritable ? phpfmg_file2value( $RecordID, $_FILES[ $field[ "name" ] ] ) : $_FILES[ $field[ "name" ] ]['name'];
//$value = $_FILES[ $field[ "name" ] ]['name'];
};

$content .= $field[ "text" ] . " \t : " . $value .PHPFMG_LNCR;
$tr[] = "<tr> <td valign=top style='{$style};width:33%;border-right:1px solid #cccccc;'>" . $field[ "text" ] . "&nbsp;</td> <td valign=top style='{$style};'>" . nl2br($value) . "&nbsp;</td></tr>" ;
$csvValues[] = csvfield( $value );
$cols[] = csvfield( $field[ "text" ] );
$replace["%".$field[ "name" ]."%"] = $value;

switch( $field_type ){
case "sender's email" :
$from = filterEmail($value) ;
break;
case "sender's name" :
$fromName = filterEmail($value) ;
break;
case "titleofsender" :
$titleOfSender = $value ;
break;
case "senderfirstname" :
$firstName = filterEmail($value) ;
break;
case "senderlastname" :
$lastName = filterEmail($value) ;
break;
default :
// nothing
};

}; // for

$isHtml = 'html' == PHPFMG_MAIL_TYPE ;

if( $isHtml ) {
$content = "<table cellspacing=0 cellpadding=0 border=0 >" . PHPFMG_LNCR . join( PHPFMG_LNCR, $tr ) . PHPFMG_LNCR . "</table>" ;
};


if( !empty($firstName) && !empty($lastName) ){
$fromName = $firstName . ' ' . $lastName;
};
$fromHeader = filterEmail( ('' != $fromName ? "\"$fromName\"" : '' ) . " <{$from}>",array(",", ";")) ; // no multiple emails are allowed.

$_fields = array(
'%NameOfSender%' => $fromName,
'%FirstNameOfSender%' => $firstName,
'%LastNameOfSender%' => $lastName,
'%EmailOfSender%' => $from,
'%TitleOfSender%' => $titleOfSender,
'%DataOfForm%' => $content,
'%IP%' => $_SERVER['REMOTE_ADDR'],
'%Date%' => date("Y-m-d"),
'%Time%' => date("H:i:s"),
'%HTTP_HOST%' => $_SERVER['HTTP_HOST'],
'%FormPageLink%' => phpfmg_request_uri(),
'%HTTP_REFERER%' => $_SESSION['HTTP_REFERER'],
'%AutoID%' => $RecordID,
'%FormAdminURL%' => phpfmg_admin_url()
);
$fields = array_merge( $_fields, $replace );

$esh_mail_template = trim(phpfmg_mail_template());
if( !empty($esh_mail_template) ){
$esh_mail_template = phpfmg_adjust_template($esh_mail_template);
$content = phpfmg_parse_mail_body( $esh_mail_template, $fields );
};
$subject = phpfmg_parse_mail_body( $subject, $fields );

if( $isHtml ) {
$content = phpfmg_getHtmlContent( $content );
};

$oldMask = umask(0);
//$sep = ','; //chr(0x09);
$sep = chr(0x09);
$recordCols = phpfmg_data2record( csvfield('RecordID') . $sep . csvfield('Date') . $sep . csvfield('IP') . $sep . join($sep,$cols) );
$record = phpfmg_data2record( csvfield($RecordID) . $sep . csvfield(date("Y-m-d H:i:s")) . $sep . csvfield($_SERVER['REMOTE_ADDR']) .$sep . join($sep,$csvValues) );


/*
Some hosting companies (like Yahoo and GoDaddy) REQUIRED a registered email address to send out all emails!
The mailer HAS to use the REGISTERED email address as the sender's email address. This is called the sendmail_from.
*/
$sendmail_from = $from;
$sender_email = $from;
$force_sender = defined('PHPFMG_SENDMAIL_FROM') && '' != PHPFMG_SENDMAIL_FROM ;
if( $force_sender ){
ini_set("sendmail_from", PHPFMG_SENDMAIL_FROM);
$sendmail_from = PHPFMG_SENDMAIL_FROM;
};
if( defined('PHPFMG_SMTP') && '' != PHPFMG_SMTP ){
ini_set("SMTP", PHPFMG_SMTP);
};



switch( strtolower(PHPFMG_ACTION) ){
case 'fileonly' :
appendToFile( $sFileName, $record, $recordCols );
break;
case 'mailonly' :
mailAttachments( $to , $subject , $content, $sendmail_from, $fromName, $fromHeader, $cc , $bcc, PHPFMG_CHARSET ) ;
break;
case 'mailandfile' :
default:
mailAttachments( $to , $subject , $content, $sendmail_from, $fromName, $fromHeader, $cc , $bcc, PHPFMG_CHARSET ) ;
appendToFile( $sFileName, $record, $recordCols );
}; // switch

mailAutoResponse( $sender_email, $force_sender ? $sendmail_from : $to, $fields ) ;
umask($oldMask);

session_destroy();
session_regenerate_id(true);
}





function phpfmg_file2value( $recordID, $file ){
$tmp = $file[ "tmp_name" ] ;
$name = phpfmg_rename_harmful(trim($file[ "name" ])) ;
if( !defined('PHPFMG_FILE2LINK_SIZE') ){
return $name;
};

if( is_uploaded_file( $tmp ) ) {
$size = trim(PHPFMG_FILE2LINK_SIZE) ;
switch( $size ){
case '' :
return $name;
default:
$isHtml = 'html' == PHPFMG_MAIL_TYPE;
$filelink= base64_encode( serialize(array('recordID'=>$recordID, 'filename'=>$name)) );
$url = phpfmg_admin_url() . "?mod=filman&func=download&filelink=" . urlencode($filelink) ;
$isLarger = (filesize($tmp)/1024) > $size ;
$link = $isHtml ? "<a href='{$url}'>$name</a>" : $name . " ( {$url} )";
return $isLarger ? $link : $name ; // email download link when size is larger defined size, otherwise send as attachment
};// switch
}; // if

return $name;
}



function phpfmg_dir2unix( $dir ){
return str_replace( array("\\", '//'), '/', $dir );
}



function phpfmg_request_uri(){
$uri = getEnv('REQUEST_URI'); // apache has this
if( false !== $uri && strlen($uri) > 0 ){
return $uri ;
} else {

$uri = ($uri = getEnv('SCRIPT_NAME')) !== false
? $uri
: getEnv('PATH_INFO') ;
$qs = getEnv('QUERY_STRING'); // IIS and Apache has this
return $uri . ( empty($qs) ? '' : '?' . $qs );

};
return "" ;
}




// parse full admin url to view large size uploaded file online
function phpfmg_admin_url(){
$http_host = "http://{$_SERVER['HTTP_HOST']}";
switch( true ){
case (0 === strpos(PHPFMG_ADMIN_URL, 'http://' )) :
$url = PHPFMG_ADMIN_URL;
break;
case ( '/' == substr(PHPFMG_ADMIN_URL,0,1) ) :
$url = $http_host . PHPFMG_ADMIN_URL ;
break;
default:
$uri = phpfmg_request_uri();
$pos = strrpos( $uri, '/' );
$vdir = substr( $uri, 0, $pos );
$url = $http_host . $vdir . '/' . PHPFMG_ADMIN_URL ;
};
return $url;
}



function phpfmg_ispost(){
return 'POST' == strtoupper($_SERVER["REQUEST_METHOD"]) || 'POST' == strtoupper(getEnv('REQUEST_METHOD')) ;
}


function phpfmg_is_mysite(){
return false !== strpos( strtolower($_SERVER['HTTP_HOST']),'formmail-maker.com'); // accessing form at mysite
}

// don't allow hotlink form to my website. To avoid people create phishing form.
function phpfmg_hotlinking_mysite(){
$yes = phpfmg_is_mysite()
&& ( empty($_SERVER['HTTP_REFERER']) || false === strpos( strtolower($_SERVER['HTTP_REFERER']),'formmail-maker.com') ) ; // doesn't have referer of mysite

if( $yes ){
die( "<b>Access Denied.</b>
<br><br>
You are visiting a form hotlinkink from <a href='http://www.formmail-maker.com'>formmail-maker.com</a> which is not allowed.
Please read the <a href='http://www.formmail-maker.com/web-form-mail-faq.php'>FAQ</a>.
" );
};
}



function phpfmg_check_referers(){

phpfmg_hotlinking_mysite(); // anti phishing

$debugs = array();
$debugs[] = "Your IP: " . $_SERVER['REMOTE_ADDR'];
$debugs[] = "Referer link: " . $_SERVER['HTTP_REFERER'];
$debugs[] = "Host of referer: $referer";

$check = defined('PHPFMG_ANTI_HOTLINKING') && 'Y' == PHPFMG_ANTI_HOTLINKING;
if( !$check ) {
$debugs[] = "Referer is empty. No need to check hot linking.";
//echo "<pre>" . join("\n",$debugs) . "</pre>\n";
//appendToFile( PHPFMG_EMAILS_LOGFILE, date("Y-m-d H:i:s") . "\t" . $_SERVER['REMOTE_ADDR'] . " \n" . join("\n",$debugs) ) ;
return true;
};

// maybe post from local file
if( !isset($_SERVER['HTTP_REFERER']) && phpfmg_ispost() ){
appendToFile( PHPFMG_EMAILS_LOGFILE, date("Y-m-d H:i:s") . "\t" . $_SERVER['REMOTE_ADDR'] . " \n phpfmg_ispost " . join("\n",$debugs) ) ;
die( PHPFMG_REFERERS_DENIED_MSG );
};


$url = parse_url($_SERVER['HTTP_REFERER']);
$referer = str_replace( 'www.', '', strtolower($url['host']) );
if( empty($referer) ) {
return true;
};

$hosts = explode(',',PHPFMG_REFERERS_ALLOW);
$http_host = strtolower($_SERVER['HTTP_HOST']);
$referer = $http_host ;
$hosts[] = str_replace('www.', '', $http_host );

$debugs[] = "Hosts Allow: " . PHPFMG_REFERERS_ALLOW;

$allow = false ;
foreach( $hosts as $host ){
$host = strtolower(trim($host));
$debugs[] = "check host: $host " ;
if( false !== strpos($referer, $host) || false !== strpos($referer, 'www.'.$host) ){
$allow = true;
$debugs[] = " -> allow (quick exit)";
break;
}else{
$debugs[] = " -> deny";
};
};

//echo "<pre>" . join("\n",$debugs) . "</pre>\n";
//appendToFile( PHPFMG_EMAILS_LOGFILE, date("Y-m-d H:i:s") . "\t" . $_SERVER['REMOTE_ADDR'] . " \n" . join("\n",$debugs) ) ;

if( !$allow ){
die( PHPFMG_REFERERS_DENIED_MSG );
};
}



function phpfmg_getRecordID(){
if( !isset($GLOBALS['RecordID']) ){
$GLOBALS['RecordID'] = date("Ymd") . '-'. substr( md5(uniqid(rand(), true)), 0,4 );
};
return $GLOBALS['RecordID'];
}



function phpfmg_data2record( $s, $b=true ){
$from = array( "\r", "\n");
$to = array( "\\r", "\\n" );
return $b ? str_replace( $from, $to, $s ) : str_replace( $to, $from, $s ) ;
}



function csvfield( $str ){
$str = str_replace( '"', '""', $str );
return '"' . trim($str) . '"';
}



function mailAttachments( $to = "" , $subject = "" , $message = "" , $from="", $fromName = "" , $fromHeader ="", $cc = "" , $bcc = "", $charset = "UTF-8", $type = 'FormMail' ){

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

$isAutoResponse = $type == 'AutoResponseEmail' ;
// added PHPMailer SMTP support at Mar 12, 2011
$isSMTP = defined('PHPFMG_USE_SMTP') && 'Y' == PHPFMG_USE_SMTP && defined('PHPFMG_SMTP_HOST') && '' != PHPFMG_SMTP_HOST;

// due to security issues, in most case, the smtp will fail on my website. It only works on user's own server
// so just disable the smtp here
if( phpfmg_is_mysite() ){
$isSMTP = false ;
};

$attachments = array();
$noAutoAttachements = $isAutoResponse && defined('PHPFMG_RETURN_NO_ATTACHMENT') && 'Y' == PHPFMG_RETURN_NO_ATTACHMENT ;
$use_phpmailer = defined('PHPFMG_USE_PHPMAILER') && 'Y' == PHPFMG_USE_PHPMAILER ;


$boundary = "====_My_PHP_Form_Generator_" . md5( uniqid( srand( time() ) ) ) . "====";
$content_type = 'html' == PHPFMG_MAIL_TYPE ? "text/html" : "text/plain" ;

// setup mail header infomation
$headers = 'Y' == PHPFMG_NO_FROM_HEADER ? '' : "From: {$fromHeader}" .PHPFMG_LNCR;
if ($cc) $headers .= "CC: $cc".PHPFMG_LNCR;
if ($bcc) $headers .= "BCC: $bcc".PHPFMG_LNCR;
//$headers .= "Content-type: {$content_type}; charset={$charset}" .PHPFMG_LNCR ;

$plainHeaders = $headers ; // for no attachments header
$plainHeaders .= 'MIME-Version: 1.0' . PHPFMG_LNCR;
$plainHeaders .= "Content-type: {$content_type}; charset={$charset}" ;

//create mulitipart attachments boundary
$sError = "" ;
$nFound = 0;


if( false && isset($GLOBALS['phpfmg_files_content']) && '' != $GLOBALS['phpfmg_files_content'] ){

// use previous encoded content
$sEncodeBody = $GLOBALS['phpfmg_files_content'] ;
$nFound = $GLOBALS['phpfmg_nFound'] ;

}else{

$file2link_size = trim(PHPFMG_FILE2LINK_SIZE) ;
$isSave = ('' != $file2link_size || defined('PHPFMG_SAVE_ATTACHMENTS') && 'Y' == PHPFMG_SAVE_ATTACHMENTS);
if( $isSave ){
if( defined('PHPFMG_SAVE_ATTACHMENTS_DIR') ){
if( !is_dir(PHPFMG_SAVE_ATTACHMENTS_DIR) ){
$ok = @mkdir( PHPFMG_SAVE_ATTACHMENTS_DIR, 0777 );
if( !$ok ) $isSave = false;
};
};
};

$isWritable = is_writable( dirname(PHPFMG_SAVE_ATTACHMENTS_DIR) );
// parse attachments content
foreach( $_FILES as $aFile ){
$sFileName = $aFile[ "tmp_name" ] ;
$sFileRealName = phpfmg_rename_harmful($aFile[ "name" ]) ;
if( is_uploaded_file( $sFileName ) ):

$isSkip = '' != $file2link_size && ( (filesize($sFileName)/1024) > $file2link_size );
// save uploaded file
if( $isWritable && $isSave ){
$tofile = PHPFMG_SAVE_ATTACHMENTS_DIR . phpfmg_getRecordID() . '-' . basename($sFileRealName);
if( @copy( $sFileName, $tofile) ) {
chmod($tofile,0777);
};
};

if( $isSkip )
continue; // mail file as link

$attachments[] = array('file' => $sFileName, 'name' => $aFile[ "name" ] );

if( !$use_phpmailer && !$isSMTP && ($fp = @fopen( $sFileName, "rb" )) ) :
$sContent = fread( $fp, filesize( $sFileName ) );
fclose($fp);
$sFName = basename( $sFileRealName ) ;
$sMIME = getMIMEType( $sFName ) ;

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

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

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

$sEncodeBody .= PHPFMG_LNCR.PHPFMG_LNCR."--$boundary--" ;

$GLOBALS['phpfmg_files_content'] = $sEncodeBody ;
$GLOBALS['phpfmg_nFound'] = $nFound ;

}; // if

$headers .= "MIME-Version: 1.0".PHPFMG_LNCR."Content-type: multipart/mixed;".PHPFMG_LNCR."\tboundary=\"$boundary\"";
$txtMsg = PHPFMG_LNCR."This is a multi-part message in MIME format." .PHPFMG_LNCR .
PHPFMG_LNCR."--$boundary" .PHPFMG_LNCR .
"Content-Type: {$content_type};".PHPFMG_LNCR.
"\tcharset=\"$charset\"" .PHPFMG_LNCR.PHPFMG_LNCR .
$message . PHPFMG_LNCR;


if( $noAutoAttachements ) $sEncodeBody = '' ;

$body = $nFound ? $txtMsg . $sEncodeBody : $message ;
$headers = $nFound ? $headers : $plainHeaders ;


$errmsg = "";
if( $isSMTP || $use_phpmailer ){
if( $noAutoAttachements ) $attachments = false ;
$errmsg = phpfmg_phpmailer( $to, $subject, $body, $from, $fromName, $cc , $bcc , $charset, $attachments );

}else{

if ( !mail( $to, $subject, $body, $headers ) )
$errmsg = "Failed to send mail";
};

$ok = $errmsg == "" ;
$status = $ok ? "\n[Email sent]" : "\n[{$errmsg}]" ;
phpfmg_log_mail( $to, $subject, ($ok ? 'Email sent' : 'Failed to send mail') . "\n" . ($nFound ? $headers . $txtMsg : $headers . $message), '', $type . $status ); // no log for attachments

return $sError ;
}


function phpfmg_phpmailer( $to, $subject, $message, $from, $fromName, $cc = "" , $bcc = "", $charset = "UTF-8",$attachments = false ){

$mail = new PHPMailer();
$mail->Host = PHPFMG_SMTP_HOST; // SMTP server
$mail->Username = PHPFMG_SMTP_USER;
$mail->Password = PHPFMG_SMTP_PLAIN_PASSWORD != '' ? PHPFMG_SMTP_PLAIN_PASSWORD : base64_decode(PHPFMG_SMTP_PASSWORD);
$mail->SMTPAuth = PHPFMG_SMTP_PASSWORD != "";
$mail->SMTPSecure = PHPFMG_SMTP_SECURE;
$mail->Port = PHPFMG_SMTP_PORT == "" ? 25 : PHPFMG_SMTP_PORT;
if( defined('PHPFMG_SMTP_DEBUG_LEVEL') && PHPFMG_SMTP_DEBUG_LEVEL != "" ){
$mail->SMTPDebug = (int)PHPFMG_SMTP_DEBUG_LEVEL ;
};

$mail->From = $from;
$mail->FromName = $fromName;
$mail->Subject = $subject;
$mail->Body = $message;
$mail->CharSet = $charset;

if( !phpfmg_is_mysite() && (defined('PHPFMG_USE_SMTP') && 'Y' == PHPFMG_USE_SMTP) ){
$mail->IsSMTP();
};

$mail->IsHTML('html' == PHPFMG_MAIL_TYPE);

$mail->AddAddress($to);

if( ''!= $cc ){
$CCs = explode(',',$cc);
foreach($CCs as $c){
$mail->AddCC( $c );
};
};

if( ''!= $bcc ){
$BCCs = explode(',',$bcc);
foreach($BCCs as $b){
$mail->AddBCC( $b );
};
};


if( is_array($attachments) ){
foreach($attachments as $f){
$mail->AddAttachment( $f['file'], basename($f['name']) );
};
};

return $mail->Send() ? "" : $mail->ErrorInfo;

}



function mailAutoResponse( $to, $from, $fields = false ){
if( !formIsEMail($to) ) return ERR_EMAIL ; // one more check for spam robot
$enable = defined('PHPFMG_RETURN_ENABLE') && PHPFMG_RETURN_ENABLE === 'Y';
$body = trim(phpfmg_auto_response_message());
if( !$enable || empty($body) ){
return false ;
};

$subject = PHPFMG_RETURN_SUBJECT;
$isHtml = 'html' == PHPFMG_MAIL_TYPE ;
$body = phpfmg_adjust_template($body);
$body = phpfmg_parse_mail_body($body,$fields);
$subject = phpfmg_parse_mail_body( $subject, $fields );
if( $isHtml ) {
$body = phpfmg_getHtmlContent( $body );
};
$body = str_replace( "0x0d", '', $body );
$body = str_replace( "0x0a", PHPFMG_LNCR, $body );

if( defined('PHPFMG_RETURN_EMAIL') && formIsEMail(PHPFMG_RETURN_EMAIL) ){
$from = PHPFMG_RETURN_EMAIL;
};
$fromHeader = ( PHPFMG_YOUR_NAME == "" ? "" : "\"".PHPFMG_YOUR_NAME . "\"" ) . " <{$from}>";
return mailAttachments( $to , $subject , $body, filterEmail($from), PHPFMG_YOUR_NAME, $fromHeader, '' , '', PHPFMG_CHARSET, 'AutoResponseEmail' );

}


function phpfmg_log_mail( $to='', $subject='', $body='', $headers = '', $type='' ){
$sep = PHPFMG_LNCR . str_repeat('----',20) . PHPFMG_LNCR ;
appendToFile( PHPFMG_EMAILS_LOGFILE, date("Y-m-d H:i:s") . "\t" . $_SERVER['REMOTE_ADDR'] . "\t{$type}" . $sep . "To: {$to}\r\nSubject: {$subject}\r\n" . $headers . $body . "<br>" . PHPFMG_LNCR . $sep . PHPFMG_LNCR ) ;
}



function phpfmg_getHtmlContent( $body ){
$html = "<html><title>Your Form Mail Content | htttp://phpfmg.sourceforge.net</title><style type='text/css'>body, td{font-family : Verdana, Arial, Helvetica, sans-serif;font-size : 13px;}</style><body>"
. $body ."</body></html>";
return $html ;
}



function phpfmg_adjust_template( $body ){
$isHtml = 'html' == PHPFMG_MAIL_TYPE ;
if( $isHtml ){
$body = preg_match( "/<[^<>]+>/", $body ) ? $body : nl2br($body);
};
return $body;
}



function phpfmg_parse_mail_body( $body, $fields = false ){
if( !is_array($fields) )
return $body ;

$yes = function_exists( 'str_ireplace' );
foreach( $fields as $name => $value ){
$body = $yes ? str_ireplace( $name, $value ,$body )
: str_replace ( $name, $value ,$body );
};
return trim($body);
}



# filter line breaks to avoid emails injecting
function filterEmail($email, $chars = ''){
$email = trim(str_replace( array("\r","\n"), '', $email ));
if( is_array($chars) ) $email = str_replace( $chars, '', $email );
$email = preg_replace( '/(cc\s*\:|bcc\s*\:)/i', '', $email );
return $email;
}



function mailReport( $content = "", $file = '' ){
$content = "
Dear Sir or Madam,

Your online form at " . HOST_NAME . PHP_SELF . " failed to save data to file. Please make sure the web user has permission to write to file \"{$file}\". If you don't know how to fix it, please forward this email to technical support team of your web hosting company or your Administrator.

PHPFMG
- PHP FormMail Generator
";
mail(PHPFMG_TO, "[email protected]" . HOST_NAME . PHP_SELF, $content );
}



function remove_newline( $str = "" ){
return str_replace( array("\r\n", "\r", "\n"), array('\r\n', '\r', '\n'), $str );
}



function checkPass( $form_mail = array() )
{

$names = array();
$labels = array();

foreach( $form_mail as $field ){
$type = strtolower( $field[ "type" ] );
//$value = trim( $_POST[ $field[ "name" ] ] );
$value = phpfmg_field_value( $field[ "name" ] );
$required = strtolower($field[ "required" ]) ;
$text = stripslashes( $field[ "text" ] );

// simple check the field has something keyed in.
if( !strlen($value) && ( $required == "required" ) && $type != "attachment" ){
$names[] = $field[ "name" ];
$labels[] = $text;
//return ERR_MISSING . $text ;
continue;
};

// 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) ) {
$names[] = $field[ "name" ];
$labels[] = $text . ERR_EMAIL;
//return ERR_EMAIL . $text ;
};
// for checking entry limitation
if( $type == "sender's email" ){
$GLOBALS['sender_email'] = $value;
};
break;
case "text" :
break;
case "textarea" :
break;
case "checkbox" :
case "radio" :
break;
case "select" :
break;
case "attachment" :
$upload_file = $_FILES[ $field["name"] ][ "tmp_name" ] ;
if( ! is_uploaded_file($upload_file) ){
$names[] = $field[ "name" ];
$labels[] = $text;
//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") ) {
$names[] = $field[ "name" ];
$labels[] = $text;
//return ERR_CREDIT_CARD_EXPIRED . $text;
};
break;
case strtolower("CreditCard#"):
if( !formIsCreditNumber( $value ) ) {
$names[] = $field[ "name" ];
$labels[] = $text;
//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 array(
'fields' => $names,
'errors' => $labels,
);
}



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;
}


/* ---------------------------------------------------------------------------------------------------
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 ] : "";
}



function appendToFile( $sFileName = "", $line = "", $dataColumnsLine = '' ){
if( !$sFileName || !$line ) return 0;

$isExists = file_exists( $sFileName );
$hFile = @fopen( "$sFileName", "a+w" );
$nBytes = 0;
if( $hFile ){
if( !$isExists && false !== strpos(strtolower(basename($sFileName)), '.php') ){
fputs( $hFile, "<?php exit(); /* For security reason. To avoid public user downloading below data! */?>\r\n");
if( !empty($dataColumnsLine) ){
fputs($hFile,$dataColumnsLine."\r\n");
};
};
$nBytes = fputs( $hFile , trim($line)."\r\n" );
fclose( $hFile );
};
return $nBytes ;
}

function phpfmg_get_csv_header(){
$csvValues = array();
foreach( $GLOBALS['form_mail'] as $field ){
$csvValues[] = csvfield( $field[ "text" ] );
};
return join(chr(0x09),/*","*/$csvValues) ;
}

/*
function phpfmg_field_instruction($name, $show = true ){
global $form_mail, $sErr;
$isError = in_array($name,$sErr['fields']);
$class = $isError ? 'instruction_error' : 'instruction' ;
if( $show || $isError ) echo "<div class='{$class}'>". htmlspecialchars_decode($form_mail[ $name ]['instruction']) . "</div>";
}
*/

function phpfmg_rand( $len = 4 ){
$md5 = md5( uniqid(rand()) );
return $len > 0 ? substr($md5,0,$len) : $md5 ;
}



// use a random name for stopping spam bot bypass the form.php, and post raw data directly
function phpfmg_captcha_name(){
if( !isset($_SESSION['captcha_name']) ){
$_SESSION['captcha_name'] = phpfmg_rand(8); //PHPFMG_ID.'fmgCaptchCode';
};
return $_SESSION['captcha_name'];
}

function phpfmg_check_captcha(){
$errmsg = '';
if( phpfmg_is_reCAPTCHA() ){
$resp = recaptcha_check_answer (reCAPTCHA_PRIVATE_KEY,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);
$errmsg = $resp->is_valid ? '' : $resp->error ;

}else{

//if( isset($_SESSION[PHPFMG_ID.'fmgCaptchCode']) && strtoupper($_POST['fmgCaptchCode']) != strtoupper($_SESSION[PHPFMG_ID.'fmgCaptchCode']) ){
$name = phpfmg_captcha_name();
if( (defined('PHPFMG_SIMPLE_CAPTCHA_NAME') && PHPFMG_SIMPLE_CAPTCHA_NAME != '') &&
( !isset( $_POST[$name] ) || // maybe sutmited by spam bot
strtoupper($_POST[$name]) != strtoupper($_SESSION[$name]) // or user didn't type correct code
)
){
$errmsg = ERR_CAPTCHA ;
};

};

return $errmsg ;
}


function phpfmg_is_reCAPTCHA(){
return defined('reCAPTCHA_PUBLIC_KEY') && defined('reCAPTCHA_PRIVATE_KEY') && function_exists ("mcrypt_encrypt") && is_file( PHPFMG_ROOT_DIR.'/recaptchalib.php' ) ;
}

function phpfmg_show_captcha(){
if( phpfmg_is_reCAPTCHA() ){
echo recaptcha_get_html(reCAPTCHA_PUBLIC_KEY);
return ;
};
$url = PHPFMG_ADMIN_URL . '?mod=captcha&amp;func=get&amp;tid=' ;
$onclick= "onclick=\"document.getElementById('phpfmg_captcha_image').src='{$url}'+Math.random();return false;\" " ;
echo "<a href='http://www.formmail-maker.com' {$onclick} title=\"Free Mail Form Tool\"><img id=\"phpfmg_captcha_image\" src=\"". $url . time() ."\" border=0 style=\"cursor:pointer;\" alt=\"Click the image to reload. PHP FormMail Generator at http://phpfmg.sourceforge.net\"></a>\n";
echo "<a href='http://phpfmg.sourceforge.net' {$onclick} style=\"color:#474747;\" title=\"Reload PHP FormMail Generator Security Image\" >Reload Image</a><br>\n";
echo "<input type='text' name='" . phpfmg_captcha_name() ."' value='' class='fmgCaptchCode' style='width:73px;' >\n";
}



function phpfmg_hsc($field, $default){
echo isset($_POST[ $field ])
? HtmlSpecialChars( $_POST[ $field ] )
: $default;
}

function phpfmg_dropdown( $name, $options, $showInputbox = false, $isMultiple = false, $extra = '', $isReturn = false, $class = 'text_select' ){
//$showInputbox = true;
$displayLast = 'none' ;
$onchange = $showInputbox ? " onchange=\"toggleOtherInputBox('{$name}','select','{$name}');\" " : "" ;
$sMultiple = $isMultiple ? 'multiple="multiple"' : '' ;
$other = "{$name}_other" ;

$dropdown = array();
$list = explode( '|', $options );
$dropdown[] = "<select name='{$name}" . ($isMultiple ? '[]' : '') ."' id='{$name}' class='{$class}' {$extra} {$onchange} {$sMultiple} >";
if( is_array($list) ){
$len = count($list);
$i = 0 ;
$isPost = isset($_POST) && count($_POST) > 0;
foreach( $list as $opt ){
$o = phpfmg_parse_option( $opt );
if( $showInputbox && $i == $len - 1 )
$o['value'] = 'other';

if( $isPost ){
$selected = ($o['value'] == $_POST[ $name ] ||
$isMultiple && is_array($_POST[ $name ]) && in_array($o['value'],$_POST[ $name ]) || (empty($_POST[ $name ]) && $o['default']) ) // multiple select
? 'selected' : '' ;
}else{
$selected = $o['default'] ? 'selected' : '' ;
};
if( $isPost && $i == $len - 1 && $selected == 'selected' ){
$displayLast = '' ;
};
$dropdown[] = "<option value=\"{$o['value']}\" {$selected}>{$o['text']}</option>";
$i ++ ;
};
};
$dropdown[] = "</select>\n";

if( $showInputbox ){
$dropdown[] = "<input type='hidden' name='{$name}_other_check' id='{$name}_other_check' value='" . ($displayLast==''? 1:0) . "'>" ;
$dropdown[] = "<br id='{$other}_br'><input type='text' name='{$other}' id='{$other}' value=\"" . HtmlSpecialChars($_POST[$other]) . "\" style='display:{$displayLast};' class='text_box' >" ;
};

$s = join("\t\n",$dropdown);

if( $isReturn )
return $s;
else
echo $s ;
}


function phpfmg_date_dropdown( $cfgDate, $showSep = true ){
$sep = $showSep ? $cfgDate['separator'] . "&nbsp;" : "";
$field_name = $cfgDate['field_name'];
if( !isset($cfgDate['yyyy']) ){
$startYear = $cfgDate['startYear'];
$endYear = $cfgDate['endYear'];
$year = range( $startYear, $endYear );
$cfgDate['yyyy'] = $cfgDate['yearPrompt'] . '=,|' . join("|",$year);
};

switch( $cfgDate['format'] ){
case 'mm/dd/yyyy' :
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_day', $cfgDate['day'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_yyyy', $cfgDate['yyyy'], false, false, '', false, '' );
break;
case 'dd/mm/yyyy' :
phpfmg_dropdown( $field_name.'_day', $cfgDate['day'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_yyyy', $cfgDate['yyyy'], false, false, '', false, '' );
break;
case 'yyyy/mm/dd' :
phpfmg_dropdown( $field_name.'_yyyy', $cfgDate['yyyy'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_day', $cfgDate['day'], false, false, '', false, '' );
break;
case 'mm/yyyy' :
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_yyyy', $cfgDate['yyyy'], false, false, '', false, '' );
break;
case 'yyyy/mm' :
phpfmg_dropdown( $field_name.'_yyyy', $cfgDate['yyyy'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
break;
case 'mm/dd' :
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_day', $cfgDate['day'], false, false, '', false, '' );
break;
case 'dd/mm' :
phpfmg_dropdown( $field_name.'_day', $cfgDate['day'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_month', $cfgDate['month'], false, false, '', false, '' );
break;
};
echo "\n<input type='hidden' name='{$field_name}_format' value='{$cfgDate['format']}'>\n";
echo "<input type='hidden' name='{$field_name}_separator' value='{$cfgDate['separator']}'>\n";

}


function phpfmg_date_dropdown_require( $field_name ){
if( !isset($_POST) )
return ;

$month = $_POST[$field_name.'_month'];
$day = $_POST[$field_name.'_day'];
$yyyy = $_POST[$field_name.'_yyyy'];
$format = $_POST[$field_name.'_format'];
$sep = isset($_POST[$field_name.'_separator']) ? $_POST[$field_name.'_separator'] : '/';

// make up $_POST[$field_name] value
$_POST[$field_name] = '';
switch( $format ){
case 'mm/dd/yyyy' :
if( !empty($month) && !empty($day) && !empty($yyyy) )
$_POST[$field_name] = $month . $sep . $day . $sep . $yyyy;
break;
case 'dd/mm/yyyy' :
if( !empty($month) && !empty($day) && !empty($yyyy) )
$_POST[$field_name] = $day . $sep . $month . $sep . $yyyy;
break;
case 'yyyy/mm/dd' :
if( !empty($month) && !empty($day) && !empty($yyyy) )
$_POST[$field_name] = $yyyy . $sep . $month . $sep . $day;
break;
case 'mm/yyyy' :
if( !empty($month) && !empty($yyyy) )
$_POST[$field_name] = $month . $sep . $yyyy;
break;
case 'yyyy/mm' :
if( !empty($month) && !empty($yyyy) )
$_POST[$field_name] = $month . $sep . $yyyy;
break;
case 'mm/dd' :
if( !empty($month) && !empty($day) )
$_POST[$field_name] = $month . $sep . $day;
break;
case 'dd/mm' :
if( !empty($month) && !empty($day) )
$_POST[$field_name] = $day . $sep . $month;
break;
};

}

function phpfmg_time_dropdown( $cfgTime ){
$field_name = $cfgTime['field_name'];
$sep =":&nbsp;";
switch( $cfgTime['hourOpt'] ){
case 'h12' :
phpfmg_dropdown( $field_name.'_hour', $cfgTime['hour'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_minute', $cfgTime['minute'], false, false, '', false, '' );
phpfmg_dropdown( $field_name.'_amfm', $cfgTime['amfm'], false, false, '', false, '' );
break;
case 'h24' :
phpfmg_dropdown( $field_name.'_hour', $cfgTime['hour'], false, false, '', false, '' );
echo $sep;
phpfmg_dropdown( $field_name.'_minute', $cfgTime['minute'], false, false, '', false, '' );
break;
};
echo "\n<input type='hidden' name='{$field_name}_format' value='{$cfgTime['hourOpt']}'>\n";
}


function phpfmg_time_dropdown_require( $field_name ){
if( !isset($_POST) )
return ;

$hour = $_POST[$field_name.'_hour'];
$minute = $_POST[$field_name.'_minute'];
$amfm = $_POST[$field_name.'_amfm'];
$format = $_POST[$field_name.'_format'];
$sep = ':';

// make up $_POST[$field_name] value
$_POST[$field_name] = "";
switch( $format ){
case 'h12' :
if( !empty($hour) && !empty($minute) && !empty($amfm) )
$_POST[$field_name] = $hour . $sep . $minute . ' ' . $amfm;
break;
case 'h24' :
if( !empty($hour) && !empty($minute) )
$_POST[$field_name] = $hour . $sep . $minute;
break;
};

}



function phpfmg_dependent_dropdown( $field_name ){
$field = phpfmg_dependent_dropdown_get_field( $field_name );
$dd = new DependantDropdown();
$dd->parseFmgField($field);
$html = $dd->getHtml();
echo $html;
}

function phpfmg_dependent_dropdown_dynamic_require( $field_name ){
$field = phpfmg_dependent_dropdown_get_field( $field_name );
$dd = new DependantDropdown();
$dd->parseFmgField($field);
$dd->dynamicRequired();
}

function phpfmg_dependent_dropdown_get_field( $field_name ){
if( !isset($_SESSION[PHPFMG_ID]) ){
$_SESSION[PHPFMG_ID] = array();
};
if( !isset($_SESSION[PHPFMG_ID]['DD_DATA_' . $field_name]) ){
$base64 = phpfmg_dependent_dropdown_data();
$data = @unserialize( base64_decode($base64) );
$_SESSION[PHPFMG_ID]['DD_DATA_' . $field_name] = $data;
}else{
$data = $_SESSION[PHPFMG_ID]['DD_DATA_' . $field_name];
};

if( !is_array($data) ){
return ;
};

foreach( $data as $field ){
if( $field['name'] == $field_name ){
return $field;
};
};
}


# ------------------------------------------------------
class DependantDropdown
{
var $data = '';
var $sheet = array();
var $fields = array();
var $fieldInfo = array( 'label', 'instruction', 'required', 'prompt' ); // describe field information from the first N rows of data
var $prefix = 'dd'; // in case there is no name for dropdown, it will name the dropdown like dd_0, dd_1, ...

var $fmgField = false;
var $newliner = "<!--esh_newline-->" ; // replace \r\n with $newliner ;
var $newtaber = "<!--esh_newtaber-->" ; // replace \t with $newtaber ;

function DependantDropdown(){
}


function lookupFieldColumn( $field, $column, $lookup, $contentType='text/plain', $charset='utf-8' ){
$this->parseFmgField( $field );
$this->nocache_headers( $contentType, $charset );
return join( "\n", $this->getColumn( $column, $lookup ) );
}

function parseFmgField( $field ){
if( !isset($_SESSION[PHPFMG_ID]) ){
$_SESSION[PHPFMG_ID] = array();
};
$this->fmgField = $field;
$value = $this->newline_back($field['value']);
$this->data = explode("\r\n",$value);
if( !isset($_SESSION[PHPFMG_ID][ "DD_".$field['name'] ]) ){
$this->parseData($field);
$_SESSION[PHPFMG_ID][ "DD_".$field['name'] ] = $this->fields;
}else{
$this->fields = $_SESSION[PHPFMG_ID][ "DD_".$field['name'] ];
};
$this->makeupFieldsName();
}

function newline_back( $str = "" ){
return str_replace( array($this->newtaber, $this->newliner), array("\t","\r\n"), $str );
}

function nocache_headers($contentType='text/plain', $charset='utf-8'){
header("Expires: Mon, 01 Jan 1970 00:00:01 GMT");
header("Cache-Control: max-age=0, no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header( "Content-Type: {$contentType}; charset={$charset}" );
}


function setData( $s ){
$this->data = $s ;
}

function setPrefix( $s ){
$this->prefix = $s;
}

function parseData(){
$tab = chr(0x09);
$nFieldInfoRows = count( $this->fieldInfo );
for( $i = 0, $n = count($this->data); $i < $n; $i ++ ){
$line = str_replace('"', '', $this->data[$i] );
//$line = stripslashes( $line );
$cols = explode( $tab, $line );

if( is_array($cols) && count($cols) > 1 ){

if( $i < $nFieldInfoRows ){
$trims = array();
foreach( $cols as $col ){
$trims[] = trim($col);
};
$this->fields[ $this->fieldInfo[$i] ] = $trims;
}
else
$this->fields['data'][] = $cols;

}; // if

//if ( $i > 1000 ) break;
}; // for

}

// $quickTest : to see whether a column contains data
function getColumn( $n, $lookup = array(), $quickTest = false ){
$count = count($lookup);
if( $n > 0 && empty($count) ){
return array(); // can not get column without search query
};

$col = array();
$lastValue = $lookup[ $count - 1 ];
$flatLookup = join( '|', $lookup );
// when using ajax GET method, use utf8 to encoude the lookup query. otherwise, some special chars like France characters might not work
if( !$this->isPost() ){
$lastValue = utf8_encode( $lastValue );
$flatLookup = utf8_encode( $flatLookup );
};

foreach( $this->fields['data'] as $r ){

if( !isset($r[$n]) )
continue;

[ Ludvig @ 11.03.2013. 11:43 ] @
Nema nikoga tko bi znao šta bi trebalo napraviti?
[ dakipro @ 11.03.2013. 11:53 ] @
Iskreno sumnjam da neko ima vremena da gleda kroz ovih par hiljada linija koda koje si okacio.
Napisao si da nisi upoznat sa PHP-om, ako ne zelis da ucis php mogu ti prebaciti temu u "IT Berza Poslova", tamo ima ljudi koji su voljni da odvoje svoje profesionalno vreme?
[ g_maestroo @ 11.03.2013. 12:10 ] @
This man made my day !!!
[ Ludvig @ 11.03.2013. 13:38 ] @
Citat:
dakipro:
Iskreno sumnjam da neko ima vremena da gleda kroz ovih par hiljada linija koda koje si okacio.
Napisao si da nisi upoznat sa PHP-om, ako ne zelis da ucis php mogu ti prebaciti temu u "IT Berza Poslova", tamo ima ljudi koji su voljni da odvoje svoje profesionalno vreme?



Zato sam i gore ostavio mail da mi se netko javi,moja greška što sam tražio savjet oduzeo ti vrijeme

Lp