Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
  • Как сделать систему переписки сообщений?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как сделать систему переписки?
    сесть и сделать. Написать код(клиента и сервера), создать бд/таблички, настроить сокеты... Много чего сделать чтоб создать...

    Ну как в ВК, или Telegram.
    Вообще 2 разные системы, первая сайт-соцсеть, вторая приложение.

    Как сделать её быстрой?
    Оптимизировать код, оптимизировать запросы, купить сервер по мощнее, раздать всем быстрый интернет...

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

    И как сделать чтобы показывалось прочитано или нет.
    при загрузке сообщения смотреть активно ли окно диалога, если активно - на сервер отослать что сообщение прочитано, если нет - по активации окна отослать что все ранее присланные сообщения прочитаны.

    Редактирование и удаление сообщений.
    Да. В смысле делай. Все так же, код редактирования, код удаления...
    Ответ написан
    5 комментариев
  • Как использовать редирект как обновление страницы?

    wisgest
    @wisgest
    Не ИТ-специалист
    Поменять местами
    <?php
    if(isset($_POST['start'])) {
    header('Location: http://test.ru/index.php?you') ;
    }
    ?>
    
    <form method="POST" >
    <input type="submit" name="start" value="start" >
    </form>

    Заголовки (в данном случае Location не выводятся, если был какой-то вывод в тело ответа. (Или использовать буферизацию: см. ob_start() и иже с ней.)
    Ответ написан
    Комментировать
  • Почему не работает setcookie?

    1. Куки не поставятся, если уже был вывод (теги, пустые строки, пробелы, текст и т.п.)
    2. В глобальную переменную $_COOKIE они попадут только на следующем хите (после перезагрузки страницы)
    Пруф

    PS и почитайте про sql-инъекции...
    Ответ написан
    8 комментариев
  • Для чего объявлять (создавать) имена полей в начале класса если они же по сути объявляются (создаются) в конструкторе?

    @rfm
    чтобы в редакторе кода, когда вы набираете
    $object->|
    он мог вам подсказать какие свойства есть у объекта.

    чтобы явно указать видимость свойств (например, протектед)
    чтобы потом не искать какие свойства есть у объекта через год, шарясь по всем его методам.
    чтобы у вас не отвалилось все к чертям, если вы перепишите конструктор в классе-потомке.
    Ответ написан
    Комментировать
  • Нужно ли защищать обработчик формы (PHP файл) от прямого доступа?

    @alekssamos
    Программист любитель
    Если будут проблемы с интернет соединением на сервере или упадёт сайт, когда ключ может показаться в тексте ошибки. Для надёжности ещё отключи вывод всех ошибок
    Ответ написан
    Комментировать
  • Как экранирование кавычки html атрибутов в json?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    json_encode($value); уже создает строку с экранированными кавычками. А ошибка у вас вроде к ним не относится.
    Ответ написан
    3 комментария
  • Почему возвращает число из базы в строковом виде?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    версия какая?

    UPD: скорее всего юзается разный драйвер, гуглите в сторону mysqlnd(для поддержки типов он должен быть установлен), на предмет наличия этого драйвера запускайте php -i и смотрите что в разделе пдо драйвера.
    Ответ написан
    2 комментария
  • Как украсть файл с сервера?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    image.jpgЖулик, не воруй!
    Ответ написан
    Комментировать
  • По фэншую ли синтаксис?

    Wolfnsex
    @Wolfnsex Куратор тега PHP
    Если не хочешь быть первым - не вставай в очередь!
    Так писать по фэншую код или есть запись объектов в массив ровнее?
    У Вас тут не столько запись чего-то в массив, сколько предварительное присвоение значения переменной, с уже последующем добавлением оной в массив. Оно работать конечно будет, но выглядит несколько странно, на мой взгляд. Подобные принципы обычно используются в условных операторах или циклах (if/while), для последующей обработки переменной (результата).

    Если Вам нужно просто собрать массив, обычно пишут так:
    $arr = [
        new Quadrate(6),
        new Cube(5),
        new Rectangle (2),
        ... ,
    ];


    P.S. Так же этот код можно написать в строчку, если он не выходит за границу (80 или 120 символов, в IDE и редакторах эта линия почти всегда есть по умолчанию) или если просто если Вам очень хочется написать этот код в одну строку.
    Ответ написан
    6 комментариев
  • Как правильно работать с мультибайтовыми строками в php7 и чем плох func_overload?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Всё очень просто.
    Использование func_overload меняет работу стандартных функций. Например, strlen после этого начинает возвращать длину строки не в байтах, а в символах. Соответственно, библиотеки, полагающиеся на стандартное поведение функций, будут работать некорректно. Поэтому func_overload запретили и, если вам нужны мультибайтовые строки, то надо напрямую использовать библиотеку mbstring.
    Ответ написан
    1 комментарий
  • В чем отличие между двумя созданиями объекта?

    ivan_zhuck
    @ivan_zhuck
    В далеком 2010 году перед разработчиками PHP встала задача предоставить поддержку вызова методов и доступа к свойствам созданного объекта одной строкой, поскольку ранее этого делать было нельзя. Также было предложено два варианта синтаксиса new foo->bar() и (new foo())->bar(), из которых был был выбран второй и реализован в 2011 году в PHP 5.4.0. Так что это просто часть синтаксиса языка.

    Подробности: https://wiki.php.net/rfc/instance-method-call
    Ответ написан
    Комментировать
  • Почему strtotime вместо одного дня прибавляет целый месяц?

    usdglander
    @usdglander Куратор тега PHP
    Yipee-ki-yay
    $nextDay = strtotime(date('Y-d-m', strtotime('+1 day', $startTime)));

    Уберите лишние телодвижения.
    $nextDay = strtotime('+1 day', $startTime);
    Внешний strtotime немного не в курсе что вы поменяли местами месяц и день.
    Ответ написан
    Комментировать
  • Что лучше Laravel или Lumen для REST API?

    Wolfnsex
    @Wolfnsex
    Если не хочешь быть первым - не вставай в очередь!
    а значит надо еще и прикручивать blade
    Не значит.

    К тому же кто-то писал, что dingo/api плохая вещь.
    Вас никто не заставляет его использовать, если он плохая вещь.

    но я хочу грамотно и определить для себя хорошую архитектуру.
    Хорошая архитектура начинается с постановки конкретных задач и требований, а в данный момент у Вас нет вообще никаких конкретных требований - можете делать на чём угодно, для данных условий подходит любой вариант.

    аргументированные ответы и ваш опыт.
    Мой опыт подсказывает мне, что Lumen был изначально придуман для максимальной скорости работы, что обычно важно при написании таких сервисов как различные REST/API-серверы, особенно при больших нагрузках на оные.

    а следовательно зря тащиться каждый раз в проекте и мусорить
    Обычно то, что Вы называете "мусором" лежит в тех папках, в которые программисту лазить по определению не положено. Но, если ставить вопрос именно так то "мусор" будет в любом случае, не зависимо от выбора фреймворка.

    P.S. Возвращаясь к вопросу "архитектуры" - сначала пишут задачу, потом требования, а потом под эти требования подбирают решение, которое подходит под эти требования. Если Вы начнёте работать именно по такому принципу - вопросы подобные этому будут отпадать сами собой, раньше чем будут появляться.
    Ответ написан
    4 комментария
  • В чем отличие возвращаемого массива от объектов?

    php666
    @php666
    PHP-макака
    Для чего, в данном случае, возвращать объекты?
    Твой вопрос говорит о том, что ты не понимаешь разницу между объектом и массивом.

    Это не одно и тоже.
    Объект - это не просто хранилище данных, как массив.
    Объект - это описание некой сущности, представление этой сущности в рамках языка программирования. Объект может иметь свойства и методы, оперирующие этими свойствами или методы, делающие еще что-либо, что касается непосредственно этого объекта.

    Прочти хот-бы пол книги "Гради Буч - Объектно-ориентированный анализ и проектирование". И ты перестанешь задавать эти детские вопросы.

    Чем мне это поможет на конкретном примере?
    ОК. Пример. Давай допустим, что твой объект Product не просто содержит свойства, а каждое свойство..... да - тоже является объеком. Итак, перепишем конструктор, добавим несколько свойств новых, для примера:

    public function __construct(int $id, string $name, int $price, $decription, $discount_date){
        $this->id = $id;
        $this->name = new EntityText($name);
        $this->price = new Price($price);
        $this->decription = new EntityText($decription);
        $this->discount_date = new MyDate($discount_date); // MyDate extends \Datetime
      }


    Требование к одной из страниц магазина, показывающего продукт: нужно отображать цену в RUB и в USD. Текст описания не должен быть более 200 символов. Показать дату окончания скидки в человеческом формате.

    <html>
     <div id="product<?=$obj->getId()?>">
      <h1><?=$obj->getName()->getTextValue()?></h1>
      <p>Цена: <?=$obj->getPrice()->getUSD()->asText()?></p> <!-- например, выведет "101 доллар США" (c правильной формой слова "доллар/доллара/долларов") -->
      <p><?=$obj->getDescription()->getTextValue(200)?></p>
      <p>Скидка действут <?=$obj->getDiscountDate()->formatAsHuman()?></p> <!-- выведет "еще 2 дня" -->
     </div>
    </html>


    Теперь вопрос: как это будет выглядеть на массивах? Разницу видишь?

    и начинай читать отсюда- https://dom-knig.com/read_210105-3
    Ответ написан
  • Как найти единомышленников для проекта, или влиться в стартап?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    заимей деньги и единомышленники подтянутся

    ровно на пока будет хватать
    Ответ написан
    Комментировать
  • Где лучше качество кода?

    Immortal_pony
    @Immortal_pony Куратор тега PHP
    $deviceCode = $_SESSION['isMobileOnly'] ? 3 : null;
    $opinionList = $dao->getOpinionList($bar['id'], $deviceCode);
    Ответ написан
    4 комментария
  • Подключение к базе данных MySql, как правильно и современно?

    @NataliaCh
    Лучше всего для новичков про PDO написано здесь: phpfaq.ru/pdo
    Там же прекрасный класс для работы с Mysql, существенно упрщающий работу: phpfaq.ru/pdo/pdo_wrapper
    Ответ написан
    1 комментарий