Новый комментарий

Fox-24 15.08.2018 в 17:03

Очень здорово!) Спасибо!)

ivashkevich 16.08.2018 в 21:53

На здоровье =)

artemjeka 12.09.2018 в 06:23

Спасибо за урок! Хотелось бы видеть на каждом уроке такие ссылки https://github.com/ivashkevitch/php-training-course/commit/50081a71c59feb80687e2a6eaf4a4e1fce041539
чтобы можно было задать прямо там вопрос по конкретной строке, и я думаю возможо, что все обучающиеся видели бы комментарии там и ответы по любой из строки кода. Как такой вариант?

П.С. А домашки не будет?)

ivashkevich 22.09.2018 в 10:07

Ок, учту. Домашку что-то лень было придумывать - итак нормально уже все работает =) Если есть идеи - предлагайте.

AxLT 22.09.2018 в 19:08

скопировал исходники получаю ошибку
Fatal error: Uncaught TypeError: Return value of getUserLogin() must be of the type string, null returned in C:\OSPanel\domains\myproject.loc\www\auth.php on line 21

ivashkevich 22.09.2018 в 20:39
function getUserLogin(): ?string

точно стоит вопрос перед string?

Bogdan 02.01.2019 в 11:32

все классно, но конечно туго пошел урок, когда стараешься понять как оно должно отработать, туго понимаешь куда надо было подставлять значения, и где и что должно появляться (на какой страничке)

ashfedor 17.03.2019 в 15:03

Может ошибаюсь но по моему можно обойтись без первой проверки
if (!empty($_FILES['attachment']))
ведь следующая делает то же самое , ну плюс проверяет куки

if ($login !== null && !empty($_FILES['attachment']))

ivashkevich 17.03.2019 в 23:55

Верно

daneela 23.10.2019 в 22:34

У меня по началу вылезала ошибка: Fatal error: Cannot redeclare из-за файла auth.php.

Устранил проблему, заменив в каждом файле:

require __DIR__ . '/auth.php';

на

require_once __DIR__ . '/auth.php';

как я понял обращение к скрипту было больше одного раза.

ivashkevich 24.10.2019 в 14:43

Верно. Молодец, что справился

[email protected] 02.11.2019 в 12:21

Не понял вообще, как вы скрыли показ загрузки фаилов, совсем ничего не написано(

ivashkevich 02.11.2019 в 13:29

Напиши в телегу или ВК.

[email protected] 24.12.2019 в 17:24
<html>
<head>
    <title>Главная страница</title>
</head>
<body>
<?php if ($login === null): ?>
    <a href="login.php">Авторизуйтесь</a>
<?php else: ?>
    Добро пожаловать, <?= $login ?>
    <br>
    <a href="upload.php">Загрузить файл</a>
    <br>
    <a href="logout.php">Выйти</a>
<?php endif; ?>
</body>
</html>
[email protected] 24.12.2019 в 17:51

Сам организовал переход ссылкой.

[email protected] 24.12.2019 в 17:56

Когда нажимаю выйти, отображается тоже самое, что и при вводе логина и пароля (о чем писал выше) и только после перехода опять на локальный хост, заново входишь и отображается информация.

Объект не найден!
Запрашиваемый ресурс не найден. Ссылка на странице неверна или устарела. Пожалуйста, сообщите автору этой страницы об ошибке.

Если Вы считаете, что это ошибка сервера, пожалуйста, сообщите об этом веб-мастеру.

Error 404
localhost
Apache

ivashkevich 26.12.2019 в 18:42

Ничего не понятно, что такое переход на локальный хост?

eNergy 16.01.2020 в 16:02

Урок супер, спасибо. Только жаль, что нет видео. До этого смотрел уроки, после просмотра старался повторить и когда Вас слушаешь, мне легче дается материал, нежели только в формате статьи.

ivashkevich 18.01.2020 в 07:27

Пора учиться уже без повторения) Мне видео сложно делать)

X-Nick 09.02.2020 в 13:14

В ГитХабе выложен просто конструктор рабочих моментов? Это же не готовый рабочий проект?
Если это все же готовый фотоальбом, у меня вопрос:

Почему форма авторизации находится не в главном скрипте(index), а в скрипте upload? Открывая готовый сайт, попадаем сразу без авторизации в галерею, причем изначально в пустую, т.е. на пустую страницу, на которой нет предложения авторизации, а чтобы перейти к форме авторизации/загрузки картинок, нужно в адресной строке явно указывать путь к страничке upload.php.

Даже, если в галерею предварительно положить какие-то фотографии, дальше просмотра этих кртинок нет никакой возможности что-то дальше делать, т.к. не предусмотрена возможность загрузки картинок, нет формы загрузки картинок, она в скрипте, на который нет перехода из галереи.

Или я чего-то не понял, или что-то недописано в уроке, или просто подразумевается, что на гитхабе это балванки которые нужно доработать/модифицировать, чтобы получить рабочий альбом?
Я сделал рабочий альбом, но в нем главный скрипт в index, в котором сразу проверяется авторизация. Если авторизация пройдена, только тогда можно все в том же index показать галерею, если там что-то есть и показать форму загрузки картинок и выход из авторизации, в скрипте upload оставил только логику загрузки картинок.

ivashkevich 12.02.2020 в 12:31

Здравствуйте. Вы всё правильно сделали. На гитхабе один из вариантов.

[email protected] 01.04.2020 в 19:23

статья супер, но есть всё ещё пробелы в знаниях у меня. спасибо

ivashkevich 01.04.2020 в 19:56

На данном этапе пробелы это норма) да и вообще, они всегда будут, невозможно знать всё

OLEG-M 11.04.2020 в 09:46

Спасибо за очень хороший курс!
Сегодня прошел последнее занятие, создал фотоальбом все работает.
Хотел дополнить функцией, при условии что когда пользователь не залогинен, не видны были фото.
Хотел сделать как то максимально просто, в принципе получилось, но теперь, при условии когда пользователь авторизирован карнтинки видны просто битыми ссылками в квадратиках.
Как можно вставить html код в foreach правильно? Или способ которым я попробовал совсем не удачный и нужно просто другим подходом видимость/не видимость сделать.
Вот код index.php файл.

if ($login === null) {
    echo 'Фото не доступны ';
} else {
    $files = scandir(__DIR__ . '/uploads');
    $links = [];
foreach ($files as $fileName) {
    if ($fileName === '.' || $fileName === '..') {
        continue;
    }
    $links[] = 'https://localhost:8000/uploads/' . $fileName;

foreach ($links as $link): 
    echo '<a href="<?= $link ?>"><img src="<?= $link ?>" height="150px"></a>';
endforeach; 
    }
}
?>
ivashkevich 11.04.2020 в 21:23

Закрывающий тег в конце файла не нужен.
А по поводу вставки картинок - ну так ведь к вас вместо ссылки на картинку всегда $link пишется. Конкатенацию нужно использовать.

OLEG-M 11.04.2020 в 10:23

Переделал чуть-чуть , все работает.
Только как фигурная скобка отрабатывает если php прерывается на html?)

<?php

    if ($login === null) {
        echo 'Фото не доступны ';
    } else {
        $files = scandir(__DIR__ . '/uploads');
        $links = [];

        foreach ($files as $fileName) {
            if ($fileName === '.' || $fileName === '..') {
                continue;
            }
            $links[] = 'https://localhost:8000/uploads/' . $fileName;
        }

        foreach ($links as $link) : ?>
            <a href="<?= $link ?>"><img src="<?= $link ?>" height="150px"></a>
    <?php endforeach;
    }
    ?>
ivashkevich 11.04.2020 в 21:25

Ну вот так вот он умеет. Вы же отделили тегами специальными код php от верстки. А дальше он уже справится :)

studentDev 13.04.2020 в 13:05

Кстати хорошая тема для реализации публикование различных постов)
Спасибо огромное за урок! :D

studentDev 13.04.2020 в 13:10
  • дополнил код в index.php
    <?php if($login === null): ?>
        <p>Вы не сможете опубликовать изображение пока не авторизуетесь!</p>
        </br>
        <form action="/login.php"><input type="submit" value="Авторизоваться"></form>
        <?php else: ?>
            <form action="/upload.php"><input type="submit" value="Опубликовать"></form>
        <?php endif; ?>
ivashkevich 13.04.2020 в 15:00

Отлично

[email protected] 20.06.2020 в 22:42

Medium не дается, просто никакого алгоритма в голове.

ivashkevich 21.06.2020 в 08:33

Позже появится)

[email protected] 15.04.2021 в 17:39

Так мы написали первую версию инстаграма)

ivashkevich 17.04.2021 в 20:54

Ага) осталось лайки прикрутить

[email protected] 01.05.2022 в 20:46

Супер!!! Спасибо!

ivashkevich 17.05.2022 в 14:34

На здоровье)

Mukunda 02.05.2022 в 18:29
<?php if (!empty($error)): ?>
    <?= $error ?>
<?php elseif (!empty($result)): ?>
    <?= $result ?>
<?php endif; ?>

Спасибо за урок. Непонятно откуда берутся значения переменных $error и $result в upoload.php, чтобы их проверить, по моему они висят в воздухе?

ivashkevich 17.05.2022 в 14:34

Они расположены выше, в логике. Смотри предыдущий урок

Логические задачи с собеседований