Задать вопрос
  • Как лучше добавить на сайт текстовый логотип, как SVG изображение или ЗАГОЛОВОК?

    @archelon
    tldr: подключайте svg и не мучайтесь.

    а) Трудозатраты
    Подключить картинку быстрее и проще.
    б) Надежность
    Изображение будет гарантированно отображаться как надо на всех устройствах. Если где-то вдруг не загрузится шрифт, или не успеют прогрузиться стили, вы потеряете оформление.
    в) Индексация
    Теоретически может оказаться полезным то, что текст будет прочитан и учтен поисковиками, хотя обычно это не дает каких-то преимуществ.
    г) Оптимизация
    В разных случаях меньше будет весить картинка или оформленный текст.
    Если для текстового логотипа надо прилинковать пару нестандартных шрифтов, это значительно увеличит количество кБайтов. Если нет, текст будет немного меньше весить, но выигрыш будет несущественным.
    д) Особенности дизайна
    В некоторых случаях может быть нестандартный дизайн, где текстовый логотип — необходимость.
    е) Действительно простой логотип
    Ну и конечно, если логотип — это банально название компании / марки, набранное уже подключенным шрифтом, и никаких дополнительных итераций (интерлиньяж, трекинг и т.п.) не требуется, тогда, действительно, проще набрать текстом.
    Ответ написан
    Комментировать
  • Почему данные пользователя не добавляются в базу данных?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Так вставлять данные в БД нельзя. Нежелательно даже на локальном сервере в учебных целях. Это открытая дверь для SQL-инъекций. Лучше привязывать параметры, например так:
    $mysql = new mysqli("localhost", "root", "root", "medixer");
    $mysql->set_charset("utf8");
    
    $stmt = $conn->prepare("INSERT INTO `users` (`login_user`, `name`, `password`, `dob`, `region`, `telephone`, `email`) VALUES (?, ?, ?, ?, ?, ?, ?)");
    $stmt->bind_param("sssssss", $login, $name, $password, $dob, $region, $telephone, $email);
    $stmt->execute();
    
    $mysql->close();
    Ответ написан
    Комментировать
  • Почему данные пользователя не добавляются в базу данных?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Как нужно действовать (в принципе всегда):
    1) Проверить что форма срабатывает и делает запрос: открываем консоль разработчика в браузере - нетворк, субмитим форму - смотрим что форма сделала запрос к серверу. Если не сделала - разбираемся в консоли какие ошибки со скриптами и все чиним.
    2) В отсылаемом запросе смотрим данные, которые отправляет скрипт, а так же ответ сервера, на предмет ошибок. Если есть ошибки - исправляем.
    3) Проверяем данные которые пришли на сервер, делаем var_dump($_POST), смотрим - то ли пришло на сервер. Если что-то не пришло - возвращаемся на фронт и ищем ошибку в хтмл разметке и форме.
    4) Правильные данные сначала вставляем в отдельную переменную как строку запроса, а потом передаем ее на выполнение в $mysql->query(). Таким образом перед выполнением запроса можно тем же var_dump() вывести запрос и проверить его визуально на правильность, ну или вставить руками в бд через phpmyadmin или другой инструмент работы с бд. Посмотреть ошибки - исправить.
    5) Во всех случаях нужно использовать подготовленные выражения. Код станет на 3 строчки длиннее, но на 90% качественнее.
    Профит.
    Ответ написан
    Комментировать
  • При регистрации юзера его имя на русском передаётся в базу данных в неправильной кодировке. Что делать?

    rozhnev
    @rozhnev Куратор тега PHP
    Fullstack programmer, DBA, медленно, дорого
    Для телефона следует использовать varchar вместо integer.
    и почтайте что-нибудь про SQL-injection и prepared statement
    Ответ написан
  • При регистрации юзера его имя на русском передаётся в базу данных в неправильной кодировке. Что делать?

    @none7
    Сперва выполните в phpMyAdmin запрос
    UPDATE `users` SET `name`=CONVERT(UNHEX(HEX(CONVERT(`name` using latin1))) using cp1251);

    После этого уже добавляйте $mysql->query("SELECT NAMES 'utf8'") перед INSERT.
    В третьих Ваш html документ распознаётся как windows-1251. Возможно, что сервер отправляет в Content-Type кодировку windows-1251, а она имеет приоритет перед тэгами META, смотрите в отладчике браузера. Можете добавить в форму скрытый input c юникодным символом и проверять на сервере в правильной ли он кодировке.
    Ответ написан
    4 комментария
  • Не выполняется проверка логина. В чём ошибка?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    mysqli::query
    Возвращает false в случае неудачи. В случае успешного выполнения запросов SELECT, SHOW, DESCRIBE или EXPLAIN mysqli_query() вернёт объект mysqli_result.

    Соответственно, возвращается объект mysqli_result (результат из нуля строк - это тоже корректный результат и вернётся объект), в строке if ($row) приводится к true, условие выполняется, клиенту возвращается "true".
    А вообще логика крайне странная. Сначала вы пытаетесь найти логин в базе данных, а затем проверяете его регуляркой. Логично наоборот, хотя бы с точки зрения времени выполнения.
    Ну и приучите себя использовать подготовленные выражения с плейсхолдерами, это лучшая защита от SQL-инъекций.
    Ответ написан
    1 комментарий