//error_reporting(E_ALL);
$dbhost='adm.starnet';
$dbport='3306';
$dbuser='ahtuba_demand';
$dbpassword='F[ne,bycrbQ>pth';
$dbname='users';
$demands_from_ip=5;//количество запросов в сутки с одного ай-пи
$db=mysql_connect($dbhost.':'.$dbport, $dbuser, $dbpassword,true) or die("Извините. Нет доступа к базе данных. Пожалуйста, зайдите позже.");
mysql_select_db($dbname,$db);
mysql_query("set character_set_client='cp1251'",$db);
mysql_query("set character_set_results='cp1251'",$db);
mysql_query("set collation_connection='cp1251_general_ci'",$db);
$act=$_REQUEST['act'];
if ($act=='load_houses'){
echo load_houses($db);
exit;
} else if ($act=='verify_house_link'){
echo verify_house_link($db);
exit;
} else if ($act=='newdemand'){
echo iconv('CP1251','UTF-8',newdemand($db));
exit;
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Онлайн заявка на подключение");
echo "
";
$style='';
$script='
';
$out.=$style.$script.'
';
echo $out;
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
function load_houses($db){
$out='';
//загрузка списка домов
$type=$_REQUEST['type'];
if ($type=='street'){
//выбор домов по улице
$id=$_REQUEST['id'];
$sql="select street_house from addresses where street='$id' and contractable='1' group by street_house order by cast(street_house as UNSIGNED),street_house";
// $sql="select street_house from addresses where street=$id and com_id!=0 group by street_house order by cast(street_house as UNSIGNED),street_house";
// $sql=addslashes($sql);
$result=mysql_query($sql,$db);
$out.=mysql_error($db);
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
$out.=''.$row['street_house'].' ';
echo mysql_error();
}
$out.='нет в списке';
} else if ($type=='micro'){
//выбор домов по микрорайону
$id=$_REQUEST['id'];
$sql="select house from addresses where micro='$id' and contractable='1' group by house order by cast(house as UNSIGNED),house";
// $sql="select house from addresses where micro=$id and com_id!=0 group by house order by cast(house as UNSIGNED),house";
// $sql=addslashes($sql);
$result=mysql_query($sql,$db);
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){
$out.=''.$row['house'].' ';
}
$out.='нет в списке';
}
$out=iconv('CP1251','UTF-8',$out);
return $out;
}
function verify_house_link($db){
$descr_demand=array(
'В выбранном доме на текущий момент подключение к сети "Волжский StarNet" невозможно. Мы свяжемся с Вами, как только будет техническая возможность выполнить подключение по указанному адресу. Оставьте, пожалуйста, контактные данные в форме ниже:
',
'По выбранному адресу возможно подключение к сети "Волжский StarNet". Для упрощения составления договора, заполните персональные данные в форме ниже:*
С Вами свяжутся и договорятся об удобном для Вас времени для заключения договора. После заключения договора Вам необходимо будет положить на свой новый счет 500 рублей. Только после этого будет активирован процесс подключения. * - эти данные будут внесены в договор, постарайтесь заполнить все правильно.
'
);
$type=$_REQUEST['type'];
$id=$_REQUEST['id'];
$house=iconv('UTF-8','CP1251',$_REQUEST['house']);
if ($type=='street'){
$sql="select id from addresses where street='$id' and street_house='$house' and contractable='1' limit 1";
} else if ($type=='micro') {
$sql="select id from addresses where micro='$id' and house='$house' and contractable='1' limit 1";
}
$result=mysql_query($sql,$db);
$index=0;
while ($row=mysql_fetch_array($result, MYSQL_ASSOC)){
$index=1;
}
$send_button='
';
return iconv('CP1251','UTF-8',$descr_demand[$index].$send_button);
}
function newdemand($db){
global $demands_from_ip;
//создание новой заявки
$ip_addr=$_SERVER['REMOTE_ADDR'];
//проверка превышения заявок в сутки с одного айпи
$sql="select count(*) as cnt from demands_link_online where ip_addr='".$ip_addr."' and `date`>now() - interval 1 day";
$result=mysql_query($sql);
$cnt=mysql_result($result,0);
if ($cnt>=$demands_from_ip){return text_error('Достигнут предел числа заявок с одного IP-адреса в сутки. Попробуйте позже.');};
foreach ($_REQUEST as $key=>$value){
$_REQUEST[$key]=addslashes($_REQUEST[$key]);
// echo $key.":".$_REQUEST[$key]."\n";
$_REQUEST[$key]=iconv('UTF-8','CP1251',$_REQUEST[$key]);
}
$addr=$_REQUEST['addr'];
$flat=$_REQUEST['flat'];
$link=$_REQUEST['link'];
$fio=$_REQUEST['fio'];
$phone=$_REQUEST['phone'];
$mobile_phone=$_REQUEST['mobile_phone'];
$addnode=$_REQUEST['addnode'];
$refferer=$_REQUEST['refferer'];
if ($link){
$birthday=$_REQUEST['birthday'];
$birthmonth=$_REQUEST['birthmonth'];
$birthyear=$_REQUEST['birthyear'];
$pass_sernum1=$_REQUEST['pass_sernum1'];
$pass_sernum2=$_REQUEST['pass_sernum2'];
$pass_no=$_REQUEST['pass_no'];
$pass_issueday=$_REQUEST['pass_issueday'];
$pass_issuemonth=$_REQUEST['pass_issuemonth'];
$pass_issueyear=$_REQUEST['pass_issueyear'];
$pass_issuedep=$_REQUEST['pass_issuedep'];
$pass_issueplace=$_REQUEST['pass_issueplace'];
$propis=$_REQUEST['propis'];
}
if ($addr=='street'){
$street_house=$_REQUEST['street_house'];
$street=$_REQUEST['street'];
if ($street==0){
$street_name=$_REQUEST['man_street'];
}
} else if ($addr=='micro'){
$house=$_REQUEST['micro_house'];
$micro=$_REQUEST['micro'];
if ($micro==0){
$micro_name=$_REQUEST['man_micro'];
}
}
//проверка параметров
//на непустоту и валидность
if (!($addr=='street'||$addr=='micro')){return text_error(':'.$addr.'Неверные параметры запроса');}
else if (!$flat){return text_error('Не указана квартира');}
else if (!valid_flat($flat)){return text_error('Неверный формат номера квартиры');}
else if (!$fio){return text_error('Укажите свое Ф.И.О.');}
else if (!valid_fio($fio)){return text_error('Укажите свое Ф.И.О. полностью');}
else if (!$phone&&!$mobile_phone){return text_error('Укажите телефонный номер');}
else if (!valid_phone($phone)||!valid_phone($mobile_phone)){return text_error('Некорректный телефонный номер');}
else if ($refferer&&!preg_match('/^[0-9]{5}$/',$refferer)){return text_error('Неверно указан договор друга');}
if ($link){
if (!$birthday||!$birthmonth||!$birthyear){
return text_error('Укажите день своего рождения');
}
else if (!valid_number($birthday,31)||!valid_number($birthmonth,12)||!valid_number($birthyear,3000)){
return text_error('Укажите день своего рождения');
}
else if (!$pass_sernum1||!$pass_sernum2||!$pass_no||!$pass_issueday||!$pass_issuemonth||!$pass_issueyear||!$pass_issuedep||!$pass_issueplace||
!valid_number($pass_sernum1,99)||!valid_number($pass_sernum2,99)||!valid_number($pass_no)||!valid_number($pass_issueday,31)||
!valid_number($pass_issuemonth,31)||!valid_number($pass_issueyear,3000)){
return text_error('Укажите все необходимые паспортные данные');};
}
if ($addr=='street'){
if (!$street_house){return text_error('Не указан номер дома по улице');}
else if (!$street&&!$street_name){return text_error('Не указана улица');}
else if (!valid_house($street_house)){return text_error('Некорректный номер дома');};
} else if ($addr=='micro'){
if (!$house){return text_error('Не указан номер дома по микрорайону');}
else if (!$micro&&!$micro_name){return text_error('Не указан номер микрорайона');}
else if (!valid_house($house)){return text_error('Некорректный номер дома');};
}
// $phone=uniphone($phone);
//inserting to the DB users table demands_link_online
if ($link){
$birthdate=sprintf("%02d.%02d.%04d", $birthday,$birthmonth,$birthyear);
$pass_issuedate=sprintf("%02d.%02d.%04d",$pass_issueday,$pass_issuemonth,$pass_issueyear);
$pass_sernum=$pass_sernum1.' '.$pass_sernum2;
$propis=$propis=='true'?1:0;
$sql="insert into demands_link_online (`street`,`street_name`,`street_house`,`micro`,`micro_name`,`house`,`flat`,`fio`,`birthdate`,
`pass_sernum`,`pass_no`,`pass_issuedate`,`pass_issuedep`,`pass_issueplace`,`propis`,`phone`,`mobile_phone`,`descr`,`ip_addr`,`date`,`refferer`)
values ('$street','$street_name','$street_house','$micro','$microname','$house','$flat','$fio','$birthdate',
'$pass_sernum','$pass_no','$pass_issuedate','$pass_issuedep','$pass_issueplace','$propis','$phone','$mobile_phone','$addnode','$ip_addr',now(),'$refferer')";
} else {
$sql="insert into demands_link_online (`street`,`street_name`,`street_house`,`micro`,`micro_name`,`house`,`flat`,`fio`,`phone`,`descr`,`ip_addr`,`date`,`refferer`)
values ('$street','$street_name','$street_house','$micro','$micro_name','$house','$flat','$fio','$phone','$addnode','$ip_addr',now(),'$refferer')";
}
$result=mysql_query($sql);
if ($result){
return '
Спасибо. Ваша заявка принята. В течение ближайшего времени Вам обязательно позвонят.
';
}
return text_error('Ошибка базы данных'.mysql_error());
}
function text_error($text){
return 'Ошибка: '.$text;
}
function valid_fio($fio){
// $temp=iconv('UTF-8','CP1251',$fio);
if (!preg_match('/^[а-яёА-ЯЁ \-.]+$/',$fio)){
return 0;
}
if (strlen($fio)>150){return 0;}
return 1;
}
function valid_phone($phone){
if (!$phone) return 1;
if (!preg_match('/^[0-9\- +()]+$/',$phone)){return 0;}
if (strlen($phone)<6){return 0;}
return 1;
}
function valid_house($house){
// $temp=iconv('UTF-8','CP1251',$house);
if (!preg_match('/^[0-9\/а-я]+$/',$house)){
return 0;
}
return 1;
}
function valid_flat($flat){
if (!preg_match('/^[0-9\/а-я]+$/',$flat)){
return 0;
}
return 1;
}
function valid_number($number,$max){
//проверка на числовой параметр
if (!preg_match('/^[0-9]+$/',$number)){
return 0;
}
if ($max>0&&$number>$max){
return 0;
}
return 1;
}
?>