не получается считать данные с формы html

373
18 января 2018, 19:27

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

как можно исправить ситуацию?

index.html:

<form name="form1" action="send.php" method="post">
                <div class="row">
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="name">
                                Name</label>
                            <input type="text" class="form-control" id="name" placeholder="Enter name" required="required" />
                        </div>
                        <div class="form-group">
                            <label for="email">
                                Email Address</label>
                            <div class="input-group">
                                <span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span>
                                </span>
                                <input type="email" class="form-control" id="email" placeholder="Enter email" required="required" /></div>
                        </div>
                        <div class="form-group">
                            <label for="subject">
                                Subject</label>
                            <select id="subject" name="subject" class="form-control" required="required">
                                <option value="na" selected="">Choose One:</option>
                                <option value="service">General Customer Service</option>
                                <option value="suggestions">Suggestions</option>
                                <option value="product">Product Support</option>
                            </select>
                        </div>
                    </div>
                    <div class="col-md-6">
                        <div class="form-group">
                            <label for="name">
                                Message</label>
                            <textarea name="message" id="message"         class="form-control" rows="9" cols="25" required="required"
                                placeholder="Message"></textarea>
                        </div>
                    </div>
                    <div class="col-md-12">
                        <button type="submit" class="btn btn-primary pull-right" id="btnContactUs">
                            Send Message</button>
                    </div>
                </div>
                </form>

send.php:

<?php
switch ($_POST['form1']) {
  default:
{
$name=$_POST['name'];
$subject=$_POST['subject'];
$email=$_POST['email'];
$mes=$_POST['message'];
}
    break;
}
    $to="mymail";
    $from_email="mail";
    $tema="zayavka";
    $pismo="Новый пользователь с именем $name отправил сообщение на тему $subject!\r\n
    Вот его сообщение: $mes.<br>\r\n
    E-mail: $email";
      mail_utf8($to,'novaya zayavka',$from_email, $tema, $pismo);
      function mail_utf8($to, $from_user, $from_email,$tema, $pismo)
         {
            $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
            $tema = "=?UTF-8?B?".base64_encode($tema)."?=";
            $headers = "From: $from_user <$from_email>\r\n".
                     "MIME-Version: 1.0"."\r\n".
                     'Content-type: text/html; charset="UTF-8"'.'\r\n';
           return mail($to, $tema, $pismo, $headers);
         }
         if($realname)
            mail_utf8($to,$from_email, $tema, $pismo);
?>
Answer 1

Во первых, в вашем массиве $_POST просто не должно быть ключа form1. То что вы дали название своей форме form1 никак не влияет на структуру массива отправляемых данных. Во вторых, вы полям формы назначили ID'ы, вместо имен. Имена становятся ключами массива POST, а не ID'ы. То есть атрибут name нужно было назначать в полях, а не в форме. Как-то вот так

<input type="text" class="form-control" name="name" placeholder="Enter name" required="required" />

Если вы хотите чтобы в вашем массиве $_POST был еще один массив form1 а в нем были элементы (например email, name и так далее), и чтобы вы могли обращаться к ним как-то так

$_POST['form1']['name']

то вам нужно называть свои поля как-то вот так

<input type="text" class="form-control" name="form1[name]" placeholder="Enter name" required="required" />

Если же вам это не нужно, а нужно просто передать какую-то метку формы отдельным значением, то можно использовать скрытое поле

<input type="hidden" name="form1" value="1" />
READ ALSO
Текст градиентом ie 11

Текст градиентом ie 11

https://jsfiddlenet/4748o58L/

314
Автоматическая прокрутка html,css

Автоматическая прокрутка html,css

ЗдравствуйтеЕсть необходимость выполнять, с задержкой, прокрутку страницы до конца страницы

333
Подсказки при валидации формы + Kube css

Подсказки при валидации формы + Kube css

Как сделать, чтобы span error высвечивался если поле пустое и высвечивался span sucsess если поле заполнено?

341