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

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

1 голос
/ 23 апреля 2011

Мой друг попросил меня изменить код для своей контактной формы. Я не знаю 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'] != "" && $_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="SUBMIT&gt;" class="submit" /></form>
</div>

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

Спасибо.

Ответы [ 4 ]

2 голосов
/ 23 апреля 2011

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

вы должны использовать функцию почты 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");
0 голосов
/ 23 апреля 2011

Вы можете попробовать: (заменить 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'] != "" && $_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="SUBMIT&gt;" class="submit" /></form>
</div>
0 голосов
/ 23 апреля 2011
$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.com\r\n");
echo "<script>window.location = 'http://www.thankyoupageishere.com';</script>";

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

0 голосов
/ 23 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...