すべての _POST データをループしてメール ヘッダー インジェクションを防止しようとしていますが、変数が検証に合格していません。スラッシュを含む「日付」フィールドがいくつかあり、一部のフィールドが空白になっている可能性があります。それが何か関係があるかどうかはわかりません。誰かが私のロジックの問題を見ることができますか? 「失敗」メッセージが表示され続けます。ありがとう。
if(isset($_POST['submit'])) {
$boolValidateOK = 1;
function safe( $name ) {
return( str_ireplace(array( "\r", "\n", "%0a", "%0d", "Content-Type:", "bcc:","to:","cc:" ), "", $name ) );
}
foreach($_POST as $value){
if(!safe($value)){
$boolValidateOK = 0;
}else{
$boolValidateOK = 1;
}
}
if($boolValidateOK == 1){
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$to...etc
$subject...etc
$message...etc
mail($to, $subject, $message, $headers);
$success_message = "win";
}else{
$error_message = "fail";
}
}