2016-07-20 1 views
-2

私はこの問題について何十件もの投稿を見てきましたが、基本的に宣言されていない変数や値が与えられていません。しかし、私はそれが同じで、宣言されたことを100%確信しています。テキストエリアを使用したPHPの未定義インデックス

私はHTMLで基本的な連絡先フォームを持っています。誰かが送信ボタンを押したときに私と電子メールを送信します。問題の内容を確認するためにコードをデバッグしています。唯一の問題は、私のテキストエリアに属するUndefined Indexがあることです。

私は、テキストエリアの名前がPHPの私の$_POSTの名前と同じでなければならないことを知っています。コードの2つのセクションを見て、なぜ私のテキストエリアから情報を取得しないのか分かりますか教えてください。名前はmessage-areaです。

HTML

<form action="mail.php" method="post" name=contact-me-form > 
    <label name="firstname secondname">Name: *&nbsp;</label><br> 
    <input class="half-box" type="text" name="firstname" required > 
    <input class="half-box" type="text" name="secondname" required ><br> 
    <p class="first-name">First Name</p> 
    <p class="second-name">Last Name</p><br> 
    <label name="email">Email Address: *&nbsp;</label><br> 
    <input class="full-box" type="email" name="email" spellcheck="false" required><br> 
    <label name="subject">Subject:&nbsp;</label><br> 
    <input class="full-box" type="text" name="subject"><br> 
    <label name="message">Message: *&nbsp;</label><br> 
    <textarea name="message-area" form="contact-me-form" type="text" placeholder="Please enter your message"></textarea> 
    <button name="submit" type="submit" value="Submit">Submit</button> 
</form> 

PHP

<?PHP 

    $to = ""; 
    $from = ""; 
    $first_name = ''; 
    $last_name = ''; 
    $subject = ''; 
    $message = null; 

error_reporting(-1); 
ini_set('display_errors', 'On'); 
set_error_handler("var_dump"); 

if(isset($_POST['submit'])){ 
     $to = '[email protected]'; 
     $from = $_POST['email']; 
     $first_name = $_POST['firstname']; 
     $last_name = $_POST['secondname']; 
     $subject = $_POST['subject']; 
     $message = $_POST["message-area"]; 
if($message == null){echo "no message detected";} 

$headers = "From: " . $from; 
$headers = "From:" . $to; 
mail($to,$subject,$message,$headers); 
} 

?> 

あなたは、私はそれが次のように表示する立ち上がるデータを提出する際に名前がまだ同じである見ることができるように。

INT(8)文字列(29) "不定度:メッセージ領域" 列(58) "/エルメス/ bosnaweb25a/b2294 /ビット以上の情報が続くと私のエラーが表示されます:[" メッセージ」 ] => NULL}が検出されないメッセージ。

私は正直もっと経験を持つ誰もが私のミスを強調表示することができ、これはピックアップされていない理由はわかりません?

EDIT 1

これはとは関係ありません次のようにコードを編集したので、ダッシュ/ハイフンを使用します。 これを元のテキストに変更してもまだ動作しない場合でも、テキストエリアからのデータがないかのように動作することに注意することも重要です。

HTML

    <form action="mail.php" method="post" id=contact-me-form > 
        <label name="firstname secondname">Name: *&nbsp;</label><br> 
        <input class="half-box" type="text" name="firstname" required > 
        <input class="half-box" type="text" name="secondname" required ><br> 
        <p class="first-name">First Name</p> 
        <p class="second-name">Last Name</p><br> 
        <label name="email">Email Address: *&nbsp;</label><br> 
        <input class="full-box" type="email" name="email" spellcheck="false" required><br> 
        <label name="subject">Subject:&nbsp;</label><br> 
        <input class="full-box" type="text" name="subject"><br> 
        <label name="message">Message: *&nbsp;</label><br> 
        <textarea name="messagearea" type="text" placeholder="Please enter your message"></textarea> 
        <button name="submit" type="submit" value="Submit">Submit</button> 
       </form> 

PHP

<?PHP 

$to = ""; 
$from = ""; 
$first_name = ''; 
$last_name = ''; 
$subject = ''; 
$message = null; 

error_reporting(-1); 
ini_set('display_errors', 'On'); 
set_error_handler("var_dump"); 

if(isset($_POST['submit'])){ 
    $to = '[email protected]'; 
    $from = $_POST['email']; 
    $first_name = $_POST['firstname']; 
    $last_name = $_POST['secondname']; 
    $subject = $_POST['subject']; 
    $message = $_POST["messagearea"]; 
if($message == null){echo "no message detected";} 

$headers = "From: " . $from; 
$headers = "From:" . $to; 
mail($to,$subject,$message,$headers); 
} 

?> 

EDIT 2

は、ハードコーディングされた値は、それが変数名である必要がありますので、作品とそれをテストされています。テキストエリアでしか起こらないのは奇妙なことです。

+0

ヒント:一部のアイテム*が送信されていて、残りのアイテムが送信されていない場合は、それらの違いが何であるかをよく見て、その差を取り除いてください。 – deceze

+0

'message-area'の名前をハイフンなしの名前に変更してみてください。 – Marki555

+0

ありがとう、見てみました。私はHTMLとPHPからハイフン/ダッシュを削除しましたが、今でも同じエラーが「未定義インデックス:messagearea」と表示されています。 – CardDeath

答えて

0

あなたはそれが動作するはず次のように変更した場合<textarea></textarea>

にランダムform=""属性を持っているようです。 ($message == null)で作業していない$メッセージのチェックに関しては

<textarea name="message-area" type="text" placeholder="Please enter your message"></textarea> 

ことがNULL""をキャッチするように、あなたはそれをチェックするためにempty()を使用する必要があります。

if (empty($message)) { 
    echo "no message detected"; 
} 
+0

一般に、 'form'属性は問題ではありません。属性が参照しているフォームが存在しない場合にのみ問題になります。この場合は、* id *にする必要があるときにフォームに 'name = contact-me-form'があるためです。 - 説明が欠けていますが、問題は*です。 – deceze

+1

テキストエリアからフォーム属性を削除しました。私はcontact-me-formをidに変更しましたが、結果はありません。 – CardDeath

0

あなたの解決策は、次の行をテキストエリアコードに置き換えることです。

<textarea name="message-area" placeholder="Please enter your message"></textarea> 

ここでは不要ですform="contact-me-form"テキスト。

+0

これとtype = "text"は削除されますが、結果は削除されません。試してくれてありがとう。 – CardDeath

0

ご協力いただきありがとうございました。問題を発見したところ、問題なく動作しているようです。私は実際に電子メールをまだ受け取っていない(おそらくひどいベトナムのインターネット)。

問題は、$variable = ""として定義された変数が、私が思ったようにnullに設定されていないことでした。私はすべての変数に= nullを割り当てなければならず、エラーを回避するように見えました。

関連する問題