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

    slo_nik
    @slo_nik Куратор тега PHP
    Доброе утро.
    <img src="<? echo $src; ?>">
    Ответ написан
  • Как решить проблему с автозагрузкой в yii1?

    slo_nik
    @slo_nik Куратор тега PHP
    Доброе утро.
    Например так можно попробовать.
    Тут ещё куча решений.
    Может получится решить, пробуйте. Хотя не мешало бы перевести на новую версию yii.
    Ответ написан
  • Почему не работает php7 в ubuntu?

    slo_nik
    @slo_nik Куратор тега PHP
    Удалите всё по видео уроку и установите lamp так, как я написал здесь.
    После этого всё у Вас заработает.
    Ответ написан
  • Как сделать редирект в php обработчике формы?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый вечер.
    Вот как-то так
    if(@mail($sendto, $subject, $msg, $headers)) {
        header("Location: index.php");
    } else {
        echo "<center><img src='images/ne-tpravleno.png'></center>";
    }

    Подробней здесь.
    И не используйте "@" в коде без острой необходимости.
    Ответ написан
    3 комментария
  • Как вывести текст из файла?

    slo_nik
    @slo_nik Куратор тега PHP
    Вам надо установить LAMP.
    Что надо для этого сделать.
    1) Установить tasksel. Для этого в консоли выполняете команду sudo apt-get install tasksel
    2) Запустить tasksel sudo tasksel. Стрелочками курсора на клавиатуре выбрать LAMP Server и нажать OK. Остальное ничего не трогать в окне программы!!! Через некоторое время LAMP Server будет установлен.
    3)Дополнительно надо установить phpmyadmin
    По завершении в окне браузера вводите адрес http://localhost и попадаете на стартовую страницу Вашего тестового сайта.
    Это начальные этапы. Остальное делайте не Ваше усмотрение, но я всё-таки рекомендую это сделать.
    В домашней директории создаёте директорию localhost, в этой директории создаёте www и два файла - error.log и access.log. В директорию localhost/www будете помещать свои проекты.
    Затем копируете конфигурационный файл своего тестового сайта и переименовываете. Название придумайте сами.
    Делается это в консоли.
    cd /etc/apache2/sites-available
    sudo cp 000-default.conf mySite.conf

    Открываете на редактирование новый файл, меняете пути на свои, которые ведут к директории localhost в Вашем домашнем каталоге.
    После этого делаете в консоли
    sudo service apache2 restart
    sudo a2dissite 000-default
    sudo a2ensite mySite

    После этого в директории localhost/www создайте index.php с содержимым
    <?php
    echo phpinfo();

    и перейдите в браузере по адресу http://localhost
    Всё, можете изучать разработку.
    Ответ написан
    1 комментарий
  • Как в PHP из строки извлечь только ссылку?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    В php есть глобальный массив $_SERVER.
    А в этом массиве есть индекс "QUERY_STRING", в котором содержится данные, переданные в адресе после "?"
    Есть ещё "HTTP_HOST", в котором содержится имя домена.
    Куча всего есть, перейдите по ссылке и посмотрите, что Вы можете извлечь из этого массива.
    Просто на нужной странице сделайте print_r($_SERVER) и смотрите, что он Вам отдаёт.
    Ответ написан
    Комментировать
  • Функция trim() выводит крякозябры. Что делать?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый вечер.
    Из документации по Вашей ссылки
    Эта функция возвращает строку str с удаленными из начала и конца строки пробелами. Если второй параметр не передан, trim() удаляет следующие символы:

    " " (ASCII 32 (0x20)), обычный пробел.
    "\t" (ASCII 9 (0x09)), символ табуляции.
    "\n" (ASCII 10 (0x0A)), символ перевода строки.
    "\r" (ASCII 13 (0x0D)), символ возврата каретки.
    "\0" (ASCII 0 (0x00)), NUL-байт.
    "\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.

    Значит Вам нужно другое решение. trim не применяется для разделения строки, тем более, что есть специальные функции для работы с многобайтовыми строками(utf8)
    Ответ написан
    Комментировать
  • Почему не отправляется форма?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    В файле php, 20 строка, функция eregi

    Внимание
    Эта функция объявлена УСТАРЕВШЕЙ в PHP 5.3.0, и УДАЛЕНА PHP 7.0.0.
    Есть следующие альтернативы:
    preg_match() (Используйте модификатор i (PCRE_CASELESS))


    p.s.
    Даже ошибки никакой нет. По нажатию на кнопку тупо ничего не происходит.

    Ошибка есть, и не одна.
    Первую я Вам показал, остальные найдите самостоятельно. Смотрите логи сервера, консоль браузера.
    Ответ написан
  • Как с помощью jQuery ajax получить от php сервера 4 картинки?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый вечер.
    На сервере формируете json строку и отдаёте назад клиенту
    return json_encode($answer);
    В jquery принимаете и распарсиваете json строку
    success: function(data) {
               var response = jQuery.parseJSON(data)
               $("#dc1").html(response.dc1s);
            }

    Но всё зависит от того, как Вы сформируете json на сервере, с какими данными. От этого зависит то, как Вы будете её разбирать и как передавать в браузер.

    p.s.
    Возможный вариант ответа сервера
    $answer = ['fist' => 'dc1s', 'second' => 'pc1s'];
    return json_encode($answer);

    В jQuery
    success: function(data) {
               var response = jQuery.parseJSON(data)
               $("#dc1").html(response.first);
               $("#dc1").html(response.second);
            }
    Ответ написан
    9 комментариев
  • Как проверить существует ли директория PHP?

    slo_nik
    @slo_nik Куратор тега PHP
    Доброй ночи.
    Код вполне рабочий.
    Я правильно понимаю, что директории api и base лежат на одном уровне?
    Что именно у Вас не работает?
    Проверьте, что в переменной $keygen, может она у Вас пустая.
    Проверьте, что вообще возвращает $_SERVER['DOCUMENT_ROOT'] . "/base/$keygen", может не тот путь.
    И вообще, загляните в логи сервера, может у Вас где-то ошибка завалялась и в браузер она не выводится.
    Ответ написан
    Комментировать
  • Не аворизует пользователя?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Вы уже второй вопрос задаёте и пишите, что ошибок нет. Но при этом получаете белый экран.
    Так может стоит заглянуть в логи сервер, консоль браузера, включить вывод ошибок в браузер? Повысить, наконец-то, уровень отображаемых ошибок.
    Так же не помешает расставить проверки в коде.
    Там, глядишь, и ошибка вылезет и Вы сами разберётесь в своей проблеме...

    p.s.
    Начать можно с того, что вот здесь неверно.
    $data = $_POST;
            if (isset($data["do_login"])) {

    Правильней будет так
    if (isset($_POST)) {
        $data = $_POST;
        // остальной Ваш код
    }


    p.s.s
    Я немного изменил Ваш код и попробовал запустить.
    $users_log = mysqli_query($mysqli, "SELECT * FROM `users` WHERE `username` = 'administrator'");
    
    if ($users_log["username"] == 'administrator') {
      if (passwor_verify($data['password'], $users_log["pass"]) ) {
      # code...
      } else {
        $errors[] = "Пароль не правильний";
      }
    } else {
      $errors[] = "Користувач з таким именем не знайдений";
    }
    echo "<div style='color:red;'>" .	array_shift($errors) . "</div> <hr>";

    И в результате появилось то, что Вы никак не хотите настраивать!
    Fatal error: Uncaught Error: Cannot use object of type mysqli_result as array in /home/slonik/localhost/www/new.php:12 Stack trace: #0 {main} thrown in /home/slonik/localhost/www/new.php on line 12

    Вот документация, прочитайте и сделайте как надо.
    Ответ написан
  • Как сделать вставку массива php в HTML?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Есть такая конструкция как foreach();
    Вот с его помощью и перебирайте массив.
    Как-то так:
    foreach($array as $key => $value){
        echo $value;
    }


    p.s. Если Вы хотите подставить в переменную результат работы цикла, то сначала получите результат работы, а потом подставляйте в переменную.
    Приблизительно так:
    $result = '';
    foreach ($useroption as $value)
    {
         $result .= $value;
    }
    $messageBody ='
    <table>
    <tr><td> '.$color_htm.'</td></tr>
    <tr><td>'.$result.'</td></tr>
    </table>';

    Или, если Вам надо в таблицу подставить несколько строк, то можно сделать так:
    foreach ($useroption as $value)
    {
         $result .= '<tr><td>'.$value.'</td></tr>';
    }
    $messageBody ='
    <table>
    <tr><td> '.$color_htm.'</td></tr>
    '.$result.'
    </table>';
    Ответ написан
    7 комментариев
  • Как посчитать время?

    slo_nik
    @slo_nik Куратор тега PHP
    Доброе утро.
    Вот Вам меленький пример, как посчитать разницу между датами.
    $first = strtotime('04-02-2017 06:30');
    $second = strtotime('14-03-2017 10:30');
    
    $start = new DateTime(date('Y-m-d H:i', $first), new DateTimeZone('Europe/Moscow'));
    $end = new DateTime(date('Y-m-d H:i', $second), new DateTimeZone('Europe/Moscow'));
    $diff = $end->diff($start);
    
    printf("The two dates have %d weeks, %s days, " .
    "%d hours, %d minutes, and %d seconds " .
    "elapsed between them.",
    floor($diff->format('%a') / 7),
    $diff->format('%a') % 7,
    $diff->format('%h'),
    $diff->format('%i'),
    $diff->format('%s'));
    Ответ написан
    Комментировать
  • Регулярные выражения. Как выделить имя файла?

    slo_nik
    @slo_nik Куратор тега PHP
    Доброе утро.
    А зачем Вам в данной ситуации регулярные выражения?
    Есть pathinfo().
    А ещё есть basename().

    p.s. Если есть возможность не использовать регулярные выражения - не используйте.

    p.s. Ну а если уж сильно приспичило, то вот, попробуйте начать с этого.
    Ответ написан
    4 комментария
  • Как вычисть массивы?

    slo_nik
    @slo_nik Куратор тега PHP
    Вечер добрый.
    Попробуйте начать со следующего:
    $a = ['0' => '52',
    '1' => '45',
    '2' => '58'];
    $b = ['38' => '47',
    '78' => '68',
    '45' => '85'];
    foreach ($b as $key => $value) {
      if(in_array($key, $a)){
           unset($b[$key]);
      }
    }
    print_r($b);
    Ответ написан
  • Как копировать файл с помощью php?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Для реализации данного скрипта Вам потребуются:
    1) copy() или move_uploaded_file()
    2) pathinfo
    3) Функция, которая будет генерировать случайное имя файла. Можно воспользоваться time() для данной задачи.
    Ответ написан
    Комментировать
  • Почему возникает проблема с пространством имен php?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый вечер.
    Смотрите по ссылке, так указаны полезные статьи о пространстве имён.
    Ответ написан
    Комментировать
  • Почему не видит класс?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый вечер.
    Вам помогут эти статьи
    1) Раз
    2) Два
    И самая главная ссылка.
    Ответ написан
    Комментировать
  • Как передать файл с помощью ajax, из массива $_FILES?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Для отправки файла при помощи ajax используйте FORMDATA
    Ответ написан