Проблема с формой php

#php #email #forms

#php #Адрес электронной почты #формы

Вопрос:

Друг попросил меня внести изменения в некоторый код для его контактной формы. Я не знаю php, так что это оказывается довольно сложным. Хотя я свободно владею HTML и CSS.

Форма должна отправить имя и данные электронной почты на его электронную почту и перенаправить на страницу благодарности. Перенаправление работает нормально, как и все ошибки и т.д., Но оно не отправляет никакой почты! Это код:

 <?php 
if(isset($_POST['txtName'])){

$sql = "SELECT * FROM tbl_ezine WHERE email = '$_POST[txtEmail]'";
$result = dbQuery($sql);
$numRows = dbNumRows($result);
if($numRows > 0){
echo "<script>window.location = 'http://www.thankyoupageishere.com';</script>";
}else{

if($_POST['txtEmail'] != "" amp;amp; $_POST['txtEmail'] != "Email Address"){

$searchfor = "@";
$searchfor2 = ".";

$find1 = strpos($_POST['txtEmail'],$searchfor); // CHECK IF EMAIL CONTAINS @ SYMBOL
$find2 = strpos($_POST['txtEmail'],$searchfor2); // CHECK IF EMAIL CONTAINS . SYMBOL


if($find1 === false || $find2 === false) {
 // string needle NOT found in haystack
$errorStr = "Invalid email format.";
}
else {
 // string needle found in haystack
$sql = "INSERT INTO tbl_ezine (username, email, event) VALUES ('$_POST[txtName]', '$_POST[txtEmail]', 'hop')";
$result = dbQuery($sql);    
echo "<script>window.location = 'http://www.thankyoupageishere.com';</script>";
}


}else{// FIELDS ARE BLANK OR UNCHANGED
    $errorStr = "Please enter your name and email to continue.";
}
}
}

?>

<div id="content" class="hop" style="min-height:220px;">

<div id="body" style="min-height:200px;padding-right:340px;">
    <h2>Sign up to download your photos</h2>
    <p>Complete the registration form</p>
<?php 
if($errorStr != ""){echo "<p style="color:#F00;">" . $errorStr . "</p>";}
?>
<form name="hop" class="competition" method="post" action="">
        <input type="text" value="Name" class="contact-name" name="txtName" /> <input type="text" value="Email Address" class="contact-email" name="txtEmail" /> <input type="submit" value="SUBMITamp;gt;" class="submit" /></form>
</div>
  

Может кто-нибудь сказать мне, где я ввожу данные электронной почты!

Спасибо.

Ответ №1:

где ваша почтовая функция?

вы должны использовать почтовую функцию php для отправки электронных писем.

htmlspecialchars () сделает ввод безопасным, потому что вы хотите избежать xss и sql-инъекций . Никогда не разрабатывайте что-то настолько небезопасное, как опубликованный вами код.

 $name=htmlspecialchars($_POST['txtName'],ENT_QUOTES); 
$email=htmlspecialchars($_POST['txtEame'],ENT_QUOTES);
mail("yourfriendsemail@gmail.com","(subject) A new mail","name: $name , email: $email");
  

Комментарии:

1. Привет, T4u, большое спасибо, хотя я не разрабатывал код. Я просто редактирую ее. Куда мне добавить этот фрагмент скрипта?

2. прямо перед окном [echo»<скрипт>. location = ‘ <a rel="nofollow noreferrer noopener" href="https:///www.thankyoupageishere.com'; thankyoupageishere.com ‘;</script >»; ] часть.

3. теперь это мой код: // строка needle найдена в haystack $ sql = «ВСТАВИТЬ В tbl_ezine (имя пользователя, электронная почта, событие) ЗНАЧЕНИЯ (‘$_POST[txtName]’, ‘$_POST[txtEmail]’, ‘bunnyhop’)»; $result = DbQuery ($ sql); $name=htmlspecialchars ($_POST[‘txtName’],ENT_QUOTES); $email=htmlspecialchars( $_POST[‘txtEame’],ENT_QUOTES); почта («info@email.co.uk «,»(тема) Новое письмо», «имя: $name , электронная почта: $email»); окно echo «<скрипт>. location = ‘ <a rel="nofollow noreferrer noopener" href="https:///www.thankyoupage.co.uk'; thankyoupage.co.uk ‘;</script >»; }

4. я случайно написал «txtEame» вместо «txtEmail». попытайтесь понять, что я написал, а также посмотрите документацию по почтовой функции php. вы не сможете выполнить свою задачу, если не будете понимать, что делаете.

5. Похоже, что отправка по-прежнему не выполняется?

Ответ №2:

Он не отправит никакого электронного письма, потому что вы нигде не использовали команду php mail ().

Вы можете найти полную ссылку на функцию и примеры по http://php.net/manual/en/function.mail.php

Комментарии:

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

Ответ №3:

 $sql = "INSERT INTO tbl_ezine (username, email, event) VALUES ('$_POST[txtName]', '$_POST[txtEmail]', 'hop')";
$result = dbQuery($sql);    
/*send mail here*/
mail($_POST[txtEmail], 'Your email subject', 'your email content here', "From: youremail@yourdomain.comrn");
echo "<script>window.location = 'http://www.thankyoupageishere.com';</script>";
  

Но, прежде чем вы начнете запускать этот код, я бы посоветовал вам использовать какой-нибудь готовый скрипт. Например, $_POST[txtEmail] должно быть $_POST['txtEmail'] . Вы не фильтруете пользовательский ввод. Небезопасный пользовательский ввод — это брешь в системе безопасности. ИМХО, если у вас нет никакого интереса к изучению PHP или программированию, наймите какого-нибудь фрилансера за 10 долларов, чтобы он написал скрипт, а не делал это сам и не попадал в беду.

Ответ №4:

Вы могли бы попробовать: (замените 2 переменные нужным содержимым). Я также исправил несколько неправильных использований массива $ _POST (вы забыли одинарные кавычки вокруг txtEmail местами)

     <?php 
if(isset($_POST['txtName'])){

$sql = "SELECT * FROM tbl_ezine WHERE email = '". $_POST['txtEmail'] . "'";
$result = dbQuery($sql);
$numRows = dbNumRows($result);
if($numRows > 0){
//************ EDIT THESE ****************
$subject = "Your email subject";
$message = "Your email message";
//****************************************
mail($_POST['txtEmail'], $subject, $message);


echo "<script>window.location = 'http://www.thankyoupageishere.com';</script>";
}else{

if($_POST['txtEmail'] != "" amp;amp; $_POST['txtEmail'] != "Email Address"){

$searchfor = "@";
$searchfor2 = ".";

$find1 = strpos($_POST['txtEmail'],$searchfor); // CHECK IF EMAIL CONTAINS @ SYMBOL
$find2 = strpos($_POST['txtEmail'],$searchfor2); // CHECK IF EMAIL CONTAINS . SYMBOL


if($find1 === false || $find2 === false) {
 // string needle NOT found in haystack
$errorStr = "Invalid email format.";
}
else {
 // string needle found in haystack
$sql = "INSERT INTO tbl_ezine (username, email, event) VALUES ('". $_POST['txtName']."', '".$_POST['txtEmail'].'", 'hop')";
$result = dbQuery($sql);    
echo "<script>window.location = 'http://www.thankyoupageishere.com';</script>";
}


}else{// FIELDS ARE BLANK OR UNCHANGED
    $errorStr = "Please enter your name and email to continue.";
}
}
}

?>

<div id="content" class="hop" style="min-height:220px;">

<div id="body" style="min-height:200px;padding-right:340px;">
    <h2>Sign up to download your photos</h2>
    <p>Complete the registration form</p>
<?php 
if($errorStr != ""){echo "<p style="color:#F00;">" . $errorStr . "</p>";}
?>
<form name="hop" class="competition" method="post" action="">
        <input type="text" value="Name" class="contact-name" name="txtName" /> <input type="text" value="Email Address" class="contact-email" name="txtEmail" /> <input type="submit" value="SUBMITamp;gt;" class="submit" /></form>
</div>
  

Комментарии:

1. ах, я пропустил это, ему нужно отправить электронное письмо и вставить электронное письмо в db. если электронное письмо есть, отправьте несколько другое электронное письмо, в противном случае отправьте приветственное электронное письмо и добавьте электронное письмо в db.