0

エラー (reg_add_fail.php) が発生した場合でも、まだ電子メールを受信して​​いることを発見しました。クライアントが reg_add_fail.php に向けられている場合、スクリプトが私に電子メールを送信しないようにすることは可能ですか? 混乱している...

スクリプトを簡略化して要約しました。

どうもありがとう。

エリック

<?

$to = 'newreg@41q.org';
$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
}
?>
4

2 に答える 2

0

exit()リダイレクトの後に置く

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

呼び出したからといっheader()て、スクリプトの実行がすぐに停止するわけではありません。呼び出しexit()ます。

于 2012-04-28T01:37:56.443 に答える
0

コードでは、PHP の mail() 関数が IF ステートメントの外で呼び出されているため、常に電子メールを受け取ります。

クエリがエラーなしで実行された場合にのみ電子メールを送信するには、mail() を if ステートメント内に配置します。

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 = 'newreg@41q.org';

// 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();

}

?>
于 2012-04-28T01:46:57.183 に答える