2012-04-28 7 views
2

Я пытаюсь сделать условное заявление, чтобы остановить уведомление по электронной почте при вызове fail.php. Прямо сейчас я получаю оповещение по электронной почте как для хороших, так и для неудачных результатов.Создание условного оператора для отправки оповещения по электронной почте

Я не хочу получать электронное письмо, если результат не удался. Должен ли я сделать два сценария или есть способ сделать эту работу совместной?

Благодаря

Вот раздел я имею в виду вместе со всем скриптом.

if (mysql_affected_rows($result) > 0) { 
mail($to, $subject, $msg, $headers); 
$reg =   $_REQUEST['reg'] ; 
$first_name = $_REQUEST['first_name']; 
header("location: reg_add_success.php?reg=" . urlencode($reg) . "&first_name=" . urlencode($first_name)); 
} 
else { 
header("location: reg_add_fail.php"); 
exit(); // as sugested by John Conde 
} 

<? 

$to = '[email protected]'; 
$subject = 'New Homeless Connection'; 
$msg = "<html> 
<head> 
<title>New Homeless Connection</title> 
</head> 

<body> 
<table cellspacing=\"0\" cellpadding=\"10\" border=\"1\" align=\"left\"> 
<tr> 
<td align=\"left\" width=\"150px\">Registery No.:</td> 
<td align=\"left\"> $reg</td> 
</tr> 
<tr> 
<td align=\"left\">First Name:</td> 
<td align=\"left\">$first_name </td> 
</tr> 
<tr> 
<td align=\"left\">Connection Date:</td> 
<td align=\"left\"$>$connect_date</td> 
</tr> 
<tr> 
<td align=\"left\" colspan=\"2\">http://www.41q.org/admin/</td> 
</tr> 
</table> 
<br> 
<br> 
</body> 
</html> 
"; 

// Make sure to escape quotes 

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: Homeless' . "\r\n"; 

mail($to, $subject, $msg, $headers); 

date_default_timezone_set('America/Los_Angeles'); 
$submit_date = date("m/d/y g:i A") ; 

$order = "INSERT INTO reg_add (submit_date, 
connect_date, 
reg, 
first_name, 
) 

VALUES 

('$submit_date', 
'$_POST[connect_date]', 
'{$_POST[reg]}nv', 
'$_POST[first_name]')"; 

$result = mysql_query($order); 

if (mysql_affected_rows($result) > 0) { 
mail($to, $subject, $msg, $headers); 
$reg =   $_REQUEST['reg'] ; 
$first_name = $_REQUEST['first_name']; 
header("location: reg_add_success.php?reg=" . urlencode($reg) . "&first_name=" . urlencode($first_name)); 
} 
else { 
header("location: reg_add_fail.php"); 
exit(); // as sugested by John Conde 
} 
?> 
+1

вместо 'if ($ result)', используйте 'if (mysql_query ($ order))' – hjpotter92

+0

Не могли бы вы быть более понятными, что вы хотите? Вам не нужен адрес электронной почты, если значения не вставляются в базу данных? Вы не хотите иметь успех и неудачную страницу, а только одну страницу? –

+0

Получаете ли вы две письма об успехе? –

ответ

0

Если вы проверяете ваш код

// Make sure to escape quotes 

$headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: Homeless' . "\r\n"; 

mail($to, $subject, $msg, $headers); 

date_default_timezone_set('America/Los_Angeles'); 

Этот код уже отправки почты во внимание меньше результата.

Вам просто нужно, чтобы удалить эту строку из топа кода

mail($to, $subject, $msg, $headers); 

и ваш код будет работать нормально.

+0

Я не могу исключить заголовок. – Erik

+0

У вас была эта строка два раза в коде. Эта первая строка отправляет почту независимо от результата, либо она истинна, либо ложна. –

+0

Спасибо за ваш. Очень благодарен. – Erik

2

Удалите первый экземпляр mail($to, $subject, $msg, $headers);.

Затем для хорошей меры проверьте количество затронутых строк, а не true/false (хотя оба должны работать).

if (mysql_affected_rows($result) > 0) { 

} 
+0

Запрос вставляется в базу данных. Результатом является либо «истина», либо «ложь». Поэтому его утверждение if правильное. ** РЕДАКТИРОВАТЬ ** Намного лучше. –

+0

Просто увидел весь код. Мог бы поклясться, что этого не было, когда я написал ответ. Мой ответ обновлен. – dtbarne

+1

+1 от меня.Хорошо видеть ответ, чтобы не проверить, верен ли результат $ result, но вместо этого видно, были ли затронуты какие-либо строки. – Menztrual

0

Окончательный код, любезно проверить ITE

<? 

$to = '[email protected]'; 
$subject = 'New Homeless Connection'; 
$msg = "<html> 
<head> 
<title>New Homeless Connection</title> 
</head> 

<body> 
<table cellspacing=\"0\" cellpadding=\"10\" border=\"1\" align=\"left\"> 
<tr> 
<td align=\"left\" width=\"150px\">Registery No.:</td> 
<td align=\"left\"> $reg</td> 
</tr> 
<tr> 
<td align=\"left\">First Name:</td> 
<td align=\"left\">$first_name </td> 
</tr> 
<tr> 
<td align=\"left\">Connection Date:</td> 
<td align=\"left\"$>$connect_date</td> 
</tr> 
<tr> 
<td align=\"left\" colspan=\"2\">http://www.41q.org/admin/</td> 
</tr> 
</table> 
<br> 
<br> 
</body> 
</html> 
"; 

// Make sure to escape quotes 

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: Homeless' . "\r\n"; 

date_default_timezone_set('America/Los_Angeles'); 
$submit_date = date("m/d/y g:i A") ; 

$order = "INSERT INTO reg_add (submit_date, 
connect_date, 
reg, 
first_name, 
) 

VALUES 

('$submit_date', 
'$_POST[connect_date]', 
'{$_POST[reg]}nv', 
'$_POST[first_name]')"; 

$result = mysql_query($order); 

if (mysql_affected_rows($result) > 0) { 
mail($to, $subject, $msg, $headers); 
$reg =   $_REQUEST['reg'] ; 
$first_name = $_REQUEST['first_name']; 
header("location: reg_add_success.php?reg=" . urlencode($reg) . "&first_name=" . urlencode($first_name)); 
} 
else { 
header("location: reg_add_fail.php"); 
exit(); // as sugested by John Conde 
} 
?> 
0

В настоящее время я вижу некоторые SQL инъекции плюс недопустимый запрос first_name, дополнительные , в конце, константы, используемые в ключах сообщений массива, сочетание запроса и пост, большой HTML блок кода и никаких проверок на достоверность переданных значений.

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

Heres чистый из кода надеюсь, что это помогает:

<?php 

$to = '[email protected]'; 
$subject = 'New Homeless Connection'; 

if($_SERVER['REQUEST_METHOD']=='POST'){ 

    if(isset($_POST['first_name']) && strlen($_POST['first_name'])>1){ 
     $first_name=$_POST['first_name']; 
    } 

    if(isset($_POST['reg']) && strlen($_POST['reg'])>1){ 
     $reg=$_POST['reg']; 
    } 

    if(isset($_POST['connect_date']) && strlen($_POST['connect_date'])>1){ 
     $connect_date=$_POST['connect_date']; 
    } 

    if(!isset($first_name) || !isset($reg) || !isset($connect_date)){ 
     header("location: reg_add_fail.php"); 
     exit(); 
    } 
}else{ 
//the page the post from 
header("location: reg_form.php"); 
exit(); 
} 

$msg=<<<EMAIL 
<html> 
<head> 
<title>New Homeless Connection</title> 
</head> 

<body> 
<table cellspacing="0" cellpadding="10" border="1" align="left"> 
<tr> 
<td align="left" width="150px">Registery No.:</td> 
<td align="left">$reg</td> 
</tr> 
<tr> 
<td align="left">First Name:</td> 
<td align="left">$first_name </td> 
</tr> 
<tr> 
<td align="left">Connection Date:</td> 
<td align="left">$connect_date</td> 
</tr> 
<tr> 
<td align="left" colspan="2">http://www.41q.org/admin/</td> 
</tr> 
</table> 
<br> 
<br> 
</body> 
</html> 
EMAIL; 

// Make sure to escape quotes 
$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 
$headers .= 'From: Homeless' . "\r\n"; 

mail($to, $subject, $msg, $headers); 

date_default_timezone_set('America/Los_Angeles'); 
$submit_date = date("m/d/y g:i A") ; 

$order = "INSERT INTO reg_add (submit_date,connect_date, reg, first_name) 
      VALUES ('{$submit_date}',".mysql_real_escape_string($connect_date)."','".mysql_real_escape_string($reg)."nv','".mysql_real_escape_string($first_name)."')"; 

$result = mysql_query($order); 

header("Location: ./reg_add_success.php?reg=".urlencode($reg)."&first_name=".urlencode($first_name)); 
die; 
?> 
Смежные вопросы