Ответы пользователя по тегу HTML
  • Как сделать разный 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 комментарий
  • Почему неправильно отображается значек navbar toggle в Bootstrap4?

    nefone
    @nefone
    Junior PHP разработчик
    Мне помогло добавить в файл своих стилей код:
    .navbar-toggler-icon {
        background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
    }

    Взят из исходников самого Bootstrap, но по сути, если хочется, то можно написать полностью свои стили для класса .navbar-toggler-icon
    Ответ написан
    Комментировать
  • Белая страница при отправке формы?

    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
    Ответ написан
  • Как сделать красивые preview для сайта?

    nefone
    @nefone
    Junior PHP разработчик
    Требуется добавить в разметку Open Graph
    Вебмастер Яндекс Open Graph
    Ответ написан
    Комментировать
  • Как совместить текст и фон?

    nefone
    @nefone
    Junior PHP разработчик
    сделать картинку фоном div'a и в этот div вставить текст.
    Ответ написан
    Комментировать
  • Неправильно отображается HTML+PHP письмо.?

    nefone
    @nefone
    Junior PHP разработчик
    Переменные в PHP надо вставлять в двойные кавычки, что бы подставлялось их значение.
    Потом следует узнать, как обрабатывают HTML почтовые клиенты и сделать его валидным.
    А тут лежит код отправки письма с сайта, можешь ознакомиться.
    Ответ написан
    1 комментарий
  • Как отправить файлы с формы html+php?

    nefone
    @nefone
    Junior PHP разработчик
    Форма на сайте:
    <form action="send.php" method="post" name="msend">
        <div>
            <label for="name">Введите ваше имя:</label><br>
            <input type="text" id="name" name="name">
        </div>
        <div>
            <label for="email">Введите ваш e-mail:</label><br>
            <input id="email" type="email" name="email">
        </div>
        <div>
            <input type="submit" value="Оправить">
        </div>
    </form>


    Скрипт send.php - который отправляет сообщение:
    <?php
    if (!empty($_POST['name'])) {
        $msg = "<b>Name: </b>".htmlspecialchars(stripcslashes($_POST['name']))."<br>";
    } else {
        exit("Не введено имя!");
    }
    
    if (!empty($_POST['email'])) {
        $maillist = $_POST['email'];
    } else {
        exit("Нет адресов для отправки сообщения!");
    }
    
    //ссылка на файл которую отправляем пользователю
    $msg .= '<a href="file.pdf">ссылка на скачивание файла</a>';
    
    //дополнительные заголовки
    $headers .= "Content-type: text/html; charset=UTF-8\r\n";
    $headers .= "From: noreply@{$_SERVER['SERVER_NAME']}\r\n";
    
    //тема сообщения
    $mail_subject = "Сообщение с сайта";
    
    if (mail($maillist, $mail_subject, $msg, $headers)) {
        echo "Сообщение отправлено!";
    } else {
        echo "Сообщение не было отправлено!";
    }
    Ответ написан
    Комментировать
  • Как сделать так что бы при заходе на страницу проходила проверка зарегистрирован ли пользователь?

    nefone
    @nefone
    Junior PHP разработчик
    При авторизации пользователя создаем переменную сессии "username", а в файлах которые может смотреть только зарегистрированный пользователь делаем такую проверку:
    session_start();
    if(empty($_SESSION['username'])) {
    	header("Location: login.php");
    	exit();
    }
    Ответ написан
    Комментировать