Нужна помощь с контактной формой PHP

  • Автор темы azaribenjamin
  • 31
  • Обновлено
  • 17, May 2024
  • #1
Всем привет, Я нашел в Интернете контактную форму, которая, кажется, работает, и отправляет соответствующую информацию, но затем я получил форму другого стиля с тем же PHP, но теперь все, что я получаю в электронном письме, - это только имена полей и ничего из того, что было введено.

in. Я приложил код, который у меня есть, и мне было интересно, может ли кто-нибудь помочь или указать мне в правильном направлении?

 <?php

$EmailFrom = "[email protected]";

$EmailTo = "[email protected]";

$Subject = "Test";

$Name = $_POST['Name'];

$City = trim(stripslashes($_POST['City']));

$Email = trim(stripslashes($_POST['Email']));

$Tel = trim(stripslashes($_POST['Tel']));

// validation

//no errors, so send the email

// prepare email body text

$Body = "";

$Body .= "Name: ";

$Body .= $Name;

$Body .= "\n";

$Body .= "City: ";

$Body .= $City;

$Body .= "\n";

$Body .= "Email: ";

$Body .= $Email;

$Body .= "\n";

$Body .= "Tel: ";

$Body .= $Tel;

$Body .= "\n";

// send email

$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

print "<meta http-equiv=\"refresh\" content=\"0;URL=contactthanks.php\">";

exit;

?>
HTML:
 <!DOCTYPE html> <html> <style> * { box-sizing: border-box; } body { background-color: #f1f1f1; } #regForm { background-color: #ffffff; margin: 100px auto; font-family: Raleway; padding: 40px; width: 50%; min-width: 300px; } h1 { text-align: center; } input { padding: 10px; width: 100%; font-size: 17px; font-family: Raleway; border: 1px solid #aaaaaa; } /* Mark input boxes that gets an error on validation: */ input.invalid { background-color: #ffdddd; } /* Hide all steps by default: */ .tab { display: none; } button { background-color: #4CAF50; color: #ffffff; border: none; padding: 10px 20px; font-size: 17px; font-family: Raleway; cursor: pointer; } button:hover { opacity: 0.8; } #prevBtn { background-color: #bbbbbb; } /* Make circles that indicate the steps of the form: */ .step { height: 15px; width: 15px; margin: 0 2px; background-color: #bbbbbb; border: none; border-radius: 50%; display: inline-block; opacity: 0.5; } .step.active { opacity: 1; } /* Mark the steps that are finished and valid: */ .step.finish { background-color: #4CAF50; } </style> <body> <form id="regForm" action="contact.php"> <h1>Register:</h1> <!-- One "tab" for each step in the form: --> <div class="tab"> <form method="post" action="contact.php"> <label for="textfield">Name:</label> <label for="Name">Name:</label> <input type="text" name="Name" id="Name" required="required" class="required" minlength="2"/> <label for="City">City:</label> <input type="text" name="City" id="City" /> </div> <div class="tab">Contact Info: <label for="Email">Email:</label> <input type="text" name="Email" id="Email" /> <label for="text">Tel:</label> <input type="text" name="Tel" id="Tel" /> </div> <div style="overflow:auto;"> <div style="float:right;"> <button type="button" id="prevBtn" onclick="nextPrev(-1)">Previous</button> <button type="button" id="nextBtn" onclick="nextPrev(1)">Next</button> </div> </div> <!-- Circles which indicates the steps of the form: --> <div style="text-align:center;margin-top:40px;"> <span class="step"></span> <span class="step"></span> <span class="step"></span> <span class="step"></span> </div> </form> <script> var currentTab = 0; // Current tab is set to be the first tab (0) showTab(currentTab); // Display the crurrent tab function showTab(n) { // This function will display the specified tab of the form.





var x = document.getElementsByClassName("tab"); x[n].style.display = "block"; //... and fix the Previous/Next buttons: if (n == 0) { document.getElementById("prevBtn").style.display = "none"; } else { document.getElementById("prevBtn").style.display = "inline"; } if (n == (x.length - 1)) { document.getElementById("nextBtn").innerHTML = "Submit"; } else { document.getElementById("nextBtn").innerHTML = "Next"; } //... and run a function that will display the correct step indicator: fixStepIndicator(n) } function nextPrev(n) { // This function will figure out which tab to display var x = document.getElementsByClassName("tab"); // Exit the function if any field in the current tab is invalid: if (n == 1 && !validateForm()) return false; // Hide the current tab: x[currentTab].style.display = "none"; // Increase or decrease the current tab by 1: currentTab = currentTab + n; // if you have reached the end of the form.





if (currentTab >= x.length) { // ... the form gets submitted: document.getElementById("regForm").submit(); return false; } // Otherwise, display the correct tab: showTab(currentTab); } function validateForm() { // This function deals with validation of the form fields var x, y, i, valid = true; x = document.getElementsByClassName("tab"); y = x[currentTab].getElementsByTagName("input"); // A loop that checks every input field in the current tab: for (i = 0; i < y.length; i++) { // If a field is empty.





if (y[i].value == "") { // add an "invalid" class to the field: y[i].className += " invalid"; // and set the current valid status to false valid = false; } } // If the valid status is true, mark the step as finished and valid: if (valid) { document.getElementsByClassName("step")[currentTab].className += " finish"; } return valid; // return the valid status } function fixStepIndicator(n) { // This function removes the "active" class of all steps.



var i, x = document.getElementsByClassName("step"); for (i = 0; i < x.length; i++) { x[i].className = x[i].className.replace(" active", ""); } //... and adds the "active" class on the current step: x[n].className += " active"; } </script> </body> </html>
PHP: и все, что приходит по электронной почте, это то, что на картинке Большое спасибо, Марк

azaribenjamin


Рег
01 Jan, 2011

Тем
1

Постов
2

Баллов
12
  • 18, May 2024
  • #2
Большое спасибо за ответ и помощь. Полей будет больше. Я просто тестирую его в данный момент. Я никогда особо не занимался PHP, так что для меня все это в новинку (и к тому же очень стрессово). Я рассмотрю это позже и сообщу, чем это обернется
 

gawmax


Рег
25 Jun, 2013

Тем
1

Постов
4

Баллов
14
  • 01, Jun 2024
  • #3
Ну, во-первых, это могло бы помочь, если бы вы удалили скрипттардерию, которая, кажется, не делает ничего ценного в форме, которая недостаточно велика, чтобы тратить время на разделение на несколько вкладок - где даже ЕСЛИ вы хотите использовать несколько вкладок, вы, вероятно, не сделаете этого.

для этого мне даже не нужны эти чертовы сценарии.

Вы просто подбрасываете птицу пользователям с потребностями в доступности.

Серьезно, если вы не можете разместить на экране паршивые ЧЕТЫРЕ элемента формы, у вас проблемы. Во всех случаях, кроме самых редких, разбивать формы на несколько страниц или вкладок — это плохо.

Это только раздражает пользователей.

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

СЛЕДУЮЩИЙ, возможно, вам поможет, если вы узнаете, что такое набор полей, и избавитесь от бесконечных бессмысленных «DIV for nothinjg» и ПРЕКРАТИТЕ использование стиля в разметке.

ТОГДА могло бы помочь, если бы вы облегчили $body.= НИЧЕГО во всем этом чертовом месте и использовали правильный CRLF вместо просто LF. Переменные для НИЧЕГО, вероятно, тоже не помогают.

Конечно, могу ли я предположить, что в производстве у вас есть ФАКТИЧЕСКАЯ проверка на стороне сервера, поскольку проверка на стороне клиента scripttard - это бессмысленная, бессмысленная некомпетентная чушь?

ВОЗМОЖНО, это тоже помогло бы, если бы у вас вообще была ДЕЙСТВИТЕЛЬНАЯ разметка, поскольку, ну, где ваши чертовы и , ведь
 

mademoiselleEL


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
  • 03, Jun 2024
  • #4
На самом деле существует две формы, и первая не имеет тега . Кроме того, в форме не установлен метод, но php ищет его для отправки данных POST. Должен быть: Второй тег формы необходимо удалить. Я не уверен, почему вам нужны две отдельные страницы для 4 полей.

Обычно это раздражает пользователей, просто MHO. Этот код должен работать.

Я протестировал это здесь с тем же php, и все работало нормально.
 

<form id="regForm" action="contact.php" method="post">

<h1>Register:</h1>

<!-- One "tab" for each step in the form: -->

<div class="tab">

<label for="Name">Name:</label>

<input type="text" name="Name" id="Name" required="required" class="required" minlength="2"/>

<label for="City">City:</label>

<input type="text" name="City" id="City" />

</div>

<div class="tab">Contact Info:

<label for="Email">Email:</label>

<input type="text" name="Email" id="Email" />

<label for="text">Tel:</label>

<input type="text" name="Tel" id="Tel" />

</div>

<div style="overflow:auto;">

<div style="float:right;">

<button type="button" id="prevBtn" onClick="nextPrev(-1)">Previous</button>

<button type="button" id="nextBtn" onClick="nextPrev(1)">Next</button>

</div>

</div>

<!-- Circles which indicates the steps of the form: -->

<div style="text-align:center;margin-top:40px;">

<span class="step"></span>

<span class="step"></span>

<span class="step"></span>

<span class="step"></span>

</div>

</form>

Код (разметка):
 

specar


Рег
08 Aug, 2014

Тем
1

Постов
3

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

Интересно