Ответы пользователя по тегу PHP
  • Что указывать в переменной $accountId php-sdk moneta.ru?

    nefone
    @nefone
    Junior PHP разработчик
    Должно быть примерно так:
    $monetaSDK = new Moneta\MonetaSdk(); 
    $accountId = $monetaSDK->getRequestedValue('moneta_sdk_account');
    $result = $monetaSDK->showAccountBalance($accountId); 
    echo $result->render;
    Ответ написан
    Комментировать
  • Как сделать разный title если header везде одинаковый?

    nefone
    @nefone
    Junior PHP разработчик
    PHP позволяет решить эту задачу множеством способов, использовать готовый шаблонизатор, например Twig.

    Или реализовать свой с использованием функций ob_start() и ob-get-clean(): создаете файлы index.php и functions.php, каталог templates в котором будут храниться все файлы шаблонов. В каталоге templates создаете файлы: layout.php, header.php, footer.php, content.php.

    Файл functions.php:
    /**
     * Функция загрузки шаблона
     * 
     * @param string $template Путь до файлов шаблона
     * @param mixed[] $data Данные для подстановки в шаблон
     * @return string Возвращает готовый код шаблона
     */
     function render_template($template, $data = []) {
         ob_start();
         if (file_exists($template)) {
             extract($data);
             require($template);
         } else {
             print('Нет файла шаблона: '.$template);
         }
         $html = ob_get_clean();
         return $html;
     }

    Файл index.php:
    require_once __DIR__ .  '/functions.php';
    
    $header = render_template('templates/header.php', ['title' => 'Главная страница']);
    $footer= render_template('templates/footer.php');
    $content = render_template('templates/content.php');
    $page_layout = render_template('templates/layout.php',  
                                   ['header' => $header, 'footer' => $footer,  'content' => $content]);
    print($page_layout);

    Файл templates/header.php:
    <head>
    <title><?=$title?></title>
    </head>

    Файл templates/layout.php (в котором вместо <?=$header?> будет выводиться содержимое из файла templates/header.php и т.д.):
    <!DOCTYPE html>
    <html lang="ru">
    <?=$header?>
    <body>
    <?=$content?>
    <?=$footer?>
    </body>
    </html>
    Ответ написан
    1 комментарий
  • Не работает setcookie, что делать?

    nefone
    @nefone
    Junior PHP разработчик
    Варианта может быть два, или у вас ошибка при подключение к базе данных, надо проверять, что соединение установлено и проверять на успешное выполнение запроса:
    $login = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING);
    $password = filter_var(trim($_POST['password']), FILTER_SANITIZE_STRING);
    
    $mysql = new mysqli('localhost', 'root', 'root', 'reg-bd');
    if ($mysql->connect_errno) {
        exit('Ошибка при соединении с базой данных:  ' . $mysql->connect_error);
    }
    
    $result = $mysql->query("SELECT * FROM `users` WHERE `login` = '$login' AND `password` = '$password'");
    if (!$result)
    {
      exit('Ошибка при выполнении запроса: ', $mysql->error);
    }
    $user = $result->fetch_assoc();
    
    setcookie('user', $user['name'], time() + 3600, "/");
    
    //что бы проверить, что в переменно что то есть, можно вывести ее через: var_dump($user)
    Ответ написан
    Комментировать
  • Почему в таблицу mysql не добавляется форма за смайлами (эмодзи)?

    nefone
    @nefone
    Junior PHP разработчик
    Нужно посмотреть ошибку, которая у вас возникает при выполнения запроса к базе данных.

    Для этого изменить ваш код на этот:
    <?php
    require_once 'connect.php';
    
    $h = $_POST['smail'];
    var_dump($_POST['smail']);
    
    if (!mysqli_query($connect, "INSERT INTO `soobchenie` (`id`, `otpravit`, `nku`, `avu`, `nkchata`, `forma`, `time`, `prosmotr`) VALUES (NULL, '$h', 'g', 'l', 'l', 'l', 'l', 'l')") {
        printf("Ошибка при добавлении в базу данных: %s\n", mysqli_error($connect));
    }
    ?>

    Также следует убедиться, что в файле "connect.php" у вас действительно создается подключение к базе данных.
    Ответ написан
    Комментировать
  • Как сбросить пароль админа Moto 3 CMS?

    nefone
    @nefone
    Junior PHP разработчик
    Искать где в коде выполняется проверка пароля и делать всегда true при сравнении пароля.
    Ответ написан
    Комментировать
  • Как генерировать красивый PDF с помощью PHP?

    nefone
    @nefone
    Junior PHP разработчик
    Использовать библиотеки заточенные под работу с PDF из PHP:
    FPDF
    Ответ написан
    Комментировать
  • Как сделать независимый скрипт php и взаимодействовать с ним?

    nefone
    @nefone
    Junior PHP разработчик
    Как мне это сделать?

    Если Вам очень хочется, то:
    index.php
    <?php
    require_once 'MyString.php';
    $mystr = new MyString();
    echo $mystr->getString();
    $mystr->setString('stop');
    echo $mystr->getString();


    MyString.php
    <?php
    
    class MyString
    {
        private $string;
    
        public function __construct(string $str = ' start ')
        {
            session_start();
            if (empty($_SESSION['string'])) {
                $this->string = $str;
            }
        }
    
        public function setString(string $str) 
        {
            $this->string = $str;
            $_SESSION['string'] = $this->string;
        }
    
        public function getString()
        {
            return $_SESSION['string'] ?? $this->string;
        }
    }


    всё заработает и выведет "start stop", но если обновить страницу то будет тоже самое, а мне хотелось бы чтобы теперь выводило "stop stop"

    Данное решение при первом открытии выведет "start stop", а если обновить страницу, то "stop stop".
    Ответ написан
    Комментировать
  • Какие еще проекты сделать junior на php помимо дефолтных?

    nefone
    @nefone
    Junior PHP разработчик
    Junior разработчиком после выполнения пары проектов в отвратительном качестве не стать.

    в моей голове junior - это тот, кто пишет круды и что-то там допиливает в проектах

    Этот тот которому дают простое задание и говорят, как делать и он делает, так как ему сказали.


    Я могу сделать какой-нибудь обычный crud с sql, но, видимо этого не достаточно.

    У Вас не обычный CRUD, а тот который никогда делать не надо. Следует узнать о шаблозаторах Twig и Smarty. Попробовать сделать свою простую шаблонизацию на PHP, что бы отделять верстку о логики.

    Также у меня есть пару книг популярных по этому языку и там тоже нечего взять полезного.

    Я думаю, если бы Вы прочитали PHP 7 Котерова, может быть не задавали бы такого вопроса. Можете начать с PHP 7, и обязательно выполнять задания, которые там даны в конце каждой главы. Если хочется быстрее понять PHP можете пройти интенсив. (бонус, что будет опытный наставник и работа с системой контроля версий).

    После того, как будет понимание о языке PHP и его возможностях, следует посмотреть на работу с SQL, создать несколько баз данных руками, попробовать JOIN из нескольких таблиц, написать простой CRUD каталог по архитектуре MVС, что бы понять, как реализуется роутинг.

    Поиграться с каким нибудь API, делать получение и отправку запросов.

    Изучать тему Linux и как работать в консоли, настройка LAMP и LEMP окружения.

    Желательно посмотреть на Docker и Vagrant, запустить их у себя на машине и установить внутри какой нибудь обычный WordPress.

    Попробовать работу с PHP фреймворками, сделать несколько простых проектов.

    Изучать лучшие практики работы PHP правильный путь

    P.S. и постоянно учиться чему то новому...
    Ответ написан
  • Как настроить права доступа?

    nefone
    @nefone
    Junior PHP разработчик
    Проверять на странице guest, что есть сессия и делать переадресацию :
    if (isset($_SESSION['authorize']['id']) {
       header('location: ...'); // вместо ... указать любую страницу, например authorize
       exit();
    }
    Ответ написан
    Комментировать
  • Белая страница при отправке формы?

    nefone
    @nefone
    Junior PHP разработчик
    Попробуйте:
    <?php
    error_reporting(E_ALL);
    
    if (mail("mymail@gmail.com", "New User", " Name: ".$_POST['name']. "\n" . " Email: ".$_POST['email']. "\n" .  "\r\n") {
       header('Location: https://example.com/thanks/index.html');
       exit();
    } else {
       die('Ошибка при отправке письма!');
    }

    Возможно, до переадресации с помощью header() у Вас заголовки HTTP уже отправлены.

    Также, стоит правильно получать переменные и массива $_POST
    Ответ написан
  • Какое окружение вы используете для разработки php?

    nefone
    @nefone
    Junior PHP разработчик
    Среди IDE сейчас что то лучше PHPStrom сложно найти.
    Окружение на свой вкус лучше собирать с помощью Docker - первое время будет сложно, но потом поймаете кайф.
    Если с базами данных пока сложно работать через консоль, можно использовать DBeaver
    И желательно работать c git, так же если нужен графический интерфейс Git Kraken

    мол xampp использовать для нормальной разработки себе дороже

    Совершенно верно, ибо сложно будет тестировать как будет вести себя код на рабочем сервере. Может быть несовместимость операционных систем на сервере и локальных, а так же версий PHP и ипользуемых баз данных.
    Ответ написан
    5 комментариев
  • Sitemap.php автогенератор делает дублирующую главную страницу, как убрать?

    nefone
    @nefone
    Junior PHP разработчик
    Сделать значение в массиве $array_pages уникальными, с помощью функции array_unique

    //Создаём XML документ: начало
    $date = date("d/M/y H:m:s");
    $xml_content = '';
    $site_url = 'https://'.$_SERVER['HTTP_HOST'];
    $quantity_elements = 0;
    $array_pages_uniq = array_unique($array_pages);
    foreach($array_pages_uniq as $v)
    {
      $quantity_elements++;
      $xml_content.='
       	<url>
        <loc>'.$site_url.$v['URL'].'</loc>
      </url>';
    }
    //Создаём XML документ: конец
    Ответ написан
    Комментировать
  • Как сделать шаблоны в php?

    nefone
    @nefone
    Junior PHP разработчик
    Если не подходят что то из готовых шаблонизаторов типа Smarty
    Можете сделать свой на основе PHP функций работы с буфером вывода:
    ob_start
    ob_get_clean
    /**
     * Функция загрузки шаблона
     * 
     * @param string $template Путь до файлов шаблона
     * @param mixed[] $data Данные для подстановки в шаблон
     * @return string Возвращает готовый код шаблона
     */
     function render_template($template, $data) {
         ob_start();
         if (file_exists($template)) {
             extract($data);
             require($template);
         } else {
             print('Нет файла шаблона: '.$template);
         }
         $html = ob_get_clean();
         return $html;
     }


    Пример использования:
    $content = render_template('templates/main.php', ['title' => 'Главная страница');
    
    echo $content;


    Код main.php
    <html>
     <head>
        <title><?=$title?></title>
     </head>
    </html>
    Ответ написан
    6 комментариев
  • Где взять легковесную ORM для небольшого проекта на PHP?

    nefone
    @nefone
    Junior PHP разработчик
    Есть что-нибудь в природе для этих нужд?

    Посмотреть на Packagist и выбрать, что Вам понравится.
    Ответ написан
    Комментировать
  • Как проверить объект на NULL?

    nefone
    @nefone
    Junior PHP разработчик
    Подскажите как правильно это сделать?

    Ознакомиться с документацией: whereNotNul()
    Ответ написан
    3 комментария
  • Почему возникает ошибка Невозможно создать класс "PHPExel_Writer_Excel2016"?

    nefone
    @nefone
    Junior PHP разработчик
    что не так?

    Невозможно создать класс "PHPExel_Writer_Excel2016".

    Попробуйте строку:
    //Сохраняем файл с помощью PHPExcel_IOFactory и указываем тип Excel
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2016');

    Заменить на:
    $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    Ответ написан
  • Как выполнить PHP скрипт через ajax?

    nefone
    @nefone
    Junior PHP разработчик
    Отправку POST запроса с помощью AJAX легко сделать через jQuery
    <!DOCTYPE html>
    <html lang="ru">
    <head>
        <meta charset="UTF-8">
        <title>AJAX Send</title>
    </head>
    <body>
        <button id="btn_yes">Btn_yes</button>
        <button id="btn_no">Btn_no</button>
    
        <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
        <script src="main.js"></script>
    </body>
    </html>

    Файл main.js:
    //"file.php" - Это тот файл на который будем отправлять AJAX запрос
    $("#btn_yes").on('click', function() {
        $.post("file.php", { btn_yes: "btn_yes"})   
            .done(function( data ) {
                alert( "Сообщение: " + data );
        });
    });
    
    $("#btn_no").on('click', function() {
        $.post("file.php", { btn_no: "btn_no"})   
            .done(function( data ) {
                alert( "Сообщение: " + data );
        });
    });


    Код файла "file.php" (можете заменить на свой):
    if( isset( $_POST['btn_yes'] )) {
        echo 'Отправлена кнопка btn_yes';
    }
    
    if( isset( $_POST['btn_no'] )) {
        echo 'Отправлена кнопка btn_no';
    }
    Ответ написан
    Комментировать
  • Почему не работает проверка password_verify?

    nefone
    @nefone
    Junior PHP разработчик
    Для создания хэша пароля используем функцию password_hash
    //хеш пароля '1234'
    $hash = '$2y$10$JwKVTFX73osL3hu7zeGjO.yvHFAsCcSCWzhVFN//.0mAkfGo.9f1y';
    
    if (password_verify('1234', $hash)) {
        $_SESSION['username'] = $username;
        $fmsg = 'Вы вошли под пользователем';
        header('Location: index.html');
    } else {
        echo 'Пароль не верный!';
    }
    Ответ написан
    Комментировать
  • Как добавить пробелы в PHP-файле, которые будут отображаться в редакторе?

    nefone
    @nefone
    Junior PHP разработчик
    Использовать функцию str_pad()
    Сделал обертку над ней:
    //функция добавления любого кол-ва произвольных символов к строке
    function addSlash($str, $symbol = ' ', $slashes = 4) {
        $str .= PHP_EOL;
        $lenght = (int) strlen($str) + $slashes;
        return str_pad($str, $lenght, $symbol, STR_PAD_LEFT);
    }
    
    //добавляем четыре пробела слева к строке 
    $flow = addSlash('<div class="Wuanuee"><p>Доставка КПП по России</p></div>');
    $flow .= addSlash('<div class="Wuanuee"><p>Mercedes-Benz Special Trucks</p></div>');
    $flow .= addSlash('<div class="Wuanuee"><p>Роботизированная КПП</p></div>');
    
    file_put_contents('file.php', $flow);
    
    //добавляем два знака + слева к строке
    $flow = addSlash('<div class="Wuanuee"><p>Доставка КПП по России</p></div>', '+', 2);
    $flow .= addSlash('<div class="Wuanuee"><p>Mercedes-Benz Special Trucks</p></div>', '+', 2);
    $flow .= addSlash('<div class="Wuanuee"><p>Роботизированная КПП</p></div>', '+', 4); //тут добавим 4 плюса
    
    file_put_contents('file2.php', $flow);
    Ответ написан
    23 комментария
  • Как получить ACCESS TOKEN для обращений к Facebook API?

    nefone
    @nefone
    Junior PHP разработчик
    Заходим на эту станицу Ads Manager
    Открываем исходный код и делаем по нему поиск на фразу: "access_token:"

    ACCESS TOKEN быть в коде
    6095936c5b6ad339939424.png
    Ответ написан
    3 комментария