Ответы пользователя по тегу PHP
  • Как правильно передать данные из JS в PHP?

    @goshaLoonny
    Вы передаете данные без именования, забирайте их $txt = file_get_contents("php://input")
    Если вам необходимо обращаться к данным через $_POST['txt'] отправляйте их data: { txt: txt }
    jQuery.ajax({
      url: 'sendMessage.php',
      type: 'POST',
      data: {
        txt: txt
      },
      success: function(data) {
        alert(data)
      },
      error: function() {
        console.log('ERROR')
      },
    })
    Ответ написан
    Комментировать
  • Cкрипт php не получает результат exec()?

    @goshaLoonny
    Как говорится в документации к exec, в разделе примечания
    Замечание:

    Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.

    Замечание:

    В Windows функция exec() стартует cmd.exe для запуска команды. Если вы хотите запустить внешнюю программу без запуска cmd.exe, то используйте функцию proc_open() с установленной опцией bypass_shell.
    Ответ написан
  • При отправке письма с формы обратной связи, на почте пишет noreply. Как поменять на текст или на email отправителя?

    @goshaLoonny
    Начнем с того что я удивлен что форма вообще отправляется, ведь тип кнопки должен быть submit, а не button.
    А что бы добавить имя отправителя, используйте заголовки
    <?php
    
    if ($_POST['submit']) {
      $mailForReport = 'admin@example.com'; // Мейл куда будут отчеты приходить
      $senderName = 'Раб Виталий'; // Имя отправителя
      $senderLogin = 'rab_vitalii'; // Логин отправителя
      $subject = 'Заявка c сайта'; // Тема письма
      $headers = [ // Заголовки
          'From' => "{$senderName} <{$senderLogin}@{$_SERVER['HTTP_HOST']}>",
          'Reply-To' => "{$senderName} <{$senderLogin}@{$_SERVER['HTTP_HOST']}>",
          'X-Mailer' => 'PHP/' . phpversion(),
          'Content-type' => 'text/html; charset=utf-8'
      ];
      // Красивенько отправим все табличкой, а не переносами
      $msg = <<<HTML
    <table>
      <tr><td>Имя</td><td>{$_POST['name']}</td></tr>
      <tr><td>Фамилия</td><td>{$_POST['surname']}</td></tr>
      <tr><td>Телефон</td><td>{$_POST['phone']}</td></tr>
      <tr><td>Почта</td><td>{$_POST['email']}</td></tr>
      <tr><td>Текст</td><td>{$_POST['text']}</td></tr>
    </table>
    HTML;
    
      $isSended = mail($mailForReport, $subject, $msg, $headers);
    }
    
    ?>
    <meta charset="utf-8">
    
    <?php if ( isset($isSended) ) :?>
      <p><?= $isSended ? 'Письмо отправленно' : 'Не удалось отправить письмо' ?></p>
    <?php endif; ?>
    
    <form id="callback-form" action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="post" style="width: 300px">
      <input type="text" name="name" placeholder="Имя" required>
      <input type="text" name="surname" placeholder="Фамилия" required>
      <input type="number" name="phone" placeholder="Телефон" required>
      <input type="email" name="email" placeholder="Email" required>
      <textarea name="text" cols="30" rows="10" placeholder="Введите текст" required></textarea>
      <input type="submit" name="submit" value="Отправить форму">
    </form>
    Ответ написан
  • Как сравнить 2 массива и убрать повторяющиеся записи?

    @goshaLoonny
    Если вам нужно убрать из первого массива данные что есть во втором, попробуйте так:
    $array1 = [
      [
        'pname' => 'Andrey_Faste',
        'vkid'  => 2324324
      ],[
        'pname' => 'Aleksey_Andreev',
        'vkid'  => null
      ],[
        'pname' => 'Ivan_Alekseev',
        'vkid'  => null
      ],[
        'pname' => 'Ivan_Ivanov',
        'vkid'  => null
      ],[
        'pname' => 'Ivan_Petrov',
        'vkid'  => 344366423498
      ]
    ];
    
    $array2 = [
      [
        'pname' => 'Ivan_Ivanov',
        'vkid'  => null
      ],[
        'pname' => 'Ivan_Petrov',
        'vkid'  => null
      ]
    ];
    
    // Перебирать будем первый массив, по этому создадим третий массив 
    // который будет содержать все `pname` из второго массива
    $array3 = [];
    
    foreach ($array2 as $item) {
      array_push($array3, $item['pname']);
    }
    
    // Далее перебираем первый массив и проверяем есть ли совпадения 
    // со вторым, если есть - удаляем
    foreach ($array1 as $key=>$item) {
      if (in_array($item['pname'], $array3)) unset($array1[$key]);
    }
    
    // Вывести результат
    echo "<pre>";
    print_r($array1);

    Результат:
    Array
    (
        [0] => Array
            (
                [pname] => Andrey_Faste
                [vkid] => 2324324
            )
    
        [1] => Array
            (
                [pname] => Aleksey_Andreev
                [vkid] => 
            )
    
        [2] => Array
            (
                [pname] => Ivan_Alekseev
                [vkid] => 
            )
    
    )
    Ответ написан
    2 комментария