День Добрый!
Есть на сервере 3 каталога
download_partnet - For Partner
download_reg - Only for Registration
download_f - guest
К сожалению с Битриксом мало знаком. Так вот после переноса на новый сервер, все работает кроме скачивания файла из директории download_f
в логах выдается
Реально файлы лежат в
Ниже привожу форму которую пользователь заполняет, она примитивная ФИО, телефон, почта нажимает ОК и скачка должна начаться, а нам на потчуц отправляется уведомление с обратной связью из формы. Но к сожалению форма просто обновляется и все.
Есть на сервере 3 каталога
download_partnet - For Partner
download_reg - Only for Registration
download_f - guest
К сожалению с Битриксом мало знаком. Так вот после переноса на новый сервер, все работает кроме скачивания файла из директории download_f
в логах выдается
Код |
---|
File does not exist: /home/web/domain.ru/public_html/download_f/2926 |
Код |
---|
download_f/files/dir/filename.exe |
Код |
---|
<? if (empty($step) OR !isset($step)) //Отображаем форму { ?> <!DO CTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <ht ml> <head> <title>Для того чтобы скачать файл, просьба, заполните форму:</title> </head> <body> <sc ript language=javascript> <!-- function valedateEnteries() { var errorMessage = ""; var nameEntered = document.forms['inform'].elements['name'].value; var phoneEntered = document.forms['inform'].elements['e_mail'].value; var cityEntered = document.forms['inform'].elements['city'].value; if (!nameEntered) { alert("Укажите ФИО контактного лица"); document.forms['inform'].elements['name'].focus(); return false; } if (!phoneEntered) { alert("Укажите контактный e-mail"); document.forms['inform'].elements['e_mail'].focus(); return false; } if (!cityEntered) { alert("Укажите город / населенный пункт"); document.forms['inform'].elements['city'].focus(); return false; } return true; } //--> </sc ript> <? include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); global $USER; $rsUser = CUser::GetByLogin($USER->GetLogin()); $arUser = $rsUser->Fetch(); $id_user = $USER->GetID(); if (intval($id_user)>0) { $fio = $arUser["NAME"]." ".$arUser["LAST_NAME"]; $city = $arUser["WORK_CITY"]; $email = $arUser["EMAIL"]; } else { $fio = ""; $city = ""; $email = ""; } ?> Для того чтобы скачать файл, просьба, заполните форму и нажмите "Ok":<br> <br> <table border=0 cellpadding=5 cellspacing=0 st yle="background: #ff0000 url('/download_f/bg.jpg');"> <fo rm action='/download_f/download.php' method=post name="inform"> <input type=hidden name=step value=2> <input type=hidden name="fileurl" value='<?=$_SERVER["REQUEST_URI"]?>'> <tr><td align=right style='color: #ffffff'>ФИО</td><td><input type=text name=name value="<?=$fio?>" size=50></td></tr> <tr><td align=right style='color: #ffffff'>E-mail</td><td><input type=text name=e_mail size=50 value="<?=$email?>"></td></tr> <tr><td align=right style='color: #ffffff'>Город</td><td><input type=text name=city size=50 value="<?=$city?>"></td></tr> <tr><td align=right colspan=2><input type=submit value="Ok" onCl ick="if(valedateEnteries()!=false)document.inform.submit();return!1"></td></tr> </table> </form> </body> </html> <? } elseif($step==2) { function initialize_params($url) { if (strpos($url,"?")>0) { $par = substr($url,strpos($url,"?")+1,strlen($url)); $arr = explode("#",$par); $par = $arr[0]; $arr1 = explode("&",$par); foreach ($arr1 as $pair) { $arr2 = explode("=",$pair); global $$arr2[0]; $$arr2[0] = $arr2[1]; } } } $path = dirname($fileurl); $path_ar = explode("/",$path); $path_ar_num =count($path_ar); $arr1 = explode("?",$fileurl); $URI = $arr1[0]; $file = substr($URI, strlen($path."/")); $file = str_replace("..", "", $file); $dir_path = ""; for ($i=3;$i<$path_ar_num;$i++) { $dir_path .= $path_ar[$i]."/"; } $filename = urldecode($_SERVER["DOCUMENT_ROOT"]."/".$path_ar[1]."/files/".$dir_path.$file); $IDF = $path_ar[2]; //echo "[$filename][$path]"; if(file_exists($filename)) { set_time_limit(0); session_cache_limiter(''); session_start(); initialize_params($fileurl); $cur_pos = 0; $p = strpos($_SERVER["HTTP_RANGE"], "="); if($p>0) { $bytes = substr($_SERVER["HTTP_RANGE"], $p+1); $p = strpos($bytes, "-"); if($p!==false) $cur_pos = intval(substr($bytes, 0, $p)); } include($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); if (CModule::IncludeModule("statistic")) { if ($cur_pos<=0) // проверим скачивается ли с самого начала { if (strlen($event1)<=0 && strlen($event2)<=0) { $event1 = "download"; $event2 = $file; $event3 = "public"; } $e = $event1."/".$event2."/".$event3; if (!in_array($e, $_SESSION["DOWNLOAD_EVENTS"])) // проверим не скачивался ли в данной сессии { $w = CStatEvent::GetByEvents($event1, $event2); $wr = $w->Fetch(); $z = CStatEvent::GetEventsByGuest($_SESSION["SESS_GUEST_ID"], $wr["EVENT_ID"], $event3, 21600); if (!($zr=$z->Fetch())) // проверим не скачивал ли посетитель за последние 6 часов { CStatistic::Set_Event($event1, $event2, $event3); $_SESSION["DOWNLOAD_EVENTS"][] = $e; } } } } $file_real_path = "/".$path_ar[1]."/files/".$dir_path.$file; if(CModule::IncludeModule('iblock') && ($arIBlockElement_p = GetIBlockElement($IDF))) { //Приложенные файлы $download_razdel = str_replace('"','"',$arIBlockElement_p['NAME']); $recepient_p = $arIBlockElement_p['PROPERTIES']['recepient']['VALUE']; $count_p = count($arIBlockElement_p['PROPERTIES']['filo']); if ($count_p>0) { for ($i = 0; $i < $count_p; $i++) { if ($file_real_path==$arIBlockElement_p['PROPERTIES']['filo']['VALUE'][$i]) $file_description = str_replace('"','"',$arIBlockElement_p['PROPERTIES']['filo']['DESCRIPTION'][$i]); } } } global $USER; //echo "<p>[".$USER->GetID()."] (".$USER->GetLogin().") ".$USER->GetFullName(); $rsUser = CUser::GetByLogin($USER->GetLogin()); $arUser = $rsUser->Fetch(); //echo $arUser["WORK_COMPANY"]; //echo $arUser["WORK_WWW"]; $fio = $arUser["NAME"]." ".$arUser["LAST_NAME"]; $id_user = $USER->GetID(); if (!isset($id_user)) { $arFields = array( "DOWNLOAD_RAZDEL" => $download_razdel, "RECEPIENT" => $recepient_p, "FILE_DESCRIPTION" => $file_description, "FILE_NAME" => $file, "USER_FIO" => $name, "USER_CITY" => $city, "USER_EMAIL" => $e_mail, "USER_IP" => $_SERVER["REMOTE_ADDR"], "TIME_NOW" => date("d.m.Y H:i:s", time()) ); } else { $arFields = array( "DOWNLOAD_RAZDEL" => $download_razdel, "RECEPIENT" => $recepient_p, "FILE_DESCRIPTION" => $file_description, "FILE_NAME" => $file, "ID_USER" => $USER->GetID(), "USER_FIO" => $fio, "USER_POSITION" => $arUser["WORK_POSITION"], "USER_CITY" => $arUser["WORK_CITY"], "USER_REGION" => $arUser["WORK_STATE"], "USER_COMPANY" => $arUser["WORK_COMPANY"], "WORK_PROFILE" => $arUser["WORK_PROFILE"], "USER_PHONE" => $arUser["PERSONAL_PHONE"], "USER_EMAIL" => $arUser["EMAIL"], "USER_IP" => $_SERVER["REMOTE_ADDR"], "TIME_NOW" => date("d.m.Y H:i:s", time()) ); } CEvent::Send("DOWNLOAD_FILE", array("ru"), $arFields); //Записываем данные мини формы в инфо-блок 56 $el = new CIBlockElement; $PROP = array(); $PROP[158] = $arFields["USER_EMAIL"]; $PROP[159] = $arFields["USER_CITY"]; $PROP[160] = $arFields["TIME_NOW"]; $PROP[161] = $IDF; $PROP[162] = $arFields["FILE_NAME"]; $PROP[163] = $arFields["FILE_DESCRIPTION"]; $PROP[166] = $arFields["USER_IP"]; $arLoadProductArray = Array( "MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем "IBLOCK_SECTION" => false, // элемент лежит в корне раздела "IBLOCK_ID" => 56, "PROPERTY_VALUES"=> $PROP, "NAME" => $arFields["USER_FIO"], "ACTIVE" => "Y", // активен ); if($PRODUCT_ID = $el->Add($arLoadProductArray)) echo "New ID: ".$PRODUCT_ID; else echo "Error: ".$el->LAST_ERROR; //Конец Записываем данные мини формы в инфо-блок 56 ob_end_clean(); session_write_close(); LocalRedirect($file_real_path); } else { include($_SERVER["DOCUMENT_ROOT"]."/download/error.php"); } } //Есди шаг 2 ?> |