День Добрый!
Есть на сервере 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
?>
|