Ответы пользователя по тегу PHP
  • Почему в таблицу mysql не добавляется форма за смайлами (эмодзи)?

    nefone
    @nefone
    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
    PHP-разработчик
    Искать где в коде выполняется проверка пароля и делать всегда true при сравнении пароля.
    Ответ написан
    Комментировать
  • Как генерировать красивый PDF с помощью PHP?

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

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

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

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

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

    nefone
    @nefone
    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
    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
    PHP-разработчик
    Есть что-нибудь в природе для этих нужд?

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

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

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

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

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

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

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

    nefone
    @nefone
    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';
    }
    Ответ написан
    Комментировать
  • Ошибка при обработки регистрации?

    nefone
    @nefone
    PHP-разработчик
    Сделал добавление, поменял mysqli на PDO и md5() на password_hash():
    <?php
    //подключение конфига и функций
    require "../assets/config/config.php/";
    require "../assets/functions.php/";
    
    //получение данных из формы
    $login = $_POST["login"];
    $name = $_POST["name"];
    $password = $_POST["password"];
    $email = $_POST["email"];
     
    //проверки
    if(strlen($login) > 30){
        echo "Логин должен быть не длиннее 30 символов";
        die();
    }if(strlen($login) < 4){
        echo "Логин должен быть не короче 4 символов";
        die();
    }if(strlen($name) < 2){
        echo "Имя должно быть не короче 2 символов";
        die();
    }if(strlen($name) > 15){
        echo "Имя должно быть не длиннее 15 символов";
        die();
    }if(strlen($email) > 200){
        echo "Емаил должен быть не длиннее 200 символов";
        die();
    }if(strlen($email)  < 5){
        echo "Емаил должен быть не короче 5 символов";
        die();
    }if(strlen($password) > 40){
        echo "Пароль должен быть не длиннее 40 символов";
        die();
    }if(strlen($password) < 8){
        echo "Пароль должен быть не короче 8 символов";
        die();
    }
    
    //хешинг
    $password = password_hash($password, PASSWORD_DEFAULT);
    $standart_avatar = "avatar.png";
    
    //дата - в БД это поле должно быть 'VARCHAR'
    $date_int = date("YFjHi");
    
    $likes = '0'; //дефолтное значение 
    $deleted = 'false'; //дефолтное значение
    
    //устанавливаем соедниение с базой данных
    $connect_to_registerdbh = new PDO('mysql:host=localhost;dbname='.$dbs, $account, $pswrd);
    
    $stmt = $connect_to_registerdbh->prepare("INSERT INTO users (user, avatar, likes, pswrd, email, deleted, date_create, dates_int) VALUES (:user, :avatar, :likes, :pswrd, :email, :deleted, NOW(), :dates_int)");
    
    //подготавливаем параметры
    $stmt->bindParam(':user', $login);
    $stmt->bindParam(':avatar', $standart_avatar);
    $stmt->bindParam(':likes', $likes);
    $stmt->bindParam(':pswrd', $password);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':deleted', $deleted);
    $stmt->bindParam(':dates_int', $date_int);
    
    //выполняем запрос на добавление данных в БД
    $stmt->execute();


    Структыра таблицы users в БД должна быть такой:
    609702318edcb175065000.png
    Ответ написан
    2 комментария
  • Почему не работает проверка password_verify?

    nefone
    @nefone
    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
    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
    PHP-разработчик
    Заходим на эту станицу Ads Manager
    Открываем исходный код и делаем по нему поиск на фразу: "access_token:"

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

    nefone
    @nefone
    PHP-разработчик
    Правильный ли формат для json, что я сохраняю?

    Нет, в JSON должна быть одна пара открывающейся "{" и закрывающейся "}" скобки.

    Или мне как то надо переделать?(если переделать, то как)

    Да, набудет переделать, как то так:
    <?php
    $arr = ['name' => $_POST['name'], 'number' => $_POST['number']];
    
    //читаем данные из файла
    $r_json = file_get_contents("data.json");
    $arr_json = json_decode($r_json, true);
    
    //склеить данные из файла и теми что получили из формы
    $result = array_merge($arr_json, $arr);
    
    //сохраняем данные в файл
    $fp = fopen('data.json', 'a');
    fwrite($fp, $json_data);
    fclose($fp);


    И вообще лучше сделать сохранение в базу данных и потом на странице отдавать чисто JSON, с помощью задания HTTP заголовков:
    header("Content-type: application/json; charset=utf-8");
    Ответ написан
    2 комментария
  • Где начинающему разработчику подглядеть примеры неговнокода?

    nefone
    @nefone
    PHP-разработчик
    В общем забудьте о концепции MVC, как классов и почитайте про ADR она больше подходит под реалии веб-приложений.
    А потом рекомендую PSR стандарты полистать особенно на предмет middleware и pipeline
    Ответ написан
    Комментировать