Профиль пользователя заблокирован сроком с 10 апреля 2022 г. и навсегда по причине: систематические нарушения правил сервиса
Ответы пользователя по тегу PHP
  • Можно ли текстовую переменную хранить в таблице Mysql?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Забавно, что месяц назад ему уже отвечали на этот вопрос
    Но видимо у детей, воспитанных ютубой, память настолько короткая, что даже такие простые вещи не держатся
    Ответ написан
  • PHP как привязать код к странице?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    сделать надо сначала хоть как-то, а потом уже искать "более элегантное" решение, если первоначальное не устроит.
    заодно можно будет задать осмысленный практический вопрос, а не транслировать невнятные фантазии.
    Ответ написан
    Комментировать
  • Как вывести текст на страницу PHP не привязывая PHP скрипт к странице?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Налицо классическая проблема ХУ
    задавая очевидно дурацкий вопрос, надо всегда подробно описывать ситуацию, в которой он возник.
    если причины осмысленные, то решение всегда найдется
    если же нет, то тогда вам помогут переформулировать проблему

    если же пытаться настаивать на своей формулировке без объяснений, то может сучиться конфуз.
    Ответ написан
    Комментировать
  • Как получить фрагмент ссылки текущей страницы на php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    никак. на сервере его нет
    Ответ написан
    2 комментария
  • Выборочный вывод данных из массива foreach?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Для начала надо открыть для себя то, как работает РНР.
    И в частности, что во момент клика никакого массива уже давно нет.
    Потому что клик делается в браузере, а РНР работает на сервере.

    После этого надо решить для себя, либо мы заранее все подробности заполняем для попапа, и тогда это вопрос чисто про HTML
    либо подтягиваем динамически, но тогда это вопрос не про "массивы", а про аякс и отдельный запрос к серверу.
    Ответ написан
    Комментировать
  • Как добавить в начало массива сумму элементов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    1. посчитать сумму. в цикле, как обычно.
    2. погуглить, как добавить строку в начало массива
    3. добавить строку в начало массива
    Ответ написан
  • Как обойти два массива с условием?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    перед началом цикла сбрасывать флаг
    если совпадение найдено, то взводить флаг
    по окончании цикла проверять флаг

    но вообще это все делается не так.
    при создании массивов они индексируются не цЫферками по порядку, а по id
    и тогда цтився проверка сводится к
    if (isset($admins[$user->id]) {
    } else {
    }

    }
    Ответ написан
    Комментировать
  • Как убрать экранирование из JSON?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    к json_encode эта проблема никакого отношения не имеет.
    где-то добавляется дополнительное экранирование.
    надо найти тот говнокод, который его добавляет, и убрать

    и заодно научиться проверять свой код перед тем как писать вопрос на тостер
    Ответ написан
  • Как отправить с помощью mailer письмо, с нужной мне почты?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну, если сам никак не можешь догадаться, то я подскажу: прописать в настройках пароль от этой почты.
    Можешь не благодарить
    Ответ написан
    Комментировать
  • Как провести соответствие между строкой и классом с точки зрения SOLID?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Это всё очень плохо.
    В первом варианте человек должен знать, как мяукают кошки, а в последнем "правильном" варианте человек трогает не кошку, а кошачий голос(?!).
    В "идеальном" варианте опять же выбирается не животное, которое надо погладить, а его голос.

    Чтобы следовать принципам солид, надо понять в первую очередь ЗАЧЕМ это всё делается.
    А делается это для того чтобы уменьшить связность. Чтобы класс, использующий какой-либо функционал, не знал деталей его реализации. И, соответственно, мы могли бы менять реализацию без опасения поломать что-то в классе-пользователе.

    При этом extends, кроме как от абстрактного класса, эту связность всегда увеличивает.
    И его надо избегать. А использовать принцип Composition over inheritance. То есть нужный функционал получать не наследованием, а передачей независимых функциональных модулей в виде параметров.

    Соответственно, нам надо сделать иерархию: голос - животное - потрогать.
    И вот теперь у нас хоть голос, хоть животное, будут открыты для каких угодно изменений, до тех пор пока они поддерживают публичный контракт.
    / ******* голоса *******/
    abstract class VoiceEngine {
    	public function getVoice() {}
    }
    class CatVoiceEngine extends VoiceEngine {
    	public function getVoice() {
    		return "Meow!";
    	}
    }
    class DogVoiceEngine extends VoiceEngine {
    	public function getVoice() {
    		return "Bark!";
    	}
    }
    class HumanVoiceEngine extends VoiceEngine {
    	public function getVoice() {
    		return "Да пошёл ты!";
    	}
    }
    / ******* животные *******/
    abstract class Animal {
    	public function __construct(public VoiceEngine $voiceEngine) {}
    	public function say() {
    		echo $this->voiceEngine->getVoice();
    	}
    }
    class Cat extends Animal{}
    class Dog extends Animal{}
    class Human extends Animal{
    	public function touchAnimal(Animal $animal) {
    		$animal->say();
    	}
    }
    / ******* исполнение *******/
    $cat = new Cat(new CatVoiceEngine());
    $dog = new Dog(new DogVoiceEngine());
    $human = new Human(new HumanVoiceEngine());
    $human->touchAnimal($cat);
    $human->touchAnimal($dog);
    $human->touchAnimal($human);


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

    class AnimalFactory {
        public static function create($type) {
            return match($type) {
                'cat' => new Cat(new CatVoiceEngine()),
                'dog' => new Dog(new DogVoiceEngine()),
                'human' => new Human(new HumanVoiceEngine()),
            };
        }
    }
    $human = new Human(new HumanVoiceEngine());
    $human->touchAnimal(AnimalFactory::create('cat'));

    В итоге мы вернулись к тому же кейсу (match - это улучшенный case), но при этом у нас всё разделено, и каждый класс занимается строго своим делом.
    Ответ написан
  • Как исправить ошибку PHP Notice: Undefined variable?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Undefined variable в переводе с английского означает, что такой переменной нет.
    Это значит что ошибка в логике, попытка вывести переменную, которой не было присвоено никакое значение.
    Соответственно, эту логическую ошибку надо исправить - либо присвоить какое-то значение, либо не выводить.
    Ответ написан
    Комментировать
  • Можно ли взять разметку из .txt и разместить её с помощью php?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну что ж вы все никогда не читаете вопрос до конца?
    Видно же, что у нашего укуренного горемыки проблема не в том, чтобы прочитать файл, а в том что HTML не рендерится. То есть он его выводит не в браузер, ну или как-то ещё наступил себе на причинное место, и сойти не может.
    Я думаю, он утром проспится, и решит эту ужасно загадочную проблему.
    Ответ написан
  • Как обрезать изображение перед его загрузкой на сервер?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Здесь столько мусора в голове, что не знаешь даже за что вперёд хвататься
    То ли рассказывать про такую штуку, как интернет, и о том что в нем полно готовых ответов на вопросы
    То ли намекнуть про то, что РНР исполняется на сервере, то есть использовать РНР "перед тем как картинка загрузится" на сервер несколько проблематично.
    То ли совсем расстроить человека, открыв ему страшную тайну: у реального сайта бывает много пользователей, и каждый сидит за своим компьютером. А не все вместе на одном стуле перед компиком нашего горе-программиста. И им вряд ли нужен скриншот экрана сервера. У которого и экрана-то обычно и вовсе нет
    Ответ написан
    2 комментария
  • Как сгенерировать UUID из e-mail?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Какая забавная коллекция заблуждений.

    • Композер - это программа на РНР. Если можно использовать РНР, то можно использовать и композер.
    • Библиотека ramsey/uuid - это набор РНР файлов. Которые, хотя и правильнее устанавливать и обновлять через композер, можно, тем не менее, скопировать на сервер точно так же, как копируются все другие файлы.
    • Необходимости делать UUID на основе емейла нет практически никакой. Обычный v4 прекрасно подойдет
    Ответ написан
    7 комментариев
  • Как оценить выражение?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну слава богу что есть хотя бы понимание опасности прямого исполнения кода.
    Потому что у большинства местных хомячков - что попрошаек, что помогаек - это понимание начисто отсутствует.

    Для корректного решения придется немного потрудиться.
    Установить https://symfony.com/doc/current/components/express...
    и научиться с ним работать
    Ответ написан
    2 комментария
  • Почему первый цикл влияет на второй?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Циклы в РНР никак не связаны. Как и в любом другом языке.
    И второй всегда начинается без свякой связи с первым.
    Если же речь идет о переменных, которые участвуют в цикле, то программист должен позаботиться САМ, о том чтобы перед началом любого цикла они имели нужные значения.
    Ответ написан
    Комментировать
  • Можно ли подменить IP посетителю сайта?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    реально конечно
    надо только каждому сказать, чтобы он поменял ip своего компьютера, чтобы иметь возможность снова смотреть рекламу.

    через прокси тоже можно. тогда гуголь заблокирует учетную запись целиком, и проблема отключения рекламы станет неактуальной.
    Ответ написан
    Комментировать
  • Выборка из laravel не преобразуется в массив?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Либо перестаньте мучать Ларавель и пишите по-старинке $result = mysql_query("SELECT * FROM comments where name='$name'"); либо учитесь уже пользоваться инструментом не как обезьяна микроскопом.
    Eloquent - это ORM. Object-Relational Mapper. Транслятор из РСУБД в объекты.
    $comment и должен быть объектом, и нет ни одной причины превращать его "полностью в массив"
    Ответ написан
    4 комментария
  • Насколько безопасна реализация запоминания пользователя?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Требуемый параметр называется "криптографической стойкостью".
    Большая часть самопальных решений "из букв и цифр" такой стойкостью не обладает.
    Как не обладает ей и uuid v4.

    На данный момент рекомендуемым решением является использование функции random_bytes()
    $token = bin2hex(random_bytes(24));
    Далее токен пишется в БД и в куки пользователю.
    Ответ написан
    Комментировать