Tak for tippet, men problemet er at jeg ikke kan finde et script der virker til php version 4.3.0. Jeg har et script der virker perfect på servere med php version 3.2.1, men det vil ikke køre på servere med php version 4.3.0.
Scriptkoden ses her: ______________________________________
<?
/***************************************************************************** * * * C O N F I G U R A T I O N * * * *****************************************************************************/
// email for send submitted forms ////////////////////////////////////////// // if empty, use value from form ('send_to' field) $send_to = "mitdomaene.dk <post@mitdomaene.dk>";
// set $send_cc address if you need copy of mail to other addresses // for example: $send_cc = array('friend1@ccc.cc', 'friend2@ccc.cc'); // $send_cc = array();
// Subject. if empty, use value from form ('subject' field) $subject = "Tilmelding fra SH";
// Allowed Referres. Should be empty or list of domains $referrers = array();
// Attachments $attachment_enabled = 1;
////// Database - write CSV file with data of submitted forms ////////////// $database_enabled = 0; $database_file = '';
// Fields to collect // $database_fields = '*' - mean all fields, as in form // $database_fields = array('from', 'subject') - only 'from', 'subject' fields $database_fields = '*';
////// Redirect user after submitting form $redirect_url = '';
////// Auto-Responder ////// You can substitute any of form fields in response by using ////// %field_name% in response text. ////// $autoresponder_enabled = 1; $autoresponder_from = $send_to; $autoresponder_subject = "%subject% Tak for din tilmelding!"; $autoresponder_message = <<<MSG Kære %kontaktperson_req%,
function do_formmail(){ global $autoresponder_enabled, $database_enabled; $form = get_form_data(); $errors = check_form($form); if ($errors) { display_errors($errors); return; } send_mail($form); if ($autoresponder_enabled) auto_respond($form); if ($database_enabled) save_form($form); redirect(); }
function redirect(){ echo "Tak for din <b>støtte</b>, og <b>tilmelding</b>...<br><br> En <b>bekræftelse</b> på din tilmelding er automatisk blevet sendt til dig via den emailadresse du
har opgivet ved tilmeldingen. <br><br> Læs venligst bekræftelsen - den indeholder <b>yderligere</b> information... <br>";
}
function save_form($vars){ global $database_file, $database_fields; $f = fopen($database_file, 'a'); if (!$f){ die("Cannot open db file for save"); } foreach ($vars as $k=>$v) { $vars[$k] = str_replace(array("|", "\r","\n"), array('_',' ',' '), $v); } if (is_array($database_fields)) { $vars_orig = $vars; $vars = array(); foreach ($database_fields as $k) $vars[$k] = $vars_orig[$k]; } $str = join('|', $vars); fwrite($f, $str."\n"); fclose($f); }
function auto_respond($vars){ global $autoresponder_from, $autoresponder_message, $autoresponder_subject; /// replace all vars in message $msg = $autoresponder_message; preg_match_all('/%(.+?)%/', $msg, $out); $s_vars = $out[1]; //field list to substitute foreach ($s_vars as $k) $msg = str_replace("%$k%", $vars[$k], $msg); /// replace all vars in subject $subj = $autoresponder_subject; preg_match_all('/%(.+?)%/', $subj, $out); $s_vars = $out[1]; //field list to substitute foreach ($s_vars as $k) $subj = str_replace("%$k%", $vars[$k], $subj); // $_send_to = "$vars[kontaktperson] <".$vars[email].">"; $_send_from = $autoresponder_from; mail($_send_to, $subj, $msg, "From: $_send_from"); }
function _build_fields($vars){ $skip_fields = array( 'email_to', 'name_to', 'subject');
// order by numeric begin, if it exists $is_ordered = 0; foreach ($vars as $k=>$v) if (in_array($k, $skip_fields)) unset($vars[$k]);
$new_vars = array(); foreach ($vars as $k=>$v){ // remove _num, _reqnum, _req from end of field names $k = preg_replace('/_(req|num|reqnum)$/', '', $k); // check if the fields is ordered if (preg_match('/^\d+[ \:_-]/', $k)) $is_ordered++; //remove number from begin of fields $k = preg_replace('/^\d+[ \:_-]/', '', $k); $new_vars[$k] = $v; } $vars = $new_vars;
$max_length = 10; // max length of key field foreach ($vars as $k=>$v) { $klen = strlen($k); if (($klen > $max_length) && ($klen < 40)) $max_length = $klen; }
Der er modtaget følgende registreringsdata:\n\n $fields -------------------- REMOTE IP : $REMOTE_ADDR USER AGENT: $HTTP_USER_AGENT\n DATE/TIME : $date_time EOF;
if (count($files)){ foreach ($files as $file){ $file_name = $_FILES[$file]['name']; $file_type = $_FILES[$file]['type']; $file_tmp_name = $_FILES[$file]['tmp_name']; $file_cnt = ""; $f=@fopen($file_tmp_name, "rb"); if (!$f) continue; while($f && !feof($f)) $file_cnt .= fread($f, 4096); fclose($f); if (!strlen($file_type)) $file_type="applicaton/octet-stream"; if ($file_type == 'application/x-msdownload') $file_type = "applicaton/octet-stream";
function get_form_data(){ global $REQUEST_METHOD; global $HTTP_POST_VARS; global $HTTP_GET_VARS;
$vars = ($REQUEST_METHOD == 'GET') ? $HTTP_GET_VARS : $HTTP_POST_VARS; //strip spaces from all fields foreach ($vars as $k=>$v) $vars[$k] = trim($v); return $vars; }
function check_form($vars){ global $referrers; global $send_to; global $subject; global $HTTP_REFERER;
$errors = array();
// check from email set if (!strlen($vars['email'])){ $errors[] = "Feltet <b>email</b> er ikke udfyldt..."; } else if (!check_email($vars['email'])){ $errors[] = "Feltet <b>email</b> er ikke udfyldt korrekt..."; } if (!strlen($send_to) && !strlen($vars['email_to'])){ $errors[] = "Feltet <b>Til email</b> er ikke udfyldt..."; } else if (!strlen($send_to) && !check_email($vars['email_to'])){ //if to email specified in form, check it and display error $errors[] = "Feltet <b>Til email</b> er ikke udfyldt korrekt..."; } if (!strlen($vars['subject']) && !strlen($subject)){ $errors[] = "Feltet <b>Emne</b> er ikke udfyldt..."; } foreach ($vars as $k=>$v){ // check for required fields (end with _req) if (preg_match('/^(.+?)_req$/i', $k, $m) && !strlen($v)){ $field_name = ucfirst($m[1]); $errors[] = "Feltet <b>$field_name</b> er ikke udfyldt..."; } // check for number fields (end with _num) if (preg_match('/^(.+?)_num$/i', $k, $m) && strlen($v) && !is_numeric($v)){ $field_name = ucfirst($m[1]); $errors[] = "Feltet <b>$field_name</b> må kun indeholde tal eller være tomt..."; } // check for number & required fields (end with _reqnum) if (preg_match('/^(.+?)_reqnum$/i', $k, $m) && !is_numeric($v)){ $field_name = ucfirst($m[1]); $errors[] = "Feltet <b>$field_name</b> må kun indeholde tal..."; } }
//check referrer if (is_array($referrers) && count($referrers)){ $ref = parse_url($HTTP_REFERER); $host = $ref['host']; $host_found = 0; foreach ($referrers as $r){ if (strstr($host, $r)) $host_found++; } if (!$host_found){ $errors[] = "Ukendt reference: <b>$host</b>"; } } return $errors; }
/** * Check email using regexes * @param string email * @return bool true if email valid, false if not */ function check_email($email) { #characters allowed on name: 0-9a-Z-._ on host: 0-9a-Z-. on between: @ if (!preg_match('/^[0-9a-zA-Z\.\-\_]+\@[0-9a-zA-Z\.\-]+$/', $email)) return false;
#must start or end with alpha or num if ( preg_match('/^[^0-9a-zA-Z]|[^0-9a-zA-Z]$/', $email)) return false;
#name must end with alpha or num if (!preg_match('/([0-9a-zA-Z_]{1})\@./',$email) ) return false;
#host must start with alpha or num if (!preg_match('/.\@([0-9a-zA-Z_]{1})/',$email) ) return false;
#pair .- or -. or -- or .. not allowed if ( preg_match('/.\.\-.|.\-\..|.\.\..|.\-\-./',$email) ) return false;
#pair ._ or -_ or _. or _- or __ not allowed if ( preg_match('/.\.\_.|.\-\_.|.\_\..|.\_\-.|.\_\_./',$email) ) return false;
#host must end with '.' plus 2-5 alpha for TopLevelDomain if (!preg_match('/\.([a-zA-Z]{2,5})$/',$email) ) return false;
return true; }
do_formmail(); ?>
______________________________
v/Bent
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.