здесь ошибка: сперва нужна проверка на размер файл, и только после этого проверка на загрузку, т.к. в текущем варианте IF на размер файла срабатывает, но сам файл фактически загружается на сервер.
Да, автор лоханулся конкретно, в его случае файл будет загружаться, просто не будет написано что он загружен Вот правильный варик if($_FILES['filename']["size"] > 2*1024*1024){ exit("Файл превышает размер 2 мб"); }else { if(move_uploaded_file($_FILES['filename']["tmp_name"] , "tmp/" . $_FILES['filename']["name"])){ echo 'файл загружен'; }else { echo 'файл НЕ загружен'; } }
Андрей, Работаю с openserver , проблема такая , при интерпретации php кода возникает проблема, при которой любой используемый браузер, не интерпретирует код, а лишь выводит на экран сам код. Пытался менять домены, файлы, перезагружать openserver. Итог: все равно выдает просто код (текстом)
Да, мы можем сделать кнопку отправки неактивной, если размер файла превышает лимит, с помощью JavaScript. Для этого нам нужно добавить обработчик событий на поле ввода файла, который будет проверять его размер при выборе файла. Если размер файла превышает заданный лимит, то мы делаем кнопку отправки неактивной, а если размер файла в пределах лимита, то кнопка отправки становится активной.
Спасибо тебе большое за твои комментарии, стараюсь решать всё сам, но иногда как например в этом уроке, хоть убей понять не мог что да как делать, и твоё решение очень помогло. Всего тебе хорошего, спасибо ещё раз за такую помощь)
Андрей привет подскажи в чем может быть проблема, написал всё в точности как у тебя, но обработчик будто не получает файл, и $_FILES соответственно пустой
на реальном сервере не работает пошел другим путём, читаю /tmp => scandir(), видит загруженный файл в массиве [3] подставляю путь.название в move_uploads_file() ... и нихрена!!
Разбить строку по точке, и последний элемент списка это его расширение, а потом проверяешь есть ли это расширение в списке разрешенных расширений (нужно список создать где будут нужные расширения)
Всем привет! Кидаю свое решение, не смогла я додуматься, как сразу загруженный док открывать. Если будут комментарии буду благодарна. if(move_uploaded_file($_FILES['filename']['tmp_name'], 'temp/'.$_FILES['filename']['name'])){ if ($_FILES['filename']['size'] > 1*1024*1024) { echo 'Размер файла превышает 2 мегабайта'; exit(); echo 'test';
Если кто то в 2023 смотрит, вот по моему мнению самый правильный код для дз: if (move_uploaded_file($_FILES["userfile"]["tmp_name"], "temp/{$_FILES["userfile"]["name"]}")) { $log = explode(" ", file_get_contents("temp/{$_FILES["userfile"]["name"]}")); foreach ($log as $value) { $log2[] = explode("]", $value); } for ($i=0; $i < count($log2); $i++) { $time[] = substr($log2[$i][0], 1); $name[] = substr($log2[$i][1], 2); $write[] = $log2[$i][2]; } for ($i=0; $i < count($time); $i++) { echo "Time $time[$i]$name[$i]Write $write[$i]"; } }else{ echo "Файл не был загружен"; }
супер. продолжайте эту тему.php рулит)
Спасибо большое за ролики!
здесь ошибка:
сперва нужна проверка на размер файл, и только после этого проверка на загрузку, т.к. в текущем варианте IF на размер файла срабатывает, но сам файл фактически загружается на сервер.
напишите как проверку сделать
@@сергейсергей-г9х6е
if ($_FILES['filename']['size'] > 2 * 1024 * 1024) {
exit('Размер файла превышает 2Мб');
}elseif (move_uploaded_file($_FILES['filename']['tmp_name'], 'temp/' .$_FILES['filename']['name'])) {
echo 'Файл загружен на сервер';
echo 'Характеристики файла:';
echo 'Имя файла:';
echo $_FILES['filename']['name'] . '';
echo 'Размер файла:';
echo $_FILES['filename']['size'] . '';
echo 'Тип файла:';
echo $_FILES['filename']['type'];
}else{
echo 'Файл не загружен на сервер';
}
@@JohnDoe-uj2br спасибо
А не проще поставить max_file_size в самой форме?
Да, автор лоханулся конкретно, в его случае файл будет загружаться, просто не будет написано что он загружен
Вот правильный варик
if($_FILES['filename']["size"] > 2*1024*1024){
exit("Файл превышает размер 2 мб");
}else {
if(move_uploaded_file($_FILES['filename']["tmp_name"] , "tmp/" . $_FILES['filename']["name"])){
echo 'файл загружен';
}else {
echo 'файл НЕ загружен';
}
}
хорошо. прошел и этот урок)
Не понимаю, я разделил по переносу строк, а как разбить строку на время, имя и текст?
Андрей, Работаю с openserver , проблема такая , при интерпретации php кода возникает проблема, при которой любой используемый браузер, не интерпретирует код, а лишь выводит на экран сам код.
Пытался менять домены, файлы, перезагружать openserver.
Итог: все равно выдает просто код (текстом)
можем ли мы сделать кнопку отправки неактивной, если размер файла превышает лимит?
Да, мы можем сделать кнопку отправки неактивной, если размер файла превышает лимит, с помощью JavaScript.
Для этого нам нужно добавить обработчик событий на поле ввода файла, который будет проверять его размер при выборе файла. Если размер файла превышает заданный лимит, то мы делаем кнопку отправки неактивной, а если размер файла в пределах лимита, то кнопка отправки становится активной.
Можно ответ увидеть или подсказку по последнему пункту домашнего задания?
Нормально))
Как занести имя файла в таблицу бд для вывода
ИИСУС ХРИСТОС ЕСТЬ МЕССИЯ И ОН ВОСКРЕС!!!☦❤
Андрей, привет. Планируешь курс по Yii2 или другой фреймворк?
Yii не изучал, а вот Laravel можно будет
@@andrievskii привет и когда планируешь уроки laravel сделать?
@@andrievskii Ждем laravel!
Где сама картинка
Для тех кто не справился с дз:
if(move_uploaded_file($_FILES['filename']["tmp_name"] , "tmp/" . $_FILES['filename']["name"])){
$log = file_get_contents("tmp/" . $_FILES['filename']["name"]);
$arr = explode("
", $log);
unset($arr[count($arr)-1]);
foreach($arr as $key => $value){
$arr2 = explode("]", $value);
foreach($arr2 as $key1 => $value1){
$var1 = $arr2[0] . "";
}
foreach($arr2 as $key1 => $value1){
$var2 = $arr2[1] . "";
}
foreach($arr2 as $key1 => $value1){
$var3 = $arr2[2] . "";
}
echo "a. " . "Time " . substr($var1, 1);
echo "b. " . substr($var2, 2);
echo "c. " . "Write " . $var3;
}
}
if(move_uploaded_file($_FILES['filename']['tmp_name'], 'item/' . $_FILES['filename']['name'])){
$file = file('item/' . $_FILES['filename']['name']);
foreach($file as $key => $value){
$value = explode("] ", $value);
$value = str_replace("[", "", $value);
foreach($value as $key2 => $value2){
if($key2 == 0){
echo 'Time ' . $value2 . "";
}else if($key2 == 1){
echo 'Name ' . $value2 . "";
}else if($key2 == 2){
echo 'Write ' . $value2 . "";
}
}
echo "";
}
}else{
echo 'Файл НЕ скопирован на сервер';
}
Спасибо тебе большое за твои комментарии, стараюсь решать всё сам, но иногда как например в этом уроке, хоть убей понять не мог что да как делать, и твоё решение очень помогло. Всего тебе хорошего, спасибо ещё раз за такую помощь)
А зачем еще другие циклы?
if ($_FILES['fileName']['size'] < 1024 * 2048) {
if (move_uploaded_file($_FILES['fileName']['tmp_name'],'css/' . $_FILES['fileName']['name'])) {
$log = explode("
", file_get_contents('css/month.txt'));
foreach ($log as $value) {
$arr2 = explode(']', $value);
$var1 = $arr2[0];
$var2 = $arr2[1];
$var3 = $arr2[2];
echo "";
echo "a. Time " . substr($var1, 1) . '';
echo "b. " . substr($var2, 2) . '';
echo "c. write " . $var3 . '';
echo "";
}
}
} else {
echo 'too much size';
}
Почему sumbit у меня не кнопка, а поле ввода?
Добрый день! нету файла из ДЗ. В какой папке temp, где этот файл?
Спасибо
По ссылке под роликом есть домашнее задание - проверил
Андрей привет подскажи в чем может быть проблема, написал всё в точности как у тебя, но обработчик будто не получает файл, и $_FILES соответственно пустой
первый файл form должен быть в расширении html
Форма:
Lesson36
input{
position:absolute;
left:10%;
border-color: blue;
border-radius: 5px;
border-width: 1px;
}
/* input[type='file'] {
color: transparent;
}
*/
Выберите файл
Подтвердите
на реальном сервере не работает
пошел другим путём, читаю /tmp => scandir(), видит загруженный файл в массиве [3]
подставляю путь.название в move_uploads_file() ... и нихрена!!
А как сделать проверку по формату jpg png gif нужен масив?
Разбить строку по точке, и последний элемент списка это его расширение, а потом проверяешь есть ли это расширение в списке разрешенных расширений (нужно список создать где будут нужные расширения)
у меня не получается сделать дз как это делать можете помочь
БОГ ЕСТЬ ЛЮБИТЕ БОГА И СВОИХ БЛИЖНИХ!!!☦❤
Всем привет!
Кидаю свое решение, не смогла я додуматься, как сразу загруженный док открывать. Если будут комментарии буду благодарна.
if(move_uploaded_file($_FILES['filename']['tmp_name'], 'temp/'.$_FILES['filename']['name'])){
if ($_FILES['filename']['size'] > 1*1024*1024) {
echo 'Размер файла превышает 2 мегабайта';
exit();
echo 'test';
}else{
echo 'Файл скопирован на сервер';
echo 'Характеристики нашего файла:';
echo 'Имя файла: ';
echo $_FILES['filename']['name'] . '';
echo 'Размер файла: ';
echo $_FILES['filename']['size'] . '';
echo 'Тип файла: ';
echo $_FILES['filename']['type'] . '';
}
$data = file('temp/chatlog_2019-12-04.txt');
echo '';
print_r (var_dump($data));
echo '';
}
file_get_contents
Ужас, хуже только дударь
У меня получилось так:
👍
Если кто то в 2023 смотрит, вот по моему мнению самый правильный код для дз:
if (move_uploaded_file($_FILES["userfile"]["tmp_name"], "temp/{$_FILES["userfile"]["name"]}")) {
$log = explode("
", file_get_contents("temp/{$_FILES["userfile"]["name"]}"));
foreach ($log as $value) {
$log2[] = explode("]", $value);
}
for ($i=0; $i < count($log2); $i++) {
$time[] = substr($log2[$i][0], 1);
$name[] = substr($log2[$i][1], 2);
$write[] = $log2[$i][2];
}
for ($i=0; $i < count($time); $i++) {
echo "Time $time[$i]$name[$i]Write $write[$i]";
}
}else{
echo "Файл не был загружен";
}
Твой код единственный заработал. Ты случайно не через Опенсервер сервак поднял?
@@ДмитрийУсов-м4я не