2012-04-28 1 views
0

나는 오류 (reg_add_fail.php)가있을 때 나는 여전히 이메일을 받는다는 것을 발견했다. 클라이언트가 reg_add_fail.php로 이동하면 스크립트가 나를 이메일로 보내지 못하게 할 수 있습니까? 혼동 ...오류가 발생하면 PHP 스크립트에서 FAIL에 대한 전자 메일 경고를 중지하려고합니다.

나는 스크립트를 응축하기 위해 단순화했다.

감사합니다.

에릭

<? 

$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 ($result) { 
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

당신이 header() 스크립트가 즉시 실행을 중지 의미하지 않는다 전화해서 리디렉션

header("location: reg_add_fail.php"); 
exit(); 

exit()를 넣습니다. 전화는 exit()입니다.

+0

내가 노력하고 내가 여전히 이메일을 얻었다. 이 섹션을 스크립트 상단으로 옮기면 어떨까요? – Erik

0

코드에서 PHP 메일() 함수가 IF 문 외부에서 호출되므로 항상 전자 메일을받습니다.

오류없이 쿼리가 실행될 때만 전자 메일을 보내려면 if 문 안에 mail()을 넣습니다!

PHP 코드 전체보기 수정 됨

if ($result) { 
    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 
} 

:

<?php 

// Email Recipient 
$to = '[email protected]'; 

// Email Subject 
$subject = 'New Homeless Connection'; 


// Email Message 
$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"><a href="http://www.41q.org/admin/" title="">http://www.41q.org/admin/</a></td> 
     </tr> 
    </table> 
    <br> 
    <br> 
    </body> 
</html>'; 

// Email Headers 
$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") ; 

// Prepare Database Query 
$order = " 
    INSERT INTO reg_add (
    submit_date, 
    connect_date, 
    reg, 
    first_name 
) 
    VALUES (
    '".$submit_date."', 
    '".$_POST['connect_date']."', 
    '".$_POST['reg']."nv', 
    '".$_POST['first_name']."' 
)"; 

// Query Database 
$result = mysql_query($order); 


// Check If the result is valid 
if ($result) { 

    // send email 
    mail($to, $subject, $msg, $headers); 

    // prepare and direct the user to the reg_add_success Page 
    $reg =   $_REQUEST['reg'] ; 
    $first_name = $_REQUEST['first_name']; 
    header("location: reg_add_success.php?reg=" . urlencode($reg) . "&first_name=" . urlencode($first_name)); 

} 
else { 

    // send the user to the reg_add_fail Page 
    header("location: reg_add_fail.php"); 

    // exit from the script 
    exit(); 

} 

?> 
+0

배치해야하는 특정 위치가 있습니까? – Erik

+0

이 게시물의 변경 사항으로 스크립트를 업데이트했습니다. 내가 실패 할 때 나는 여전히 이메일을 받고있다. 아주 이상한. – Erik

+0

나는이 섹션을 스크립트의 맨 위로 옮겨 보았지만 제대로 작동했지만 지금은 좋은 이메일을받지 못했습니다. – Erik