load->model('Orders_model'); $this->load->model('CustomerLineInfo_model'); $this->site_code = strtolower($this->config->item('Site_Code')); //屏蔽掉非法IP49.157.0.226 if ($this->input->ip_address() == '116.93.127.114' || $this->input->ip_address() == '116.202.14.3') { send_404(); die(); } } public function index() { redirect(); } //水灯节表单入库 public function lantern_save() { $this->prevent_spam_order(); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $emailtitle = 'Asia Highlights Enquiry Confirmation'; $this->Orders_model->COLI_sourcetype = '32113'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19009'; $this->Orders_model->COLI_PersonNum = $this->input->post('adult'); $this->Orders_model->COLI_ChildNum = $this->input->post('kid_0_7_yrs'); $this->Orders_model->MEI_MailList = $this->input->post('email'); $fullname = $this->input->post('fullname'); $this->Orders_model->MEI_FirstName = $fullname; // 根据产品编号(CLI_NO)查找并绑定产品SN(CLI_SN) $product_code = $this->input->post('product_code'); if ($product_code) { $tour_obj = $this->CustomerLineInfo_model->search($product_code, 1); if (!empty($tour_obj)) { $this->Orders_model->COLI_ProductSN = $tour_obj->CLI_SN; } } $this->Orders_model->COLI_OrderStartDate = date('Y-m-d', strtotime($this->input->post('ticket_date'))); $country_id = $this->Orders_model->get_country_id_by_code($this->input->post('country_code')); $this->Orders_model->MEI_Nationality = $country_id; $this->Orders_model->MEI_Phone = $this->input->post('PhoneNo'); if (!empty($third_webcode)) { $this->Orders_model->COLI_WebCode = $third_webcode; } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($fullname, $this->input->post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $emailtitle, $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 $email_data = array( 'full_name' => $this->input->post('fullname'), 'email' => $this->input->post('email'), 'starting_date' => format_date($this->input->post('ticket_date')), 'contact_info' => $this->input->post('PhoneNo'), 'itinerary' => $this->input->post('itinerary'), 'requirements' => $this->input->post('form_additionalrequirements'), 'lanternFestival' => true, ); $this->email_customer($email_data); $payment_description = $this->input->post('payment_description'); if (empty($payment_description)) { $payment_description = 'Booking Yi Peng Festival Tickets'; } //生成支付链接 $this->load->library('Currency'); $addurl = ''; $totalprice = $this->input->post('total_price'); $total_rmb = $this->currency->get_USD_RMB_SUM($totalprice); $signstr = 'currency=USD&order_id=' . $this->Orders_model->COLI_ID . '_T&rmb_amount=' . $total_rmb . '&total_amount=' . $totalprice . '&key=7a46484300f04031b42fdd44559578e4'; $sign = md5($signstr); $addurl .= base64_encode('order_id=' . $this->Orders_model->COLI_ID . '_T&subject=' . $payment_description . '&body=' . $payment_description . '&total_amount=' . $totalprice . '¤cy=USD&rmb_amount=' . $total_rmb . '&sign=' . $sign . '&lg=en_US&return_url=https://www.asiahighlights.com/orders/thankyou?inquire'); $payurl = 'https://secure.chinahighlights.com/pay/paymentservice/?' . $addurl; //跳转到thankyou页面 redirect($payurl); } public function tailormade_save() { $this->prevent_spam_order(); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $emailtitle = 'Asia Highlights Enquiry Confirmation'; //默认就是TM表单 $this->Orders_model->COLI_sourcetype = '32003'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $adult_18_40 = $this->input->post('adult_18_40'); $adult_41_64 = $this->input->post('adult_41_64'); $adult_65_plus = $this->input->post('adult_65_plus'); $adultNumber = intval($adult_18_40) + intval($adult_41_64) + intval($adult_65_plus); // $childrenNumber = $this->input->post('children_3_9_yrs'); $teenagerNumber = $this->input->post('teenager_10_17_yrs'); $infantNumber = $this->input->post('infant_0_2_yrs'); $personNumber = intval($adultNumber) + intval($teenagerNumber); $this->Orders_model->COLI_PersonNum = $personNumber; $this->Orders_model->COLI_ChildNum = $childrenNumber; $this->Orders_model->COLI_BabyNum = $infantNumber; $travelerNumber = intval($adultNumber) + intval($teenagerNumber) + intval($childrenNumber) + intval($infantNumber); // $this->Orders_model->COLI_Days = $this->input->post('trip_length'); $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_FirstName = $this->input->post('name'); $country_id = $this->Orders_model->get_country_id_by_code($this->input->post('country_code')); $this->Orders_model->MEI_Nationality = $country_id; $fullname = $this->input->post('name'); // 根据产品编号(CLI_NO)查找并绑定产品SN(CLI_SN) $product_code = $this->input->post('product_code'); if ($product_code) { $tour_obj = $this->CustomerLineInfo_model->search($product_code, 1); if (!empty($tour_obj)) { $this->Orders_model->COLI_ProductSN = $tour_obj->CLI_SN; } } $order_start_date = $this->input->post('date_start'); // starting_date没有值的时候$orderStartDate var_dump为false, // 需要转换为NULL数据库才会为NULL值 if (empty($order_start_date)) { $order_start_date = NULL; } else { $order_start_date = date('Y-m-d', strtotime($order_start_date)); } $this->Orders_model->COLI_OrderStartDate = $order_start_date; $this->Orders_model->MEI_Gender = $this->input->post('gender'); $this->Orders_model->MEI_Phone = $this->input->post('PhoneNo'); //是否来至第三方合作网站 $third_webcode = $this->input->post('third_webcode'); if (empty($third_webcode)) { $third_webcode = $this->input->cookie('third_code'); $this->input->set_cookie('third_code', '', ''); $this->input->set_cookie('third%5Fcode', '', ''); } if (!empty($third_webcode)) { $this->Orders_model->COLI_WebCode = $third_webcode; } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($fullname, $this->input->post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $emailtitle, $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 $selected_dest_combos = $this->input->post('destination_combos'); $selected_dest = $this->input->post('destination'); $selected_dest_text = $selected_dest_combos; if (!empty($selected_dest)) { $selected_dest_text .= implode(',', $selected_dest); } $selected_dest_text .= ', ' . $this->input->post('other_destinations'); $starting_date_value = $order_start_date == NULL ? '' : format_date($order_start_date); $email_data = array( 'full_name' => $this->input->post('name'), 'email' => $this->input->post('email'), 'nationality' => $this->input->post('country_code'), 'travelers' => $travelerNumber, 'trip_length' => $this->input->post('trip_length'), 'hotel_style' => $this->input->post('hotel'), 'destinations' => $selected_dest_text, 'starting_date' => $starting_date_value, 'contact_info' => $this->input->post('PhoneNo'), 'requirements' => $this->input->post('additional_requirements'), ); $this->email_customer($email_data); redirect(site_url('orders/thankyou?tailormade')); } public function inquiry_save() { $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $emailtitle = 'Asia Highlights Enquiry Confirmation'; //默认就是产品订单 $this->Orders_model->COLI_sourcetype = '32001'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $this->Orders_model->COLI_PersonNum = $this->input->post('adultnumber'); $this->Orders_model->COLI_ChildNum = $this->input->post('kidnumber'); $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_LastName = $this->input->post('name'); $fullname = $this->input->post('name'); $this->Orders_model->MEI_Nationality = $this->Orders_model->GetNationalityID($this->input->post('Nationality')); $this->Orders_model->COLI_ProductSN = $this->input->post('cli_sn'); $this->Orders_model->COLI_OrderStartDate = $this->input->post('date_start'); $this->Orders_model->MEI_Gender = $this->input->post('gender'); $this->Orders_model->MEI_Phone = $this->input->post('PhoneNo'); //是否来至第三方合作网站 $third_webcode = $this->input->post('third_webcode'); if (empty($third_webcode)) { $third_webcode = $this->input->cookie('third_code'); $this->input->set_cookie('third_code', '', ''); $this->input->set_cookie('third%5Fcode', '', ''); } if (!empty($third_webcode)) { $this->Orders_model->COLI_WebCode = $third_webcode; } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($fullname, $this->input->post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $emailtitle, $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 $this->Orders_model->SendMail($this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $fullname, $this->input->post('email'), $emailtitle, $this->load->view('ah/email/inquiry_email', '', true)); redirect(site_url('orders/thankyou')); } /** * 返回一个实际上无法成功的 200 状态码,欺骗攻击者误以为成功 */ public function fake_200() { header('HTTP/1.1 200 OK'); header("status: 200 OK"); echo file_get_contents("https://www.asiahighlights.com/orders/thankyou"); exit; } public function output_403() { header('HTTP/1.1 403 Forbidden'); header("status: 403 Forbidden"); exit; } private function prevent_spam_order() { $this->verifying_grecaptcha_token(); if ($this->input->get_post("email") == 'sample@email.tst' || false !== stripos($this->input->get_post("email"), "sample@email.tst") ) { log_message('error', "reject by Acunetix scan Detected. IP: " . $this->input->ip_address()); $this->fake_200(); } if (IS_GET) { $this->fake_200(); } // 限制字符数量 2048 个。 $requirements = $this->input->post('form_additionalrequirements') . $this->input->post('AdditionalRequirements2'); if (!empty($requirements) && strlen($requirements) > 2048) { log_message('error', "requirements too long. IP: " . $this->input->ip_address()); $this->fake_200(); } if (FALSE === $this->detect_spam('realname') || FALSE === $this->detect_spam('form_additionalrequirements') || FALSE === $this->detect_spam('AdditionalRequirements2')) { log_message('error', "reject by remove html tags. IP: " . $this->input->ip_address()); $this->fake_200(); } // 屏蔽过于频繁的垃圾订单 IP。 // 屏蔽 IP 不能太时间,需要时再使用以下方法(取消注释即可) // if (in_array($this->input->ip_address(), array("192.40.57.53", "164.132.203.193", "190.2.146.231", "167.235.3.218", "45.82.179.75"))) { // $this->fake_200(); // } if (in_array(strstr($this->input->get_post("email"), "@"), array("@asiahighlights.com", "@hainatravel.com"))) { // 内部测试邮箱,不做 IP 限制。 } else { if (false === $this->Orders_model->ip_limit($this->input->ip_address())) { log_message('error', "reject by IP limit. IP: " . $this->input->ip_address()); $this->fake_200(); } } } // 旅行合作表单 public function agency_save() { $this->prevent_spam_order(); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32008'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_FirstName = $this->input->post('name'); $this->Orders_model->MEI_Nationality = $this->Orders_model->get_country_id_by_code($this->input->post('country_code')); $product_code = $this->input->post('product_code'); // 根据产品编号(CLI_NO)查找并绑定产品SN(CLI_SN) if ($product_code) { $tour_obj = $this->CustomerLineInfo_model->search($product_code, 1); if (!empty($tour_obj)) { $this->Orders_model->COLI_ProductSN = $tour_obj->CLI_SN; } } $this->Orders_model->TourOrderSave(); redirect(site_url('orders/thankyou?agency')); } // Newsletter 表单 public function newsletter_save() { $this->prevent_spam_order(); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32165'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_FirstName = $this->input->post('name'); $product_code = $this->input->post('product_code'); // 根据产品编号(CLI_NO)查找并绑定产品SN(CLI_SN) if ($product_code) { $tour_obj = $this->CustomerLineInfo_model->search($product_code, 1); if (!empty($tour_obj)) { $this->Orders_model->COLI_ProductSN = $tour_obj->CLI_SN; } } $this->Orders_model->TourOrderSave(); $email_content = $this->load->view('ah/email/newsletter-thankyou', [], true); $this->Orders_model->SendMail( $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $this->input->post('name'), $this->input->post('email'), "Asia highlights has receive your inquiry", $email_content ); redirect(site_url('orders/thankyou?newsletter')); } public function test_email() { $email_content = $this->load->view('ah/email/newsletter-thankyou', [], true); $this->Orders_model->SendMail( $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), 'lyj', 'lyj@hainatravel.com', "Asia highlights has receive your inquiry", $email_content ); } //快速表单 public function quick_inquiry_save() { $this->prevent_spam_order(); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $emailtitle = 'Asia Highlights Enquiry Confirmation'; $this->Orders_model->COLI_sourcetype = '32113'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $adult_18_40 = $this->input->post('adult_18_40'); $adult_41_64 = $this->input->post('adult_41_64'); $adult_65_plus = $this->input->post('adult_65_plus'); $adultNumber = intval($adult_18_40) + intval($adult_41_64) + intval($adult_65_plus); $childrenNumber = $this->input->post('children_3_9_yrs'); $teenagerNumber = $this->input->post('teenager_10_17_yrs'); $infantNumber = $this->input->post('infant_0_2_yrs'); $personNumber = intval($adultNumber) + intval($teenagerNumber); $this->Orders_model->COLI_PersonNum = $personNumber; $this->Orders_model->COLI_ChildNum = $childrenNumber; $this->Orders_model->COLI_BabyNum = $infantNumber; $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_FirstName = $this->input->post('name'); $fullname = $this->input->post('name'); $this->Orders_model->COLI_ProductSN = $this->input->post('cli_sn'); $order_start_date = $this->input->post('date_start'); // starting_date没有值的时候 $orderStartDate var_dump 为 false, // 需要转换为 NULL 数据库才会为 NULL 值 $order_start_date = empty($order_start_date) ? NULL : date('Y-m-d', strtotime($order_start_date)); $this->Orders_model->COLI_OrderStartDate = $order_start_date; $this->Orders_model->MEI_Gender = $this->input->post('gender'); $this->Orders_model->MEI_Phone = $this->input->post('PhoneNo'); $country_id = $this->Orders_model->get_country_id_by_code($this->input->post('country_code')); $this->Orders_model->MEI_Nationality = $country_id; $product_code = $this->input->post('product_code'); // 根据产品编号(CLI_NO)查找并绑定产品SN(CLI_SN) if ($product_code) { $tour_obj = $this->CustomerLineInfo_model->search($product_code, 1); if (!empty($tour_obj)) { $this->Orders_model->COLI_ProductSN = $tour_obj->CLI_SN; } } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($fullname, $this->input->post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $emailtitle, $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 $email_data = array( 'full_name' => $fullname, 'email' => $this->input->post('email'), 'starting_date' => format_date($this->input->post('date_start')), 'contact_info' => $this->input->post('PhoneNo'), 'itinerary' => $this->input->post('itinerary'), 'requirements' => $this->input->post('additional_requirements'), ); $this->email_customer($email_data); // $paymentRequired = $this->input->post('payment_required'); if (empty($paymentRequired)) { redirect(site_url('orders/thankyou?inquire')); } else { $this->load->library('Currency'); $addurl = ''; $totalprice = $this->input->post('total_price'); $total_rmb = $this->currency->get_USD_RMB_SUM($totalprice); $signstr = 'currency=USD&order_id=' . $this->Orders_model->COLI_ID . '_T&rmb_amount=' . $total_rmb . '&total_amount=' . $totalprice . '&key=7a46484300f04031b42fdd44559578e4'; $sign = md5($signstr); $addurl .= base64_encode('order_id=' . $this->Orders_model->COLI_ID . '_T&subject=Booking Mini-Group Tour&body=Booking Mini-Group Tour&total_amount=' . $totalprice . '¤cy=USD&rmb_amount=' . $total_rmb . '&sign=' . $sign . '&lg=en_US&return_url=https://www.asiahighlights.com/orders/thankyou?inquire'); $payurl = 'https://secure.chinahighlights.com/pay/paymentservice/?' . $addurl; redirect($payurl); } } //新版tailormade入库程序 public function triprequest_save() { //$this->form_validation->set_rules('Destination', 'lang:Destination', 'required'); //$this->form_validation->set_rules('Date_Start', 'lang:Date_Start', 'required'); //$this->form_validation->set_rules('hotelStyle', 'lang:hotelStyle', 'required'); //$this->form_validation->set_rules('additionalrequirements', 'lang:additionalrequirements', 'required'); //$this->form_validation->set_rules('gender', 'lang:Title', 'required'); $this->form_validation->set_rules('Firstname', 'lang:Firstname', 'required'); //$this->form_validation->set_rules('Lastname', 'lang:Lastname', 'required'); $this->form_validation->set_rules('email', 'lang:email', 'required|valid_email'); //$this->form_validation->set_rules('Nationality', 'lang:Nationality', 'required'); //$this->form_validation->set_rules('hotel', 'lang:hotel', 'required'); //$this->form_validation->set_rules('tourdays', 'lang:tourdays', 'required'); if ($this->form_validation->run() == false) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { if ($key == 'Destination') { $key = 'destinations'; } $data[] = array('name' => $key, 'value' => $value); } if ($this->input->post('no_ajax')) { $vali_string = ''; foreach ($data as $v) { $vali_string .= $v['name'] . ' => ' . $v['value'] . ' '; } echo (''); } else { echo json_encode($data); } } else { $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $emailtitle = 'Asia Highlights Enquiry Confirmation'; if ($this->input->post('cli_sn')) { //含有cli_sn的是产品订单 $this->Orders_model->COLI_sourcetype = '32001'; } else { //不含有的是tailormade订单 $this->Orders_model->COLI_sourcetype = '32003'; } $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; if (is_numeric($this->input->post('adultsNumber'))) { $this->Orders_model->COLI_PersonNum = $this->input->post('adultsNumber'); } if (is_numeric($this->input->post('ChildrenNumber'))) { $this->Orders_model->COLI_ChildNum = $this->input->post('ChildrenNumber'); } if (is_numeric($this->input->post('BabiesNumber'))) { $this->Orders_model->COLI_BabyNum = $this->input->post('BabiesNumber'); } $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_Mail = $this->input->post('email2'); /* $pos = strstr($this->input->post('realname'), ' '); if ($pos === false) { $this->Orders_model->MEI_FirstName = $this->input->post('realname'); } else { $this->Orders_model->MEI_FirstName = str_replace($pos, '', $this->input->post('realname')); $this->Orders_model->MEI_LastName = $pos; } */ $this->Orders_model->MEI_FirstName = $this->input->post('Firstname'); $this->Orders_model->MEI_LastName = $this->input->post('Lastname'); $fullname = $this->input->post('Firstname') . $this->input->post('Lastname'); $this->Orders_model->MEI_Nationality = $this->Orders_model->GetNationalityID($this->input->post('Nationality')); $this->Orders_model->COLI_ProductSN = $this->input->post('cli_sn'); if ($this->input->post('Date_Start')) { $this->Orders_model->COLI_OrderStartDate = $this->input->post('Date_Start'); } else { $this->Orders_model->COLI_OrderStartDate = $this->input->post('Date_Start_Mobile'); } $this->Orders_model->MEI_Gender = $this->input->post('gender'); $this->Orders_model->MEI_Phone = $this->input->post('PhoneNo'); //是否来至第三方合作网站 $third_webcode = $this->input->post('third_webcode'); if (empty($third_webcode)) { $third_webcode = $this->input->cookie('third_code'); $this->input->set_cookie('third_code', '', ''); $this->input->set_cookie('third%5Fcode', '', ''); } if (!empty($third_webcode)) { $this->Orders_model->COLI_WebCode = $third_webcode; } //指定操作人 if ($this->input->post('COLI_OPI_SN')) { $this->Orders_model->COLI_OPI_SN = $this->input->post('COLI_OPI_SN'); } //print_r($this->load->view('orders/newemail_template', '', true)); //die(); $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($fullname, $this->input->post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $emailtitle, $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 (20160504tailor_make) $this->Orders_model->SendMail($this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $fullname, $this->input->post('email'), $emailtitle, $this->load->view('orders/newemail_template', '', true)); //是否AJAX提交? $no_ajax = $this->input->post('no_ajax'); if (empty($no_ajax)) { $data[] = array('name' => 'go', 'value' => site_url('orders/thankyou')); echo json_encode($data); } else { $file_alias = $this->input->post('file_alias'); redirect(site_url('orders/thankyou' . $file_alias)); } } } public function question_save() { $this->form_validation->set_rules('realname', 'lang:realname', 'required'); $this->form_validation->set_rules('email', 'lang:email', 'required|valid_email'); $this->form_validation->set_rules('aquestion', 'lang:aquestion', 'required'); if ($this->form_validation->run() == false) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); } else { bind_ip($this->input->ip_address()); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32002'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $this->Orders_model->MEI_MailList = $this->input->post('email'); $pos = strstr($this->input->post('realname'), ' '); if ($pos === false) { $this->Orders_model->MEI_FirstName = $this->input->post('realname'); } else { $this->Orders_model->MEI_FirstName = str_replace($pos, '', $this->input->post('realname')); $this->Orders_model->MEI_LastName = $pos; } $this->COLI_ProductSN = ''; bind_email($this->Orders_model->MEI_MailList); $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($this->input->post('realname'), $this->input-> post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), 'Question Orders', $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 $this->Orders_model->SendMail($this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $this->input->post('realname'), $this->input-> post('email'), 'Question Orders', $this->load->view('ah/email/email_template', '', true)); //是否AJAX提交? $no_ajax = $this->input->post('no_ajax'); if (empty($no_ajax)) { $data[] = array('name' => 'ok', 'value' => site_url('orders/question-thankyou/')); echo json_encode($data); } else { $file_alias = $this->input->post('file_alias'); redirect(site_url('orders/question-thankyou/' . $file_alias)); } } } public function question_thankyou() { $data = array(); $this->html_do->head($data, 'r'); $data['PPCCode'] = $this->lang->line('PPC_question'); $this->load->view('orders/r_thankyou/' . $this->site_code, $data); } public function detect_spam($param_name) { $html_tag = '#<\s*\/?(meta|script|html|a|div|body|input|img|title|link|form)\s+[^>]*?>#im'; $http_url = '/((https|http)?:\/\/)(?!www\.asiahighlights)\S+/'; $chinese_string = '/(赢|美女|注册|领取|红包|彩金)/'; $html_encode = '/&#(.*);/'; // 包含 HTML 编码的字符,如:我 $tinyurl = '/www.tinyurl.com\S+/'; $param_value = $this->input->post($param_name); $end_str = $param_value; $end_str = preg_replace($html_tag, '', $end_str); $end_str = preg_replace($http_url, '', $end_str); $end_str = preg_replace($chinese_string, '', $end_str); $end_str = preg_replace($html_encode, '', $end_str); $end_str = preg_replace($tinyurl, '', $end_str); return strcasecmp($param_value, $end_str) === 0; } /** * * contact-us.htm 订单入库 * */ public function contactus_save() { $this->prevent_spam_order(); $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32007'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $country_id = $this->Orders_model->get_country_id_by_code($this->input->post('country_code')); $this->Orders_model->MEI_Nationality = $country_id; $this->Orders_model->MEI_MailList = $this->input->post('email'); $pos = strstr($this->input->post('name'), ' '); if ($pos === false) { $this->Orders_model->MEI_FirstName = $this->input->post('name'); } else { $this->Orders_model->MEI_FirstName = str_replace($pos, '', $this->input->post('name')); $this->Orders_model->MEI_LastName = $pos; } $this->Orders_model->MEI_Phone = $this->input->post('contactInfo'); $product_code = $this->input->post('product_code'); // 根据产品编号(CLI_NO)查找并绑定产品SN(CLI_SN) if ($product_code) { $tour_obj = $this->CustomerLineInfo_model->search($product_code, 1); if (!empty($tour_obj)) { $this->Orders_model->COLI_ProductSN = $tour_obj->CLI_SN; } } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($this->input->post('name'), $this->input->post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), 'Asia Highlights Enquiry Confirmation', $this->Orders_model->COLI_OrderDetailText); $country_code = $this->input->post('country_code'); $contact_info = $country_code . ' ' . $this->input->post('contactInfo'); //发送邮件给客人 $email_data = array( 'full_name' => $this->input->post('name'), 'email' => $this->input->post('email'), 'contact_info' => $contact_info, 'requirements' => $this->input->post('additional_requirements'), ); $this->email_customer($email_data); redirect(site_url('orders/thankyou?contactus')); } // 发送订单自动回复邮件 public function email_customer($email_data) { $email_text = $this->load->view('ah/email/ah-auto-mail', $email_data, true); $this->Orders_model->SendMail( $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $email_data['full_name'], $email_data['email'], "Asia highlights has receive your inquiry", $email_text ); } public function thankyou() { $data = array(); $data['seo_title'] = 'Thank you for your inquiry | Asia Highlights'; //$data['PPCCode'] = $this->lang->line('PPC_contact_us'); $this->load->view('header', $data); $this->load->view('orders/thank_you', $data); $this->load->view('footer'); } /** * 联系我们订单入库 * @author lmr */ public function callus_save() { $this->form_validation->set_rules('realname', 'lang:realname', 'required'); $this->form_validation->set_rules('email', 'lang:email', 'required|valid_email'); $this->form_validation->set_rules('comments', 'lang:comments', 'required'); if ($this->form_validation->run() == false) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); } else { $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32004'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; $this->Orders_model->MEI_MailList = $this->input->post('email'); $pos = strstr($this->input->post('realname'), ' '); if ($pos === false) { $this->Orders_model->MEI_FirstName = $this->input->post('realname'); } else { $this->Orders_model->MEI_FirstName = str_replace($pos, '', $this->input->post('realname')); $this->Orders_model->MEI_LastName = $pos; } $this->COLI_ProductSN = ''; bind_email($this->Orders_model->MEI_MailList); $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($this->input->post('realname'), $this->input-> post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), 'Contactus Orders', $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 $this->Orders_model->SendMail($this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $this->input->post('realname'), $this->input-> post('email'), 'Contactus Orders', $this->load->view('ah/email/email_template', '', true)); $data[] = array('name' => 'ok', 'value' => site_url('orders/callus-thankyou/')); echo json_encode($data); } } public function callus_thankyou() { $data = array(); $data['PPCCode'] = $this->lang->line('PPC_callus'); $data['seo_title'] = 'Thank you for your inquiry | Asia Highlights'; $this->load->view('header', $data); $this->load->view('orders/thank_you', $data); $this->load->view('footer'); } //ch 过来的 public function ch_tailormade_save() { $this->form_validation->set_rules('city', 'lang:city', 'required'); $this->form_validation->set_rules('realname', 'lang:realname', 'required'); //$this->form_validation->set_rules('nationality', 'lang:nationality', 'required'); $this->form_validation->set_rules('email', 'lang:email', 'required|valid_email'); //$this->form_validation->set_rules('additionalrequirements', 'lang:additionalrequirements', 'required'); //$this->form_validation->set_rules('cli_tourdays', 'lang:cli_tourdays', 'required'); if ($this->form_validation->run() == false) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } if ($this->input->post('no_ajax')) { $vali_string = ''; foreach ($data as $v) { $vali_string .= $v['name'] . ' => ' . $v['value'] . ' '; } echo (''); } else { echo json_encode($data); } } else { $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32108'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19006'; $this->Orders_model->COLI_OrderType = '19006'; if (is_numeric($this->input->post('adultsNumber'))) { $this->Orders_model->COLI_PersonNum = $this->input->post('adultsNumber'); } if (is_numeric($this->input->post('ChildrenNumber'))) { $this->Orders_model->COLI_ChildNum = $this->input->post('ChildrenNumber'); } if (is_numeric($this->input->post('BabiesNumber'))) { $this->Orders_model->COLI_BabyNum = $this->input->post('BabiesNumber'); } $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_Mail = $this->input->post('email2'); $pos = strstr($this->input->post('realname'), ' '); if ($pos === false) { $this->Orders_model->MEI_FirstName = $this->input->post('realname'); } else { $this->Orders_model->MEI_FirstName = str_replace($pos, '', $this->input->post('realname')); $this->Orders_model->MEI_LastName = $pos; } $this->Orders_model->MEI_Nationality = $this->Orders_model->GetNationalityID($this-> input->post('nationality')); $this->COLI_ProductSN = ''; if ($this->input->post('Date_Start')) { $this->Orders_model->COLI_OrderStartDate = $this->input->post('Date_Start'); } $this->Orders_model->MEI_Gender = $this->input->post('gender'); $this->Orders_model->MEI_Phone = $this->input->post('PhoneNo'); //是否来至第三方合作网站 $third_webcode = $this->input->post('third_webcode'); if (empty($third_webcode)) { $third_webcode = $this->input->cookie('third_code'); $this->input->set_cookie('third_code', '', ''); $this->input->set_cookie('third%5Fcode', '', ''); } if (!empty($third_webcode)) { $this->Orders_model->COLI_WebCode = $third_webcode; } //指定操作人 if ($this->input->post('COLI_OPI_SN')) { $this->Orders_model->COLI_OPI_SN = $this->input->post('COLI_OPI_SN'); } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($this->input->post('realname'), $this->input-> post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), 'Tailor Made Orders', $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人 (20160504tailor_make) $this->Orders_model->SendMail($this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $this->input->post('realname'), $this->input->post('email'), 'Tailor Made Orders', $this->load->view('ah/email/email_template', '', true)); //是否AJAX提交? $no_ajax = $this->input->post('no_ajax'); if (empty($no_ajax)) { $data[] = array('name' => 'go', 'value' => site_url('orders/thankyou')); echo json_encode($data); } else { // $file_alias = $this->input->post('file_alias'); redirect("https://www.chinahighlights.com/forms/thankyou-asia-tours.asp"); } } } public function tailormade_thankyou() { $data = array(); $data['seo_title'] = 'Asia Highlights Travel'; $this->load->view('header', $data); $this->load->view('orders/thank_you', $data); $this->load->view('footer'); $this->output->cache(99999); } public function asia_tour() { $data = array(); $this->form_validation->set_rules('cli_no', 'lang:cli_no', 'required'); if ($this->form_validation->run() == false) { redirect(); } $data['post_cli_no'] = $this->input->post('cli_no'); $data['post_cli_sn'] = $this->input->post('cli_sn'); $data['post_days'] = $this->input->post('cli_days'); $data['post_destinations'] = $this->input->post('destinations'); $data['adultsNumber'] = $this->input->post('adultsNumber'); $data['ChildrenNumber'] = $this->input->post('ChildrenNumber'); $data['BabiesNumber'] = $this->input->post('BabiesNumber'); $data['post_Starting_Date'] = $this->input->post('Starting_Date'); $this->load->view('header', $data); $this->load->view('orders/asia_tour_form'); $this->load->view('footer'); } public function asia_tour_save() { $this->form_validation->set_rules('realname', 'lang:realname', 'required'); $this->form_validation->set_rules('nationality', 'lang:nationality', 'required'); $this->form_validation->set_rules('email', 'lang:email', 'required|valid_email'); $this->form_validation->set_rules('additionalrequirements', 'lang:additionalrequirements', 'required'); $this->form_validation->set_rules('hotel', 'lang:hotel', 'required'); $this->form_validation->set_rules('starting_date', 'lang:starting_date', 'required'); if ($this->form_validation->run() == false) { $data = array(); foreach ($this->form_validation->_error_array as $key => $value) { $data[] = array('name' => $key, 'value' => $value); } echo json_encode($data); } else { $this->Orders_model->COLI_ID = $this->Orders_model->MakeOrderNumber(); $this->Orders_model->COLI_SenderIP = $this->input->ip_address(); $this->Orders_model->COLI_OrderDetailText = ReplaceFieldName($_POST); $this->Orders_model->COLI_Servicetype = 'T'; $this->Orders_model->COLI_sourcetype = '32001'; $this->convert_utm_source_to_lineclass(); $this->Orders_model->COLI_GroupType = '19001'; $this->Orders_model->COLI_OrderType = '19001'; $this->Orders_model->COLI_Name = $this->input->post('cli_no') . ' ' . $this-> input->post('cli_tourtitle'); $this->Orders_model->COLI_PersonNum = $this->input->post('adultsNumber'); $this->Orders_model->COLI_ChildNum = $this->input->post('ChildrenNumber'); $this->Orders_model->COLI_BabyNum = $this->input->post('BabiesNumber'); $this->Orders_model->COLI_OrderStartDate = $this->input->post('starting_date'); $this->Orders_model->COLI_Days = $this->input->post('cli_tourdays'); $this->Orders_model->MEI_MailList = $this->input->post('email'); $this->Orders_model->MEI_Mail = $this->input->post('email2'); $pos = strstr($this->input->post('realname'), ' '); if ($pos === false) { $this->Orders_model->MEI_FirstName = $this->input->post('realname'); } else { $this->Orders_model->MEI_FirstName = str_replace($pos, '', $this->input->post('realname')); $this->Orders_model->MEI_LastName = $pos; } $this->Orders_model->MEI_Nationality = $this->Orders_model->GetNationalityID($this-> input->post('nationality')); $this->Orders_model->MEI_Gender = $this->input->post('gender'); if (empty($this->Orders_model->MEI_Phone) || !isset($this->Orders_model-> MEI_Phone)) { $this->Orders_model->MEI_Phone = @$this->input->post('PhoneNo'); } $this->Orders_model->COLI_ProductSN = $this->input->post('cli_sn'); //是否来至第三方合作网站 $third_webcode = $this->input->post('third_webcode'); if (empty($third_webcode)) { $third_webcode = $this->input->cookie('third_code'); $this->input->set_cookie('third_code', '', ''); $this->input->set_cookie('third%5Fcode', '', ''); } if (!empty($third_webcode)) { $this->Orders_model->COLI_WebCode = $third_webcode; } $this->Orders_model->TourOrderSave(); $this->Orders_model->SendMail($this->input->post('realname'), $this->input-> post('email'), $this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), 'Tour Orders', $this->Orders_model->COLI_OrderDetailText); //发送邮件给客人(20160504inquiry_form) $this->Orders_model->SendMail($this->config->item('Site_ServiceName'), $this->config->item('Site_ServiceEmail'), $this->input->post('realname'), $this->input-> post('email'), 'Tour Orders', $this->load->view('ah/email/email_template', '', true)); $data[] = array('name' => 'go', 'value' => site_url('orders/asia_tour_thankyou')); echo json_encode($data); } } private function convert_utm_source_to_lineclass() { // 使用 UTM 跟踪广告链接 $utm_source_map = array( 'googleppc' => 78001, 'bingppc' => 78003, 'newsletter' => 78005, 'facebook' => 78006, 'travelchinacheaper' => 78007, 'farwestchina' => 78008, 'petel.bg' => 78009, 'instagram' => 78010, 'pin' => 78011, 'youtube' => 78014, 'whatsapp' => 78016 ); $utm_source = get_cookie('__ah_utm_source'); if (!empty($utm_source) && array_key_exists($utm_source, $utm_source_map)) { $this->Orders_model->COLI_LineClass = $utm_source_map[$utm_source]; // 关联订单后统一删除 utm 的 cookie delete_cookie('__ah_utm_source', '.asiahighlights.com'); delete_cookie('__ah_utm_medium', '.asiahighlights.com'); delete_cookie('__ah_utm_campaign', '.asiahighlights.com'); } } public function asia_tour_thankyou() { $data = array(); $data['seo_title'] = 'Tour Inquiry | Asia Highlights'; $this->load->view('header', $data); $this->load->view('orders/thank_you', $data); $this->load->view('footer'); } // 验证浏览器指纹 // 已经取消使用,全免使用 grecaptch public function verifying_fingerprint() { $visitor_id = $this->input->get_post("visitorId"); $are_you_rebot = $this->input->get_post("AreYouARebot"); if (empty($visitor_id) || empty($are_you_rebot) || $are_you_rebot === 'Yes' || $visitor_id === '123456789') { log_message('error', "reject by fingerprint. IP: " . $this->input->ip_address()); $this->output_403(); } if (!empty($visitor_id) && $visitor_id === '6dc3bdabc78d07eee856bcd8e979840e') { log_message('error', "reject by invaild fingerprint. IP: " . $this->input->ip_address()); $this->output_403(); } } // 测试地址: // https://proxy-www.asiahighlights.com/orders/verifying_grecaptcha_token?__grecaptcha_token__= public function verifying_grecaptcha_token() { $grecaptcha_token = $this->input->get_post("__grecaptcha_token__"); if (empty($grecaptcha_token)) { log_message('error', 'grecaptcha token is empty: ' . $this->input->ip_address()); $this->fake_200(); } $create_assessment_url = 'https://recaptchaenterprise.googleapis.com/v1/projects/turnkey-life-235705/assessments?key=AIzaSyChwkYUGNvh8Lx9kck6ADFvMoMv3rEn-fI'; $event_obj = new StdClass(); $event_obj->token = $grecaptcha_token; $event_obj->siteKey = '6Lf828MhAAAAANNetijCXKwW5ARyhcJ-b1Hhslja'; $event_obj->expectedAction = 'ADD_TO_CART'; $assessment_obj = new StdClass(); $assessment_obj->event = $event_obj; $json_obj = json_encode($assessment_obj); $assessment_result = $this->curl_post_json($create_assessment_url, $json_obj); if (empty($assessment_result)) { log_message('error', 'grecaptcha error: ' . $this->input->ip_address()); $this->fake_200(); } else if (array_key_exists('riskAnalysis', $assessment_result)) { log_message('error', 'grecaptcha valid, score: ' . $assessment_result->riskAnalysis->score . '; (' . $this->input->ip_address() . ')'); if ($assessment_result->riskAnalysis->score <= 0.3) { $this->fake_200(); } } else if (array_key_exists('tokenProperties', $assessment_result)) { log_message('error', 'grecaptcha invalid, reason: ' . $assessment_result->tokenProperties->invalidReason . '; (' . $this->input->ip_address() . ')'); $this->fake_200(); } } private function curl_post_json($url, $json) { $http_code = 0; $return_obj = null; $curl_obj = curl_init(); $headers = array( 'Content-Type: application/json', ); $curl_options = [ CURLOPT_HEADER => false, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 20, CURLOPT_CONNECTTIMEOUT => 20, CURLOPT_SSL_VERIFYPEER => false, CURLOPT_SSL_VERIFYHOST => false, CURLOPT_FORBID_REUSE => true, CURLOPT_FRESH_CONNECT => true, CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => $json, CURLOPT_URL => $url, ]; curl_setopt_array($curl_obj, $curl_options); $output = curl_exec($curl_obj); if ($output && !curl_errno($curl_obj)) { $http_code = curl_getinfo($curl_obj, CURLINFO_HTTP_CODE); } curl_close($curl_obj); if ($http_code == 200) { $return_obj = json_decode($output, false); } return $return_obj; } }