Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 16.02.2018, 15:37
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от kupidon
Также я загружаю фото из карточки УЖЕ созданного товара, а следовательно не надо проверять есть он в БД или нет. Он есть 100%.
Загрузка изображений со страницы редактирования товара отнюдь не говорит о том, что товар абсолютно точно существует.
Всякое бывает, к примеру: 2 пользователя зашли в админку единовременно, первый пошел фоточки товару заливать, второй в это время его (товар) по какой-то причине удалил.
Ответить с цитированием
  #52 (permalink)  
Старый 16.02.2018, 15:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Nexus,
главное, забывают о том, что загружать могут и левое. )
Ответить с цитированием
  #53 (permalink)  
Старый 16.02.2018, 15:46
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

laimas, при разработке доверять вообще ничему нельзя, тем более внешним данным )
Ответить с цитированием
  #54 (permalink)  
Старый 16.02.2018, 15:51
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Nexus
при разработке доверять вообще ничему нельзя, тем более внешним данным
Вот этого к сожалению и не понимают.
Ответить с цитированием
  #55 (permalink)  
Старый 17.02.2018, 19:46
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Вчера победил загрузку и файлы начались сохраняться ко мне на сервак.
Но сделал немного по другому, не как вы мне предлагали..
И все же, чтобы подвести итог нашей дискуссии, заккомментировал пока мой рабочий код, поскольку уважаю ваши советы и
хочу попробовать сделать с вашим кодом. НО поскольку для меня это темный лес, и все функции для меня новые.
Итак, вот что я вставил в обработчик:
if (!empty($_POST['file_url'])){
	$mime = array('image/png', 'image/jpeg'); //переделал строку с вашим кодом, а то он ругался на кв ковычки
	$size = 1000000; //макс. размер.

	function processingIMG($f) {
	    if(!$im = @imagecreatefromstring($f)) return 1; //файл не является изображением
	    //далее операции
	    //сохранение
	    return 0; 
	}

	if($url = array_diff(filter_var_array($_POST['file_url'], FILTER_VALIDATE_URL), [false]))   	{
	    foreach($url as $a) {
	        $hdr = get_headers($a, 1);
	        if(strpos($hdr[0], '200')) {
	            if(in_array($hdr['Content-Type'], $mime) && $hdr['Content-Length'] <= $size) 				$upl[] = $a;    
	        }
	    }
    
    	foreach($upl as $url) {
        	if($f = @file_get_contents($url)) {
            	if(processingIMG($f)) echo 'Error';    
        	}
    	}
	}
}


Вот что приходит в ответ:
Выдает ошибку.
<!--error--><br />
<b>Parse error</b>: syntax error, unexpected '[' in <b>adm\include\upload_photo\ajax_upload.php</b> on line <b>97</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>

97 строка это:
if($url = array_diff(filter_var_array($_POST['file_url'], FILTER_VALIDATE_URL), [false]))


Эти функции для меня новые и без совета мне не обойтись
Ответить с цитированием
  #56 (permalink)  
Старый 17.02.2018, 20:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

kupidon, "[false]" замените на "array(false)".
У вас, вероятно, версия php меньше 5.4 поэтому при объявлении массива через квадратные скобки сыпятся ошибки.

Upd. У вас $_POST['file_url'] - массив?

Последний раз редактировалось Nexus, 17.02.2018 в 20:34.
Ответить с цитированием
  #57 (permalink)  
Старый 17.02.2018, 20:36
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Да, у меня денвер. Тестирую на компе.

<!--error--><br />
<b>Warning</b>: filter_var_array() expects parameter 1 to be array, string given in <b>Z:\home\19sp.ru\www\forum\mysp\adm\include\uplo ad_photo\ajax_upload.php</b> on line <b>156</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br />
<b>Warning</b>: array_diff() [<a href='function.array-diff'>function.array-diff</a>]: Argument #1 is not an array in <b>Z:\home\19sp.ru\www\forum\mysp\adm\include\uplo ad_photo\ajax_upload.php</b> on line <b>156</b><br />
<script language=JavaScript src='/denwer/errors/phperror_js.php'></script>

В этой же строке:
if($url = array_diff(filter_var_array($_POST['file_url'], FILTER_VALIDATE_URL), array(false)))
Ответить с цитированием
  #58 (permalink)  
Старый 17.02.2018, 20:37
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Сообщение от Nexus
Upd. У вас $_POST['file_url'] - массив?
нет , это одиночная ссылка
Ответить с цитированием
  #59 (permalink)  
Старый 17.02.2018, 20:41
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

kupidon, вы если английский не знаете, то переведите текст ошибки с помощью какого-нибудь переводчика, это значительно упростит дебаг.
Текст ошибки - не какое-либо заклинание, а вполне ясное описание возникшей ошибки.

Функция "filter_var_array" принимает в ка-че первого аргумента массив, вы передали строку, отсюда и ошибка.
Оберните $_POST['file_url'] в массив, либо воспользуйтесь функцией "filter_var".

Сообщение от kupidon
Да, у меня денвер. Тестирую на компе.
У меня тоже стоит денвер, но версия 7.1
Ответить с цитированием
  #60 (permalink)  
Старый 17.02.2018, 21:05
Аватар для kupidon
Аспирант
Отправить личное сообщение для kupidon Посмотреть профиль Найти все сообщения от kupidon
 
Регистрация: 18.03.2016
Сообщений: 69

Спасибо Вам. Обернул в массив, заработало.

Файл на стороннем сервере я проанализировал. Если условия удовлетворены (размеры и тип), теперь сохраняю его в СВОЮ временную папку, для обработки.

У меня есть два варианта сохранения:
1. С помощью fopen и fwrite
if (file_get_contents($_POST['file_url']))
{
	$content = file_get_contents($_POST['file_url']);
	$f = fopen( "../../../photos/temp/temp.jpg", "w" );
	if (fwrite( $f, $content ) === FALSE)
	{
		echo "Не могу произвести запись в файл.";
		exit;
	}
	else {
		$filesize = filesize_get($file); 
		echo " Файл <font color='red'>" .$file ."</font> записан.".$filesize;
		fclose( $f );
	}
}
else echo "Не могу качать файл.";


2.
$file = 'https://www.google.ru/images/srpr/logo11w.png';
$file_name = basename('https://www.google.ru/images/srpr/logo11w.png');
file_put_contents('my_folder'.$file_name, file_get_contents($file));



какой мне выбрать?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jQuery для загрузки страницы в <div> Dr.Holerik jQuery 12 11.10.2016 17:36
Надо добавить кнопочку для загрузки фоток в фотогалерею shooriks Серверные языки и технологии 5 01.04.2015 16:04
не закрывается DiV после загрузки в него файла sfumato jQuery 0 02.06.2011 21:05
Форма для ввода текста с расширенными функциями 0x22b Элементы интерфейса 0 01.09.2008 10:38
Поле загрузки файла kotofeich Элементы интерфейса 3 30.07.2008 11:24