Вопросы от начинашки

estelle23

Новичок
Всем привет!
Купила курсы, начала изучать PHP но уже на втором ДЗ ступор и не понимание что от меня нужно. Ниже процитирую ДЗ и что в итоге у меня пока получается.
ПыСы: а тут "песочница" для таких как я есть? Ткните, а то я чего-то с ходу не нашла...
ДЗ:
Разработать скрипт скачивания документа .xls со страницы сервера http://task.manager/getxlsx.php?file_name=#имя файла# .
В окне сохранения документа, в поле “имя файла” должно по умолчанию подставится имя - #имя файла#.xls
Для успешной реализации задания вам понадобится:
1. Использовать суперглобальный массив $_GET[‘file_name’] - в ней будет хранится переданное имя файла.
2. Использовать header из лекции, а найти нужные заголовки необходимо самостоятельно!
3. Если в GET-параметре не передано название файла, страница должна выдать 404 ошибку!

Путем долгих копаний получилось следующее:
<?php
header('Allow: GET');
header('Content-type: application/vnd.ms-excel');

//function file_download($filename) {
//if (file_exists($filename)) {
//header('Location: ' . $filename);
// } else {
// header($_SERVER["SERVER_PROTOCOL"] . ' 404 Not Found');
// header('Status: 404 Not Found');
// }
// exit;
//}

header('Content-Disposition: attachment; filename=new_file.xls');
http_response_code(404);
?>


Ответ учителя:
Попробую перефразировать задание
  1. Необходимо создать страницу (скрипт) на вашем веб сервере, которая будет доступна по адресу http://task.manager/getxlsx.php - эту часть вы уже сделали
  2. Если на при переходе на эту страницу был передан GET параметр file_name, например: http://task.manager/getxlsx.php?file_name=new_file, то в качестве ответа, сервер должен "как будто" отдать файл на скачивание, при этом имя этого файла должно быть new_file.xls
  3. Для того чтобы заставить браузер (клиента) думать, что сервер отдает файл на скачивание ему нужно установить заголовки, при этом реально отдавать никакой файл в теле ответа не нужно
  4. В случае если GET параметр не задан или значение file_name - пусто, то сервер должен установить 404 статус ответа
Вот такую логику должен реализовать ваш скрипт.

Все осложняется 2 моментами:
1. не могу "вкурить" структуру написания (что и за чем и в каком порядке идет)
2. if/else мы еще не изучали, однако в ДЗ они уже должны быть...

Помогите в этом всем разобраться, пожалуйста!
 

AnrDaemon

Продвинутый новичок
Скрипт буквально из трёх строк, но я так понимаю, без чёткого понимания первого задания, второе вполнить нереально.
Разбейте задание на функциональные блоки.
1. Что надо сделать в лучше случае.
2. Что надо сделать в худшем.
3. Чем эти случаи отличаются.

Есть ли у вас понимание управляющих структур языка и как с их помощью структурировать выполнение кода?

Давайте пока без кода, своими словами опишите.
 

fixxxer

К.О.
Партнер клуба
if/else мы еще не изучали
Мы вроде не в начальной школе, чтобы такими категориями рассуждать. Не изучали - открываем документацию и изучаем.

Управляющие структуры языка - это первое, что требует изучения. В официальной документации на PHP они расписаны подробно и с примерами: http://php.net/manual/ru/language.control-structures.php
 

Фанат

oncle terrible
Команда форума
На мой вкус,
Мы вроде не в начальной школе
Я так понимаю, это не претензия, а попытка разобраться, правильно ли понято задание.

Но вообще на мой взгляд сложноватое задание для всего лишь второго урока.
 

Фанат

oncle terrible
Команда форума
Песочница - это основной раздел, вопросы по РНР.

Задание какое-то путанное. Я бы на месте составителей курса разделял базовые вещи (условный переход и суперглобальные массивы) и более продиынутые (редко используемые HTTP заголовки).

Но раз уж задание такое, то дам старый совет: найти сайт, на котором можно сказать ексел файл. открыть средства разработчика в браузере. вкладка "Сеть", нажать на скачивание и посмотреть, какие заголовки отдает браузер.
Переписать их все в свой скрипт (ну за вычетом стандартных)
 

fixxxer

К.О.
Партнер клуба
Но вообще на мой взгляд сложноватое задание для всего лишь второго урока.
Это да, даже не то что сложноватое, а скорее бессмысленное. Без знания PHP и основ протокола HTTP, выполнение такого задания будет упражнением в stack overflow driven development.
 

AnrDaemon

Продвинутый новичок
Давайте не будем устраивать дискуссию на тему бессмысленности конкретного курса?
Пока у человека не пропало желание разобраться, всё можно исправить.
 

estelle23

Новичок
Скрипт буквально из трёх строк, но я так понимаю, без чёткого понимания первого задания, второе вполнить нереально.
Разбейте задание на функциональные блоки.
1. Что надо сделать в лучше случае.
2. Что надо сделать в худшем.
3. Чем эти случаи отличаются.

Есть ли у вас понимание управляющих структур языка и как с их помощью структурировать выполнение кода?

Давайте пока без кода, своими словами опишите.
Первое задание было не связано со вторым (там надо было просто настроить среду).
По функциональным блокам: учителя не приемлют вариативности. Я это поняла по первому заданию, когда решила "сумничать" и сделала по-своему (вполне рабочий вариант).
Пока я поняла что от меня требуется создать скрипт, который бы скачивал файл с именем "new_file" и расширением ".xls". Но, при этом в самом конце скрипта должна быть "заглушка" с 404 ошибкой. Т.е. "заглушка" закомментирована - скачивание файла возможно, не закомментирована - выдает 404 ошибку.
 

estelle23

Новичок
Мы вроде не в начальной школе, чтобы такими категориями рассуждать. Не изучали - открываем документацию и изучаем.

Управляющие структуры языка - это первое, что требует изучения. В официальной документации на PHP они расписаны подробно и с примерами: http://php.net/manual/ru/language.control-structures.php
Спасибо!
Не кидайте сильно тапками. Я вообще из другой сферы. Курсы взяла, поддавшись на их бесплатный мастеркласс где объясняли все как "для дЭбилов", с чего-то я решила что и в программировании будет также. Сейчас понимаю что их "с нуля" для меня ни разу не с нуля!
 

estelle23

Новичок
Песочница - это основной раздел, вопросы по РНР.

Задание какое-то путанное. Я бы на месте составителей курса разделял базовые вещи (условный переход и суперглобальные массивы) и более продиынутые (редко используемые HTTP заголовки).

Но раз уж задание такое, то дам старый совет: найти сайт, на котором можно сказать ексел файл. открыть средства разработчика в браузере. вкладка "Сеть", нажать на скачивание и посмотреть, какие заголовки отдает браузер.
Переписать их все в свой скрипт (ну за вычетом стандартных)
Ага, поняла.
Оффтоп /Вообще, мне это напоминает мое обучение в автошколе. Наша площадка была в соседнем городе, поэтому нас "зеленых" выпускали сразу в город)))). Благо, водить немножко я умела и правила знала (папа научил на грузовой машине), но все равно было дико страшно. Зато потом я легко села за руль своей машины. Как грицца "тяжело в учении". Но есть и те кто так и не стал водить..."/

За совет - спасибо! Сейчас попробую!
 

AnrDaemon

Продвинутый новичок
учителя не приемлют вариативности
Только очень глупые учителя.
Это в математике не бывает двух ответов на одну задачу. А в рисовании - очень даже.
Да, программирование - креативный навык, как ни странно. Поэтому меня всегда веселят попытки тарификации "за час".
Пока я поняла что от меня требуется создать скрипт, который бы скачивал файл с именем "new_file" и расширением ".xls". Но, при этом в самом конце скрипта должна быть "заглушка" с 404 ошибкой. Т.е. "заглушка" закомментирована - скачивание файла возможно, не закомментирована - выдает 404 ошибку.
Не скачивал, а отдавал. И "заглушки" обычно ставят в начале, чтобы были хорошо видны и не отвлекали от работы.
Что-то типа
PHP:
if(empty($_GET['new_file'))
{
    http_response_code(404);
    die;
}

…дальше реальная работа…
 

Фанат

oncle terrible
Команда форума
с чего-то я решила что и в программировании будет также
Ну, строго говоря, как раз РНР и считается по праву самым легким в изучении языком, так что своя правда в таком предположении есть.
В общем, рекомендую попробовать, а а помощью можно приходить сюда. Все равно здесь трафика нникакого нету, а так будет хоть чем заняться - обсудить тупых преводов, которые дают такие задания.
 

vibropress

Новичок
Ага, поняла.
Оффтоп /Вообще, мне это напоминает мое обучение в автошколе. Наша площадка была в соседнем городе, поэтому нас "зеленых" выпускали сразу в город)))). Благо, водить немножко я умела и правила знала (папа научил на грузовой машине), но все равно было дико страшно. Зато потом я легко села за руль своей машины. Как грицца "тяжело в учении". Но есть и те кто так и не стал водить..."/

За совет - спасибо! Сейчас попробую!
Хочу поделится случаем по поводу сдачи автомобильного вождения. Мой сын лет 10 назад учился в автошколе в Киеве. А когда пришло время сдавать вождение - в Киеве был страшнейший гололед. Не улицы - а сплошной каток! Рассказывал, что когда выезжали - у всех тряслись руки (у инструктора - тоже). Но, тем не менее из 18 человек не сдали только двое. Причем ни один автомобиль не пострадал. Так что: глаза боятся, а руки - делают!
 

Vladson

Сильнобухер
Так что: глаза боятся, а руки - делают!
Я был бы из тех двух. Иногда бывает что "глаза боятся, а руки - из жопы". Иногда надо чётко оценивать свои силы, и как можно раньше понять что это "не твоё" чтоб осталось время на поиск того что не требует тех качеств которых у тебя нет. (Я бы никогда не смог стать например дизайнером, просто совершенно несовместимый склад ума.)

По теме топика скажу проще. Очень полезный навык научиться переключать мозг в "вид от 3-го лица" (как в играх)
Часто сложность в том что не понимаешь что делаешь не потому что ты "тупой" а потому что смотришь на ситуацию изнутри, и не видно всей картины. Т.е когда есть задача это часто только "текст" задания, а важно увидеть "суть" задачи, и внимательно изучить инструмент (чтоб не пытаться забить гвоздь микроскопом)

Т.е когда наступает момент "ни черта не понятно" надо просто убрать руки с клавиатуры, возможно даже пойти налить чаю, и вдумчиво подумать "а что собственно мне надо ?"
 

AnrDaemon

Продвинутый новичок
Т.е когда наступает момент "ни черта не понятно" надо просто убрать руки с клавиатуры, возможно даже пойти налить чаю, и вдумчиво подумать "а что собственно мне надо ?"
Так и делаю.
Секретарь в такие моменты внимательно заглядывает мне в лицо взглядом "всё плохо, да?"
 

estelle23

Новичок
Я был бы из тех двух. Иногда бывает что "глаза боятся, а руки - из жопы". Иногда надо чётко оценивать свои силы, и как можно раньше понять что это "не твоё" чтоб осталось время на поиск того что не требует тех качеств которых у тебя нет. (Я бы никогда не смог стать например дизайнером, просто совершенно несовместимый склад ума.)

По теме топика скажу проще. Очень полезный навык научиться переключать мозг в "вид от 3-го лица" (как в играх)
Часто сложность в том что не понимаешь что делаешь не потому что ты "тупой" а потому что смотришь на ситуацию изнутри, и не видно всей картины. Т.е когда есть задача это часто только "текст" задания, а важно увидеть "суть" задачи, и внимательно изучить инструмент (чтоб не пытаться забить гвоздь микроскопом)

Т.е когда наступает момент "ни черта не понятно" надо просто убрать руки с клавиатуры, возможно даже пойти налить чаю, и вдумчиво подумать "а что собственно мне надо ?"
Будете смеяться, но я из дизайна))) просто к 30 вдруг осознала что у меня более инженерный склад ума (именно поэтому я любой дизайн с разметки начинаю). Дизайн вообще всегда со скрипом шел. Точно знаю почему сейчас трудно: ну я очень долго вкуриваю поначалу, зато потом все просто. Сейчас не могу въехать в структуру/конструкцию/скелет кода (т.е. что и в каком порядке за чем идет). Недавно к моему ДЗ присоединился другой преподаватель и написал подсказки. В итоге стало ясно, что почти все сделано, но местами перепутано и не хватает одной строчки.
Вообще, использую связку Sublime Text + OpenServer и столкнулась с тем, что кто-то/что-то отдает мне не пустое значение (всегда выводится как минимум строка "php") откуда оно лезет непонятно, я этот вопрос задала преподавателям. воть...
 

Фанат

oncle terrible
Команда форума
Если запостить код сюда, то можно спросить и у нас :)
 

AmdY

Пью пиво
Команда форума
>> (всегда выводится как минимум строка "php")
Как настроить сервер, чтобы тот понимал php файлы написано в любой книге по php, а вы пытаетесь освоить программирования по статьям из интернета?
 

mfb

Новичок
Будете смеяться, но я из дизайна))) просто к 30 вдруг осознала что у меня более инженерный склад ума (именно поэтому я любой дизайн с разметки начинаю). Дизайн вообще всегда со скрипом шел. Точно знаю почему сейчас трудно: ну я очень долго вкуриваю поначалу, зато потом все просто. Сейчас не могу въехать в структуру/конструкцию/скелет кода (т.е. что и в каком порядке за чем идет). Недавно к моему ДЗ присоединился другой преподаватель и написал подсказки. В итоге стало ясно, что почти все сделано, но местами перепутано и не хватает одной строчки.
Вообще, использую связку Sublime Text + OpenServer и столкнулась с тем, что кто-то/что-то отдает мне не пустое значение (всегда выводится как минимум строка "php") откуда оно лезет непонятно, я этот вопрос задала преподавателям. воть...

А можно на итоговую работу посмотреть?)
 

estelle23

Новичок
>> (всегда выводится как минимум строка "php")
Как настроить сервер, чтобы тот понимал php файлы написано в любой книге по php, а вы пытаетесь освоить программирования по статьям из интернета?
не то чтобы по статьям. Но какие настройки мне дали, такие и сделала. Тут еще есть предложение снести все под корень и поставить человеческий виндовый сервер. Я пока не хочу этого делать, тк преподаватели не любят вариативности в решениях (что лично для меня странно)
 
Сверху