1

このフォームで動作する非常にシンプルだが効果的な PHP フォーム ハンドラーが必要です。

<form id="contact" method="post" action="contact_handle.php">
<label for="name">Name:</label>
<input type="text" class="text_style" placeholder="John Doe" name="name" /><br />
<label for="email">Email:</label> 
<input type="email" class="text_style" placeholder="email@example.com" name="email" /><br />   
<label for="message">Subject:</label>
<textarea class="areawidth" rows="4" name="message" /></textarea><br />
<button id="contactbutton" type="submit">Submit</button>
</form>  

これは私が現在持っているものですが、メールを送信せず、意図したようにリダイレクトしません。そして、私は何が起こっているのか理解できないようです。

<?php  
$invalid = '';
$my_email = 'my@email.com'; 

// Validate input:
if(empty($_POST['name'])  ||
   empty($_POST['email']) ||
   empty($_POST['message']))
{
    $invalid.= "\n All fields are required";
}
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];   

// Validate email:
if (!preg_match(
"/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
$email))
{
    $invalid .= "\n Invalid email address";
}

// Send email if no errors detected:
if( empty($invalid))
{
$to = $my_email;
$subject = "Contact form submission: $name";
$body = "You have received a new message. ".
" Here are the details:\n Name: $name \n ".
"Email: $email\n Message:\n $message";
$headers = "From: $email\n";
$headers .= "Reply-To: $email";
mail($to,$subject,$body,$headers);  

//redirect to the thank you page:    
header('Location: contact_thanks.php');
}
?>    

送信されると、contact_handle.php が表示され、空白が表示され、リダイレクトに失敗します。

4

2 に答える 2

1

すべてのコードを提供している場合、問題はフォームがエラーをスローしていることです (テキストを に追加することによって、しかし、空でない$invalidことを処理するコードはありません。これを解決するには、最後の終了の後にこれを追加します。$invalid }

echo $invalid;
于 2012-04-17T21:53:32.687 に答える
1

リダイレクトはブラウザへの最初の出力でなければならないと思うので、それ以外が出力されている場合は機能しません。

ありがとうページにリダイレクトするのではなく、ありがとうページを含めてみませんか。

include 'contact_thanks.php';
于 2012-04-17T21:57:00.990 に答える