2017-07-09 20 views
1

ストレートポイント。私は自分のウェブサイトで連絡フォームを設定しようとしていますが、動作させるのに苦労しています。また、ここでは多くの関連トピックを読んでいます。私はチュートリアルに従ったので、このトピックについてよく知っています。私は最近php.iniファイルが正しく設定されていると確信しています。(最近は迷惑メールになってしまいましたが)。私がコードを変更するまでは。遅かれ早かれ変更が必要でした。不思議なことに、電子メールを送信するときに、変数を指定せずにハードコードされた詳細で実行しました。しかし、私は変数を実装すると、それは動作を停止しました。明らかに、変数を使ってユーザーの入力を処理するにはPHPが必要です。 PHPにユーザーの入力を読み込ませるには?私は最も重要な部分は、入力タグに属性name="something"を使用していると思います。PHPサーバー経由で電子メールを送信

関連するコードの共有:

PHP:

<?php 

$fullName = $errorMsg = $sucMsg = ""; 
$errMsg = $email = $subject = $emailErr = $message = ""; 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

if (isset($_POST['submit'])) { 
    $fullName = test_input($_POST['fullName']); 

    if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { 
     $emailErr = "Your email address is not valid !";   
    } else { 
    $email = $_POST['email']; 
    } 
    $subject = test_input($_POST['subject']); 
    $message = test_input($_POST['message']); 

if($emailErr == "") { 
     $emailTo = "[email protected]"; 
     $headers = "From ".$fullName." ".$email." via contact form"; 
     $headers .= "Reply-To: ".$email; 
     $headers .= "Return-Path: [email protected]\r\n"; 
     $headers .= "CC: [email protected]\r\n"; 
     $headers .= "BCC: [email protected]\r\n"; 

     if (mail($emailTo, $subject, $message, $headers)) { 
      $sucMsg = "<p>The email was sent successfully !</p>"; 
     } else { 
      $errMsg = "<p>The email could not be sent !</p>"; 
     } 
} 

} 
?> 

HTML:

<div class="container" id="form"> 

<div id="successMsg" class="alert alert-success" role="alert"><?php 
echo $sucMsg; ?></div> 
<div id="errMsg" class="alert alert-danger" role="alert"><?php echo 
$errMsg; ?></div> 
<form method="POST" action="contact.php"> 
<fieldset class="form-group"> 
    <label for="fullName">Full name</label> 
    <input type="text" class="form-control" name="fullName" 
id="fullName" placeholder="full name" required> 
</fieldset> 
<fieldset class="form-group"> 
    <label for="email">Email</label> 
    <input type="email" id="email" placeholder="email" class="form- 
control" required> 
    <small id="emailHelp" name="email" class="form-text text-muted">I 
won't share your email with anyone</small> 
</fieldset> 
<fieldset class="form-group"> 
    <label for="subject">Subject</label> 
    <input type="text" class="form-control" name="subject" id="subject" placeholder="subject" required> 
</fieldset> 
<fieldset class="form-group"> 
    <label for="message">Your message</label> 
    <input type="text" class="form-control" name="message" id="message" placeholder="message" required> 

<input type="submit" id="submit" class="btn btn-success" value="Submit"> 

</fieldset> 
</form> 
</div> 

UPDATE:それは終わるませんので、私はPHPのコードを変更する必要がありますどのように

ジャンクメールで?

+0

変数を印刷して値を表示しようとしましたか? – Marvin

+0

ヘッダーはすべて\ r \ nで終わる必要があります。 –

+0

'print_r($ variable)'は正しいですか? –

答えて

1

送信ボタンにname = "submit"を追加します。 Formsはname属性をpost配列に渡します。だから、あなたのためのコードのテスト:$_POST['submit']ための有効な

if (isset(`$_POST['submit']`)) { 
$fullName = test_input($_POST['fullName']); 

..isn'tが設定されていません。

<input type="submit" id="submit" name="submit" class="btn btn-success" value="Submit"> 
+0

@MarkyMark、あなたはまたあなたの* email *入力フィールドに 'name =" email "'を追加するのを忘れました。 –

+0

実際に私はそれを誤って 'small'タグに入力しました。それを指摘してくれてありがとう! –

+0

送信ボタンに「名前」も必要なのは知りませんでした。それを修正します。 –

関連する問題