#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.