Форма удостоверения личности

  • Автор темы TrafficStore SEO
  • 42
  • Обновлено
  • 15, May 2024
  • #1
Привет, ребята, У меня проблема с контактной формой.

Проблем две.



Оставив html код с одинаковыми id (id=имя имя=id:id=имя имя=email), проверка на ошибки php файла мне говорит, что все хорошо, но на почте я нахожу все те же ответы (очевидно) . Если я сделаю их уникальными (id = имя, имя = имя, id = адрес электронной почты, адрес электронной почты = адрес электронной почты и т. д.), файл php выдаст мне ошибку, и мой адрес электронной почты не предоставит мне текст.



Надеюсь, я ясно выразился.

Есть ли у кого-нибудь решение или предложение? HTML-код такой:
 <?php

ini_set('display_errors','On');

error_reporting(E_ALL);

$name = $_POST['nome'];

$name = $_POST['email'];

$name = $_POST['societa'];

$name = $_POST['telefono'];

$messaggio = $_POST['messaggio'];

$from = 'From: My Contact Form';

$to = '[email protected]';

$subject = 'Richiesta info dal sito';

$totalmessage="

Nome: $name \n

Email: $name \n

Società: $name \n

Telefono: $name \n

Messaggio: $messaggio \n";

if (!isset($_POST['submit'])) {

if (mail ($to, $subject, $from, $totalmessage)) {

echo '<p>Il messaggio è stato inviato!</p>';

} else {

echo '<p>Ah! Riprova per cortesia</p>';

}

}

?>
PHP: И это отправляющий PHP-код
 <label>Nome e Cognome:</label> <input type="text" class="form-control" id="name" name="nome" required data-validation-required-message="Please enter your name."> <p class="help-block"></p> </div> </div> </div> <div class="col-lg-6 col-md-6 col-sm-6"> <div class="control-group form-group"> <div class="controls"> <label>Email:</label> <input type="text" class="form-control" id="name" name="email" required data-validation-required-message="Please enter your email address."> </div> </div> </div> <div class="col-lg-6 col-md-6 col-sm-6"> <div class="control-group form-group"> <div class="controls"> <label>Società</label> <input type="text" class="form-control" id="name" name="societa" required data-validation-required-message="Please enter your society name."> <p class="help-block"></p> </div> </div> </div> <div class="col-lg-6 col-md-6 col-sm-6"> <div class="control-group form-group"> <div class="controls"> <label>Telefono</label> <input type="text" class="form-control" id="name" name="telefono" required data-validation-required-message="Please enter your number."> <p class="help-block"></p> </div> </div> </div> <div class="clearfix"></div> <div class="col-lg-12 col-md-12 col-sm-12"> <div class="control-group form-group"> <div class="controls"> <label>Messaggio:</label> <textarea rows="10" cols="100" class="form-control" id="messaggio" messaggio="messaggio" required data-validation-required-message="Please enter your message" maxlength="999" style="resize:none"></textarea> </div>
PHP: .

TrafficStore SEO


Рег
06 Dec, 2015

Тем
1

Постов
1

Баллов
11
  • 18, May 2024
  • #2
Хм, что теперь? Этот скрипт вообще не должен работать.

Вы впервые перезаписываете $name в PHP-файле 4 раза.



И правильный способ сделать это обычно — установить для ОБА «id» и «name» одно и то же. Идентификатор в основном предназначен для привязки к нему метки, чего вы не делаете («метка» должна иметь for="id_of_input_element", поэтому она выглядит, например, как ), чтобы вы могли можно сфокусировать ввод, щелкнув метку.



У вас там довольно много мусора, и вы не включили реальные элементы формы в опубликованный вами код, но чего-то вроде этого должно быть достаточно:
 

<?php

ini_set('display_errors',1);

error_reporting(E_ALL);

$from = 'From: My Contact Form';

$to = '[email protected]';

$subject = 'Richiesta info dal sito';

$totalmessage="Nome: $_POST['name'] \r\n

Email: $_POST['email'] \r\n

Società: $_POST['society'] \r\n

Telefono: $_POST['phone'] \r\n

Messaggio: $_POST['message'] \r\n";

if (isset($_POST['submit'])) {

if (mail($to, $subject, $from, $totalmessage)) {

echo '<p>Il messaggio è stato inviato!</p>';

} else {

echo '<p>Ah! Riprova per cortesia</p>';

}

}

?>

Код (разметка): Вы заметите, что я удалил все ненужное раздувание, которое у вас есть, что, вероятно, является каким-то неумелым JS-методом для проверки или встроенными сообщениями или чем-то в этом роде.

Это херня, и она тебе не нужна.

Также вам следует избегать использования в коде двух разных языков.

Либо придерживайтесь своего родного языка, либо постоянно используйте английский.

Вы, конечно, можете использовать свой язык в тексте метки, но для идентификаторов и тому подобного обычно лучше использовать английский, так как другим будет легче следовать вашему коду, если вам нужно будет вывести его для получения помощи. Теперь о PHP:
  <label for="name">Nome e Cognome:</label> <input type="text" class="form-control" id="name" name="name" required placeholder="Пожалуйста, введите Ваше имя."> <label for="email">Email:</label> <input type="email" class="form-control" id="email" name="email" required placeholder="Пожалуйста, введите Ваш адрес электронной почты."> <label>Società</label> <input type="text" class="form-control" id="society" name="society" required placeholder="Пожалуйста, введите название вашего общества."> <label>Telefono</label> <input type="text" class="form-control" id="phone" name="phone" required placeholder="Пожалуйста, введите свой номер."> <label>Messaggio:</label> <textarea class="form-control" id="message" name="message" required placeholder="Пожалуйста, введите ваше сообщение" maxlength="999" style="resize:none"></textarea> 
PHP: Как видите, я удалил все ненужные переменные — нет необходимости превращать POST-значения в переменные, если вы используете их только один раз.

Кроме того, ваша последняя проверка была на if (!isset($_POST['submit'])) - что означает, что если SUBMIT НЕ установлен, то проверять и отправлять почту? Мне это показалось неправильным...

Здесь нет проверки ошибок, а также нет никакой проверки или фильтрации POST-контента, что будет означать, что эта контактная форма довольно быстро рассылает спам миллионам пользователей и заносит ваш IP-адрес в черный список, но, эй, это совсем другая проблема.
 

Creamo4


Рег
02 Aug, 2014

Тем
0

Постов
1

Баллов
1
  • 01, Jun 2024
  • #3
Строки с двойными кавычками не могут использовать индексы с одинарными кавычками.

поэтому, когда вы «Что-то: $_POST['name']» это недействительно.

вам придется потерять одинарные кавычки и вообще не работать ни с какими. СЛЕДОВАТЕЛЬНО:
 
<div class="col-lg-6 col-md-6 col-sm-6">

<div class="control-group form-group">

<div class="controls">
Код (разметка): правильность использования двойных кавычек. ТЕМ ТОМУ, строки в двойных кавычках, ОСОБЕННО с переменными индексами, работают медленнее, чем сложение строк, поскольку их приходится анализировать, анализировать и анализировать снова. Таким образом, я бы написал это так:
 $totalmessage = 'Nome: ' . $_POST['name'] . "\r\n" . 'Email: ' . $_POST['email'] . "\r\n" . 'Società: ' . $_POST['society'] . "\r\n" . 'Telefono: ' . $_POST['phone'] . "\r\n" . 'Messaggio: ' . $_POST['message'] . "\r\n"; 
Код (разметка): Хотя обычно у меня есть определение под названием CRLF, которое == "/r/n", так что передается только одна ссылка на память вместо того, чтобы анализатор снова и снова обрабатывал одну и ту же строку.

Таким образом, он гарантированно будет передан по ссылке, а не по прямому адресу в коде.

Как правило, я избегаю строк с двойными кавычками, если только мне ДЕЙСТВИТЕЛЬНО не нужны escape-коды.



ВСЕ ТО, ЧТО СКАЗАЛ, избавьтесь от мусора-заполнителя, если все они получают один и тот же класс, предполагая, что у вас есть набор полей, ни одному из них не нужны классы, прекратите вставлять презентацию в разметку с помощью style="", и ради Рождества не отключайте изменить размер!!! Вы просто злитесь на удобство использования.



Если ваш макет не может справиться с изменением размера текстовой области, ваш макет — мусор.

Также помните, ID должен быть УНИКАЛЬНЫМ, вы можете использовать его только ОДИН РАЗ на странице, и это означает, ЧТО ДЕРЬМО СЕРВЕРНОЙ СТОРОНЫ!!! Идентификатор вашего ввода предназначен для сценариев на стороне КЛИЕНТА, перехватчиков стиля или цели атрибута for="" в ваших тегах . ИМЯ="" это то, что отправляется на сервер! У вас также, вероятно, было бы гораздо меньше трудностей, если бы вы избавились от этой полоумной тупой ерунды, которую бутхерня обманула вас, заставив думать, как следует писать HTML:
 $totalmessage="Nome: $_POST[name] \r\n Email: $_POST[email] \r\n Società: $_POST[society] \r\n Telefono: $_POST[phone] \r\n Messaggio: $_POST[message] \r\n";
Код (разметка): Поскольку это ДЕЙСТВИТЕЛЬНО помещает герпеса в сумасшедший с div даром, презентационными классами, классами даром и всей прочей дурацкой чушью, то змеиное масло, которое является бутхреном, обманывает вас, заставляя его использовать.
 

angel18


Рег
03 Mar, 2014

Тем
1

Постов
3

Баллов
13
  • 08, Jun 2024
  • #4
Тогда спасибо за ответ и за предложения по коду. Что касается html, я решил, что произошла ошибка, поэтому теперь все сообщается по почте. Что касается php, то он выдавал мне ошибки преобразования массивов, поэтому я оставил все как было, просто поменяв метки.
 

flips


Рег
23 Mar, 2012

Тем
1

Постов
3

Баллов
13
  • 08, Jun 2024
  • #5
массивы внутри строк могут вызвать проблемы. если вы не знаете, как использовать команду, зайдите на php.net и найдите ее. вот как бы я написал оскорбительную строку, вызывающую проблемы
 
$totalmessage="Nome: \t{$_POST ['name']}
Email: \t{$_POST['email']}
Società: \t{$_POST['society']}
Telefono: \t{$_POST['phone']}
Messaggio: \t{$_POST['message']} \r\n";
PHP: но мне было бы очень неудобно отправлять его с использованием неэкранированных переменных $_POST без проверок на спам или другой проблемный контент.
 

Dima_A


Рег
22 Jun, 2014

Тем
1

Постов
3

Баллов
13
  • 10, Jun 2024
  • #6
@alex4xss: Я печатал быстро и неразборчиво. Массивы в строках могут вызвать проблемы, если они расположены неправильно. Я добавил {}, который позволяет точно указать PHP, где начинается и заканчивается имя переменной, и подумал, что это может объяснить ошибки, которые вы получаете.
 

Grizli1


Рег
31 Dec, 2014

Тем
2

Постов
3

Баллов
23
Тем
49554
Комментарии
57426
Опыт
552966

Интересно