Задать вопрос
  • Перестал работать USB порт, как исправить?

    xez
    @xez Куратор тега Компьютеры
    TL Junior Roo
    в сервис
    Ответ написан
    Комментировать
  • Почему неправильно определяется дата?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Месяц назад от 31 мая какое число было? 30 апреля? Ок. А месяц вперёд от 30 апреля будет 30 мая или 31 мая? А месяц вперёд от 31 мая что будет, 30 июня или 1 июля?
    Если надо просто определить предыдущий месяц, то используйте 'first day of previous month'.
    Ответ написан
    Комментировать
  • Не работает отправка по кнопке. Что делать?

    Spartak-2205
    @Spartak-2205
    Разработка и создание сайтов
    Что делать?

    Заменить
    <button method="POST" name="buttton" class="btn btn-warning" type="submit">Записать в БД</button>

    На
    <input type="submit" name="buttton" class="btn btn-warning" value="Записать в БД">

    Так как у button нет атрибутов method и name, соответственно это условие работать не будет if (isset($_POST['buttton']))

    И включите вывод ошибок php и mysqli на экран
    <?php
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    
    // далее остальной код


    P/S: для безопасной работы с базой данных используйте подготовленные запросы
    Ответ написан
    Комментировать
  • Как работать с таким форматом даты в PHP?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    $dateTime = new DateTime('2021-05-18T15:30:00.000-04:00');
    var_dump($dateTime);
    $dateTime->setTimezone(new DateTimeZone('Europe/Moscow'));
    var_dump($dateTime);
    
    // object(DateTime)#1 (3) {
    //   ["date"] => string(26) "2021-05-18 15:30:00.000000"
    //   ["timezone_type"] => int(1)
    //   ["timezone"] => string(6) "-04:00"
    // }
    //object(DateTime)#1 (3) {
    //  ["date"] => string(26) "2021-05-18 22:30:00.000000"
    //  ["timezone_type"] => int(3)
    //  ["timezone"] => string(13) "Europe/Moscow"
    //}
    
    $timestamp = strtotime('2021-05-18T15:30:00.000-04:00');
    var_dump($timestamp); // int(1621366200)
    date_default_timezone_set('Europe/Moscow');
    $dateTime = date('c', $timestamp);
    var_dump($dateTime); // string(25) "2021-05-18T22:30:00+03:00"
    Ответ написан
    Комментировать
  • Какие проекты можно реализовать начинающему php разработчику?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Абсолютно не важно насколько сложный проект, все можно делать по частям, вопрос только сколько времени вы хотите этому посвятить. Чем сложнее проект, тем больше нюансов и кейсов сможете отработать. Тут только личный подход - "хочу быстро что-то рабочее" или "хочу большое и сложное, время есть, практика рулит".
    Ответ написан
    Комментировать
  • Обрезает фото при выгрузке с бд. Как исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    0) Хранить картинки в бд - надо себя очень не любить...
    1) Все просто дырявое как дуршлаг, инъекции на инъекциях...
    2) Размер поля под картинку наверняка коротковат, и вполне возможно даже не блоб. Отсюда и проблема - картинка тупо не вмещается в поле целиком.
    Ответ написан
    Комментировать
  • Хостинг: арендовать или создать на домашнем пк?

    Lunali
    @Lunali
    скрытна.
    А для чего нужен? Если у вас там всего 100 просмотров в день и для личных нужд можно и домашний....

    что то вроде роуртера с внешним диском.. 60a7ffb6933f3842391214.jpeg

    Купите у провайдера постойный айпи и все.

    А вот если сайт , да если у вас там по 10 000 просмотров в день ....То конечно хостинг ...

    Все верно вам сказали хостинг это не просто сервер и статичный IP , к тому же это даже дешевле домашнего сервера .
    Ответ написан
    Комментировать
  • Хостинг: арендовать или создать на домашнем пк?

    dima9595
    @dima9595
    Junior PHP
    можно, но если только хотите дохрена геморрою, потраченных клеток и херовой безопасности. а, ну да, как же без этого: херовый инет (так как сервер может сжирать бОльшую часть трафика без подобающей настройки), проблемы с провайдером из-за DDOS, проблему с железом (замена, ремонт) ну и конечно же счета за электричество. Да и шум от сервера ни куда не денется. Да и много-много других причин. Так что если вы не готовы поднимать всё оборудование и настраивать "от" и "до", то заплатите каких-то несчастных 100-500 рублей и не будите париться.
    Ответ написан
    Комментировать
  • Зачем нужен PHP Taint (испортить строку)?

    glaphire
    @glaphire Куратор тега PHP
    PHP developer
    Это функция для имитации строки с уязвимостью, чтобы вручную не воспроизводить эту уязвимость в натуральном виде. Мне кажется что эта статья из Psalm хорошо описывает смысл этой уязвимости и способы устранения (а значит и смысл существования функции)
    https://psalm.dev/articles/detect-security-vulnera...
    Ответ написан
    2 комментария
  • Файлы учетной записи?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Ну в общем то нет таких. Создайте табличку пользователи, добавьте логику регистрации, входа и восстановлениЯ. И собственно все. Серверный язык выберите по вкусу
    Ответ написан
    Комментировать
  • Разница 1tb vs 2tb vs 4tb HDD?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    На таких объемах объём наращивают за счёт пластин, так что разница незначительная . Хотя на более старших винтах как правило кэш больше. Но в общем нужно смотреть на сравнения.
    Ответ написан
    5 комментариев
  • Как обновиться с Ubuntu 20.10 до 21.04 без переустановки?

    smorman
    @smorman
    When In Rome do as The Romans do...
    Не самый хороший вариант.
    Лучше на чистую...
    ИМХО
    Ответ написан
    1 комментарий
  • Покритикуйте код! Какие грубые и негрубые ошибки совершил?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну тут скорее ни одной почти строчки нормальной.
    • exit('Ошибка подключения к базе данных!'); дважды глупость. Пользователю сайта не интересно читать, что у тебя сломалось - база данных или деньги на пиво кончились. Как программисту, тебе эта бессмысленная фраза тем более бесполезна, она ничего не говорит о том, ЧТО КОНКРЕТНО сломалось, чтобы ты мог исправить
    • if ($numRows > 0) { бессмысленный кусок кода
    • while ($row = $result->fetch_assoc()) { заменяется на $result->fetch_all(MYSQLI_ASSOC)
    • $this->connect() коннектимся каждый раз, чтобы выполнить запрос, серьёзно?
    • А когда будет еще один класс, для другой таблицы, снова будешь писать код подключения к БД? И так в каждом?
    • Почему класс для работы с "позициями" называется DBh?
    • По сути это не класс, а набор функций. Если ты уберешь красивые слова class и this, то НИЧЕГО не изменится
    • SQL инъекции кругом
    • class Handler extends Dbh ВООБЩЕ непонятно зачем



    В общем, как-то так
    dbh.php
    class Dbh
    {
        public $conn;
    
        public function __construct($config)
        {
            mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
            $this->conn = new mysqli(...$config);
            $this->conn->set_charset('utf8mb4');
        }
    
        public function preparedQuery($sql, $params, $types = '')
        {
            $types = $types ?: str_repeat('s', count($params));
            $stmt = $this->conn->prepare($sql);
            $stmt->bind_param($types, ...$params);
            $stmt->execute();
            return $stmt;
        }
    
        public function selectResult($sql, $params, $types = '')
        {
            if (!$params) {
                return $this->conn->query($sql);
            }
            return $this->preparedQuery($sql, $params, $types)->get_result();
        }
        public function selectAll($sql, $params = [], $types = '')
        {
            return $this->selectResult($sql, $params, $types)->fetch_all(MYSQLI_ASSOC);
        }
        public function selectAssoc($sql, $params = [], $types = '')
        {
            return $this->selectResult($sql, $params, $types)->fetch_assoc();
        }
        public function selectRow($sql, $params = [], $types = '')
        {
            return $this->selectResult($sql, $params, $types)->fetch_row();
        }
        public function selectCell($sql, $params = [], $types = '')
        {
            $row = $this->selectRow($sql, $params, $types);
            return $row ? $row[0] : false;
        }
    }

    position.php
    class Position
    {
        protected $dbh;
    
        public function __construct(Dbh $dbh)
        {
            $this->dbh = $dbh;
        }
        // Получаем все позциии из БД и возвращаем их в массиве $output если записей больше нуля
        public function getAllPositions()
        {
            return $this->dbh->selectAll('SELECT * FROM positions');
        }
        protected function addPosition($content)
        {
            $count = $this->dbh->selectCell('SELECT count(*) FROM positions');
            if ($count < 10) {
                $this->dbh->preparedQuery("INSERT INTO positions (content) VALUES (?)", [$content]);
            }
        }
        protected function deletePosition($id)
        {
            $this->dbh->preparedQuery("DELETE FROM positions WHERE id = ?", [$id]);
        }
        //Поиск позиций в БД по столбцу content
        protected function searchPosition($content)
        {
            $content = "%$content%";
            return $this->dbh->selectAll('SELECT * FROM positions WHERE content LIKE ?',[$content]);
        }
    }

    config.php
    return [
          'db' => [
              'host' => '127.0.0.1',
              'username' => '',
              'password' => '',
              'dbname' => '',
              'port' => 3306,
          ],
      ];


    handler.php

    $config = require 'config.php';
    $dbh = new Dbh($config['db']);
    $position = new Position($dbh);
    
    switch ($_GET['action']) {
        case 'getpositions':
            $output = $position->getAllPositions();
            echo json_encode($output);
            break;
        case 'addposition':
            $content = $_GET['content'];
            $position->addPosition($content);
            break;
        case 'getsearchpositions':
            $content = $_GET['content'];
            $output = $position->searchPosition($content);
            echo json_encode($output);
            break;
        case 'deleteposition':
            $id = $_GET['id'];
            $position->deletePosition($id);
            break;
        default:
            header("HTTP/1.0 400 Bad Request");
    }
    Ответ написан
    2 комментария
  • Как исправить ошибка при импорте Бд в phpmyadmin?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вам же русским по розовому пишет - база данных не выбрана.
    Выберите нужную базу данных.
    Ответ написан
    Комментировать
  • Как сгенерировать изображение 3D кубиков (игральных костей) на стороне сервера?

    @Dmtm
    Android
    заранее наделать пару тысяч статических картинок не дешевле получится?
    Ответ написан
    6 комментариев
  • Действительно ли имеются вирусы на арче?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    "Вот она, вот она, вот она пришла весна
    Как паранойя! " (С) Николай Носков

    Ну и у меня /bin/egrep, /bin/fgrep, /usr/bin/ldd (остальное проверять не стал) - это скрипты, причем egrep и fgrep - скрипты простенькие, чтобы убедиться в том, что это не вирусы - достаточно их глянуть, йопт
    #!/bin/sh
    exec /bin/grep -F "$@"

    Озвездительный вирус :)

    Чтобы за минуту что-то сделать - нужно быть не просто подготовленным. Нужно точно и четко представлять что и как делать и нехило тренироваться для этого
    Ответ написан
    4 комментария
  • Действительно ли имеются вирусы на арче?

    nazares
    @nazares
    Software Engineer
    паранойю лечить надо а то так не долго и до психушки
    Ответ написан
    Комментировать
  • Что убивает SSD?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    • Износ ячеек памяти при записи. Соответственно, смотрите на её объём.
    • Использование SSD с небольшим объёмом свободного пространства на нём, что вызывает бОльшую нагрузку на небольшое кол-во ячеек. Держите хотя бы 25% незанятыми, также можете изменить ёмкость диска, если фирменная утилита это поддерживает. В маркетинговых материалах любят писать про "внутреннее перемешивание" данных, выполняемое в фоне, но я бы либо не полагался на него вообще, либо, как минимум, в моделях потребительского уровня.
    • Температура ССД. Кто-то считает, что она влияет даже сильнее износа при записи. Вообще держите её чем ниже, тем лучше. Либо, если заметите, что температура уходит выше 60 градусов, то наверняка стоит озаботиться этим вопросом.

    P.S.
    Говоря о вашем конкретном Кингстон, можно добавить, что в традиционном понимании эта модель совсем не серверная. Вашу нагрузку оценить не возьмусь, но при реально серверном использовании он бы протянул недолго.
    Ответ написан
    Комментировать