Поисковая форма:) поиск по free-lance.ru Топ/история/обновления фриланса, по разным параметрам (темы, сообщения, пользователи...) Автоматическое удаление постов от ненужных юзеров в топике (php скрипт) Досье(точный ник)
 

Ник (или часть ника):
?
Какой текст ищем:
?
Раздел блогов:
За срок
дней
Тип поиска: (по вхождению: по тексту гуг выдаст посты с "гуг", "гугл", "огугл"; "полнотекстовый": по тексту "гуг" выдаст посты только с "гуг")
По вхождению строки:  Полнотекстовый: 
(поиск не 100% актуальный, есть определённая задержка при обновлении данных для поиска. )
0 Всего найдено: 14
floiren Сообщение 26/09/2011 06:14 Копия темы
Поможите чем можете! Ошибка в PHP, а проект сдавать сегодня! Не скачиваются файлы, выдается ошибка, такая:
Parse error: syntax error, unexpected T_ELSE in /home/a/atkmar/public_html/components/com_phocagallery/views/category/tmpl/download .php on line 15

 
Код такой:
<?
$file=$_GET['img'];
if (substr($file,0,6)!='images') exit();
if (strpos($file,'.jpeg')===false && strpos($file,'.jpg')===false && strpos($file,'.gif')===false && strpos($file,'.bmp')===false
&& strpos($file,'.JPG')===false && strpos($file,'.JPEG')===false && strpos($file,'.GIF')===false && strpos($file,'.BMP')===false 
&& strpos($file,'.png')===false && strpos($file,'.PNG')===false && strpos(strtolower($file),'.tiff')===false && strpos(strtolower($file),'.tif')===false) exit();
$last=explode('/',$file);
$last=$last[count($last)-1];
header("Content-Description: File Transfer");
if (strpos(strtolower($last),'.jpeg')!==false || strpos(strtolower($last),'.jpg')!==false) {header("content-type: image/jpeg");}
else
{
if (strpos(strtolower($last),'.png')!==false) header("content-type: image/png");
}
else
{
if (strpos(strtolower($last),'.gif')!==false) header("content-type: image/gif");
}
else
{
if (strpos(strtolower($last),'.tif')!==false) header("content-type: image/tif");
}
else
{
if (strpos(strtolower($last),'.tiff')!==false) header("content-type: image/tiff");
}
else
{
if (strpos(strtolower($last),'.bmp')!==false) header("content-type: image/bmp");
}
;
header("content-disposition: attachment; filename=$last");
header("Content-Transfer-Encoding: binary");
readfile("marriottphoto.ru/$file"); /* выдаем файл */

?>
DCopy Сообщение 26/09/2011 06:24 Копия темы
Конструкции if else неправильные.

Так нельзя писать – 

if (strpos(strtolower($last),'.png')!= =false) header("content-type: image/png"); 

else 
{  }


Вот как надо писать – 

if (strpos(strtolower($last),'.png')!= =false) {
header("content-type: image/png"); 
} else {
}

Далее -

else  if (strpos(strtolower($last),'.bmp')!= =false)

header("content-type: image/bmp"); 


вместо

else 

if (strpos(strtolower($last),'.bmp')!= =false) header("content-type: image/bmp"); 
}
floiren Сообщение 26/09/2011 06:29 Копия темы
Спасибо, щас попробую заменить. Я не программист. Мне сделали доработочку, ан не работает. Буду менять!
maksim000 Сообщение 26/09/2011 06:35 Копия темы
Может лучше case использовать? :)
floiren Сообщение 26/09/2011 06:38 Копия темы
Ребята, будьте дрУгами! Буду прям супер признательна если мне текст правильный напишете. 
Я тут правлю конструкции, но видимо, не так, потому что теперь уже на 13 строку ругается.
DCopy Сообщение 26/09/2011 06:38 Копия темы
Лучше вообще без елс использовать пожалуй...

<php? 
$file=$_GET['img']; 
if (substr($file,0,6)!='images') exit(); 
if (strpos($file,'.jpeg')===false && strpos($file,'.jpg')===false && strpos($file,'.gif')===false && strpos($file,'.bmp')===false 
&& strpos($file,'.JPG')===false && strpos($file,'.JPEG')===false && strpos($file,'.GIF')===false && strpos($file,'.BMP')===false  
&& strpos($file,'.png')===false && strpos($file,'.PNG')===false && strpos(strtolower($file),'.tiff')== =false && strpos(strtolower($file),'.tif')=== false) exit(); 
$last=explode('/',$file); 
$last=$last[count($last)-1]; 
header("Content-Description: File Transfer"); 
if (strpos(strtolower($last),'.jpeg')!= =false)

header("content-type: image/jpeg"); 
}
if (strpos(strtolower($last),'.png')!= =false)

header("content-type: image/png");

if (strpos(strtolower($last),'.gif')!= =false)

header("content-type: image/gif");

if (strpos(strtolower($last),'.tif')!= =false)

header("content-type: image/tif");

if (strpos(strtolower($last),'.tiff')!= =false)

header("content-type: image/tiff"); 
}
if (strpos(strtolower($last),'.bmp')!= =false)

header("content-type: image/bmp"); 


header("content-disposition: attachment; filename=$last"); 
header("Content-Transfer-Encoding: binary"); 
readfile("marriottphoto.ru/$file"); /* выдаем файл */ 
?>
floiren Сообщение 26/09/2011 06:50 Копия темы
Поставила... Ошибку перестал выдавать, но теперь после клика по скачке вываливается просто в белый экран, не предлагает сохранить (((
DCopy Сообщение 26/09/2011 06:56 Копия темы
Посмотрите http заголовки которые шлются...
floiren Сообщение 26/09/2011 07:06 Копия темы
Адресная строка белого экрана: 
marriottphoto.ru/componen...

Функция не срабатывает, видимо.
Потому что сам файл есть:
marriottphoto.ru/images/p...
DCopy Сообщение 26/09/2011 07:16 Копия темы
В начале кода поправьте на
<php? 
на
<? или <?php
я опечатался сверху :))
BlackOrchidey Сообщение 26/09/2011 08:49 Копия темы
1. Лучше не вычислять в каждом условии "strpos(strtolower($last)", а организовать переменную, например $extentionFile=strpos(strtolower($last);
2. Солидарна с maksim000 – case лучше в данном случае:
  switch ($extentionFile){
    case '.gif': header("content-type: image/gif"); break
    case '.tif': header("content-type: image/tif"); break
   ...
   default: exit()
3. Попробуйте в своем варианте написать не "!= =", а "!=="
koz128901 Сообщение 26/09/2011 10:21 Копия темы
Краткость сестра таланта.

<?php
function ext($f){return substr(strrchr($f,'.'),1);}
$mime["PNG"]="image/png"; $mime["JPEG"]="image/jpeg"; $mime["GIF"]="image/gif"; $mime["JPG"]="image/jpg"; $mime["BMP"]="image/bmp"; $mime["TIFF"]="image/tiff"; $mime["TIF"]="image/tif";
$file=$_GET['img']; if (substr($file,0,6)!='images') exit();
if (array_key_exists(strtoupper(ext($file)),$mime) != true) exit();
$last=explode('/',$file);$last=$last[count($last)-1];
header("Content-Description: File Transfer");
header("content-type: ".$mime[strtoupper(ext($file))]);
header("content-disposition: attachment; filename=$last");
header("Content-Transfer-Encoding: binary");
@readfile("marriottphoto.ru/$file");

?>
koz128901 Сообщение 26/09/2011 10:38 Копия темы
Как-то на Индусско-Китайский код похоже. ИМХО.
lurkmore.ru/Индусский_код
floiren Сообщение 27/09/2011 07:14 Копия темы
Спасибо огромное всем! Друзья, спасибо за помощь, и особенно +++ Дмитрию. Спас вчера!
0

©2008 edogs egods
Выразить восторг, поругаться
или предложить что-нибудь можно на форуме
Для обсуждения этого сервиса так же есть темы на фрилансе по
поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал"