Ответы пользователя по тегу PHP
  • Как вывести из массива определенные значения?

    @D3lphi
    В вашем примере функция str_getcsv() абсолютно бесполезна. У вас разделителем является точка с запятой, а функция str_getscv() по умолчанию работает с разделителем запятая. Замените
    $csvArray[] = str_getcsv($line);
    на
    $csvArray[] = str_getcsv($line, ';');

    После проделанного действия, элементы будут делится так как нужно, и в итоге, вы сможете получить первый элемент таким образом: $csvArray[0][0] $csvArray[0][1] и тд.
    Ответ написан
    4 комментария
  • Как передать post запрос с параметром в curl?

    @D3lphi
    В $bodyData должна лежать строка с параметрами, а не массив. Преобразовать массив в строку можно следующим образом:
    $bodyData = http_build_query(array (
      'xml_request' => $xml_result
    ));

    Например, из массива ['key1' => 'val1', 'key2' => 'val2'] мы получим строку "key1=val1&key2=val2".
    Ответ написан
  • Как добавить модуль php?

    @D3lphi
    Вы можете устанавливать расширения для php, просто загружая их из репозитория (Официального или нет):
    sudo apt install php-zip

    Далее, нужно перезапустить пакетный менеджер fastcgi:
    sudo service php-fpm restart

    Вместо php у вас может быть php5.6, php7.0, php7.1 и тд. Все зависит от версии.
    Ответ написан
    3 комментария
  • Куда поместить метод загрузки изображения?

    @D3lphi
    Каждый класс должен отвечать только за что-то одно. Об этом говорит буква S в аббревиатуре SOLID (single responsibility, единственная ответственность). Следовательно, ни пользователь, ни класс регистрации не "должен" знать что-то про то как происходит загрузка изображений. Эту функциональность нужно выносить в отдельный класс (сервис).
    Ответ написан
    3 комментария
  • Как убрать точки из scandir()?

    @D3lphi
    Самый короткий вариант:
    unset($dir[0], $dir[1]);
    Ответ написан
    Комментировать
  • Как сделать проверку в PHP при отправке формы?

    @D3lphi
    <?php
    
    $frm_name  = "Youname";
    $recepient = "name@gmail.com";
    $sitename  = "Название Сайта";
    $subject   = "Новая заявка с сайта \"$sitename\"";
    
    $name = trim($_POST["name"]);
    $phone = trim($_POST["phone"]);
    $email = trim($_POST["email"]);
    $radio1 = trim($_POST["radio1"]);
    $radio2 = trim($_POST["radio2"]);
    
    
    $message = "
    Имя: $name <br>
    E-mail: $email <br>
    Выбрана опция1: $radio1 <br>
    Выбрана опция2: $radio2
    ";
    
    if (!empty($phone)) {
        $message .= "Телефон: $phone <br>"
    }
    
    mail($recepient, $subject, $message, "From: $frm_name <$email>" . "\r\n" . "Reply-To: $email" . "\r\n" . "X-Mailer: PHP/" . phpversion() . "\r\n" . "Content-type: text/html; charset=\"utf-8\"");
    Ответ написан
  • Как автоматически подтвердить email при регистрации?

    @D3lphi
    Отличный сервис, который предоставляет удобный API для взаимодействия с ним. Получаем временный email, указываем его при регистрации, получаем письмо при помощи запроса api, выдергиваем оттуда ссылку для подтверждения.
    Ответ написан
    Комментировать
  • Как пересобрать php?

    @D3lphi
    не помогает, апач каждый раз рестартовал.

    Рестартить надо не веб-сервер (apache), а менеджер пакетов fastcgi.
    sudo service php7.0-fpm restart
    Ответ написан
  • В чем проблема добавления в BD?

    @D3lphi
    Уберите условный оператор:
    if(isset($_POST['button-reg'])) // <-- Этот

    Вы не передаете в форму "значение" кнопки. Следовательно, это условие все время ложно. Из параметров у вас передается только mail. Непонятно, зачем вам тут форма нужна, если вы ajax'ом передаете данные, не сериализуя их?

    Вы путаете class и name. Даже, если бы вы использовали форму, то проверять нужно было так:
    if(isset($_POST['add']))
    Потому что, ключами массива являются ИМЕНА инпутов, а не их классы.

    Пожалуйста, хватит использовать mysql_*! Это устаревшее расширение! mysqli_* и pdo существуют.
    Ответ написан
    Комментировать
  • Почему без функции код работает, а с функцией - нет?

    @D3lphi
    Внутри функции переменная $condb не объявлена. Вам нужно передавать ее в качестве аргумента функции:
    function array($condb) {
          $re = mysqli_query($condb, "SELECT * FROM `articles` ORDER BY  `id` DESC");
          while ($in = mysqli_fetch_array($re)) {
            echo   "<h1>".$in['title']."</h1>";
          }
    }
    array($condb);
    Ответ написан
  • Как php функцию записать в переменную?

    @D3lphi
    $abc = function() {
       if(function_exists('wp_ulike')) return wp_ulike('get'); // Понятия не имею, что делает эта функция в вашем wp, но, наверное, стоит возвращать результат, если вы хотите выводить его через echo.
    };
    
    echo $abc();
    Ответ написан
    3 комментария
  • Почему не видим данные из переменной PHP?

    @D3lphi
    Интересно, каким это образом у вас php код выполнится внутри js файла? Если уж вы так делаете, то необходимо в html разметку в тег script вывести эту переменную. Вот единственный возможный вариант:

    <script type="text/javascript">
    var speed = '<?php echo $info; ?>';
    
    setTimeout(function(){
        odometer.innerHTML = speed;
    }, 1000);
    
    alert(speed);
    </script>
    Ответ написан
    Комментировать
  • Стоит ли изучать 1C Битрикс?

    @D3lphi
    Если вы хотите, чтобы разработка приносила хорошие эмоции, то однозначно нет. Выучите лучше какой-нибудь современный фреймворк Laravel, Yii, Symfony. Работу проще всего найти на yii(в странах СНГ). На западе - Laravel. Ну а Symfony самый "правильный". Пользы будет больше.
    Ответ написан
    Комментировать
  • Какой правильный путь рабочего окружения на локальной машине и удаленных серверах?

    @D3lphi

    По локальной разработке: Поднимать 1 вагрант бокс и в нем все сайты? В принципе достаточно удобно либо под каждый сайт свой вагрант бокс? Сайты у меня бывают десятками..... Или их както группами объединить?

    Нет, в идеале, на каждый "сайт" нужно поднимать свою виртуалку. Иначе, какой смысл? Вся суть Vagrant'а - иметь отдельное, независимое от других проектов, окружение.

    Как развернуть (в идеале) такоеже окружение на ВПСи обновлять его также автоматом?

    Посмотрите в сторону Docker'а. Он позволяет создавать "образы" системы и мгновенно разворачивать их где бы то ни было.
    Ответ написан
    4 комментария
  • Из-за чего возникает такая ошибка?

    @D3lphi
    Вы сначала используете mysqli_query(), а потом mysql_fetch_array(), то есть в первом случае юзаете php расширение mysql, а во втором - mysqli. Вы уж определитесь. Чтобы исправить ошибку добавьте букву i, дабы получить mysqli_fetch_array.
    В результате, код примет вид:
    <?php
      $res = mysqli_query($connection, "SELECT videos.* FROM video_category join category ON category.id = video_category.category_id JOIN videos ON videos.id = video_category.video_id");
      $video = array();
      while($row = mysqli_fetch_array($res)){
        $videos[] = $row;
      }
    ?>
    Ответ написан
    Комментировать
  • Как исправить ошибку "Cannot send session cache limiter"?

    @D3lphi
    headers already sent. Что переводится, как "Заголовки уже отправлены". Для запуска сессии, php выставляет куку на клиенте. Cookies устанавливаются с помощью отправки соответствующих заголовков. И, если заголовки были отправлены ранее, то возникает такая ошибка. Для того, чтобы решить эту "проблему", необходимо проверить, есть ли где-то в коде (до этого места) вывод данных. Это может быть echo, или же вообще, пустая строка перед открывающимся тэгом <?php. Если ничего не обнаружили, попробуйте изменить кодировку файла на UTF-8 без BOM.
    Ответ написан
    1 комментарий
  • PHP Голосование для всех. Какая лучше защита от повторного голосования?

    @D3lphi
    Я бы сделал так: поставил каптчу (это самое главное) на голосование. Затем, ставил бы куку, а также писал (например, в БД) ip'шник проголосовавшего. Когда человек делает попытку проголосовать, проверяю, если есть кука или же ip присутствует в базе данных, отказываю в голосе. На 100% защитится от повторного голосования нельзя, но можно добавить несколько препятствий для "недобросовестного" юзера
    Ответ написан
    Комментировать
  • Как преобразовать последний символ каждого слова в строке в верхний регистр?

    @D3lphi
    1 Способ (Посложнее, с циклом и плюшками):
    $str = 'my name is boris';
    
    $arr = explode(' ', $str);    // Разбиваем строку по пробелам в массив
    
    foreach($arr as &$item) {
        $last = strtoupper(substr($item, -1));    // Вытаскиваем последний символ из слова и преобразуем его в верхний регистр. Если в строке есть кириллица,нужно использовать mb_strtoupper() (Далее, тоже, использовать аналоги функций из расширения mb).
        $item[strlen($item) - 1] = $last;   // Заменяем последний символ в строке, символом в верхнем регистре.
    }
    unset($item);
    
    $result = implode(' ', $arr);


    2 Способ (Попроще):
    $str = 'my name is boris';
    
    $reversed = strrev($str);   // Переворачиваем строку задом наперед
    
    $result = strrev(ucwords($reversed));   // Меняем первый символ в перевернутой строке символом в верхнем регистре, переворачиваем строку.
    Ответ написан
  • Вывод элемента массива с условием для другого элемента массива?

    @D3lphi
    Конечно, он не будет работать.
    $services[$i]['id_room'] == 1
    //                       /\ ТУТ ЗНАК сравнения(==), а у вас знак присвоения(=).
    Ответ написан
  • Как организовать хранение БД кучи проектов?

    @D3lphi
    Возможно есть какие-то более элегантные решения?

    - Есть, называется "миграция базы данных". Во многих современных фреймворках этот способ реализован. Суть в том, что вы храните php файл (хотя, формат данных может быть любой), в котором содержится описание таблиц, их структур. Для их развертывания в Laravel, например, достаточно прописать одну консольную команду и всё готово!

    Я та понимаю, этот способ вам не подходит, поэтому, остается только "физическое" хранение структуры базы данных либо на диске (в облаке и тд), либо, в системе контроля версий.
    Ответ написан
    Комментировать