2016-07-20 17 views
-2

Ich habe Dutzende von Posts zu diesem Thema gesehen und es kommt im Grunde auf eine Variable nicht deklariert oder einen Wert gegeben. Aber ich bin 100% sicher, es ist das gleiche und erklärt.Undefined Index in PHP mit Textarea

Ich habe ein grundlegendes Kontaktformular in HTML und ich möchte, dass es mir und E-Mail sendet, wenn jemand den Absenden-Button drückt. Ich debugge den Code auch, um zu sehen, was das Problem ist. Das einzige Problem, das es finden kann, ist, dass es eine Undefined Index gibt, die zu meinem Textbereich gehört.

Ich weiß, dass der Name der Textarea muss der gleiche sein wie der Name auf meiner $_POST in der PHP. Bitte sehen Sie sich die beiden Code-Abschnitte an und sagen Sie mir, ob Sie sehen können, warum die Informationen nicht aus meinem Textbereich abgerufen werden. Der Name lautet 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); 
} 

?> 

Wie Sie die Namen noch identisch sind zu sehen, wenn ich die Daten eintragen die folgende Anzeige kommt.

int (8) string (29) "Undefiniert Index: message-Bereich" string (58) "/ Hermes/bosnaweb25a/b2294/gefolgt von ein bisschen mehr Informationen und meine Fehler angezeigt wird: [" message“ =]> NULL} keine Meldung erkannt.

ich habe ehrlich gesagt keine Ahnung, warum dies nicht abgeholt wird, kann jemand mit mehr Erfahrung meines Fehler hervorheben?

EDIT 1

Das hat nichts damit zu tun Bindestriche/Bindestriche, da ich meinen Code bearbeitet habe, wie Sie unten sehen können. Es ist auch wichtig zu beachten, dass, wenn ich dies zu Rohtext ändert es immer noch nicht funktioniert, immer noch so tut, als ob es keine Daten aus dem Textfeld gibt.

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

es mit einem harten codierten Getestet Wert arbeitet so hat es der Variablenname sein. Es ist nur seltsam, dass es nur im Textfeld passiert.

+0

Tipp: wenn einige Elemente * sind * vorgelegt werden und andere nicht, einen genauen Blick auf das, was der Unterschied zwischen ihnen ist, und diesen Unterschied entfernen. – deceze

+0

Versuchen Sie, den 'Nachrichtenbereich' in einen Namen ohne Bindestrich umzubenennen. – Marki555

+0

Danke Jungs, schaut mal rein. Ich habe den Bindestrich/dash von meiner HTML und PHP entfernt, aber immer noch die gleichen Fehler gerade jetzt sagen, „Undefined index: Message“ Shame immer noch das Problem zu bekommen. – CardDeath

Antwort

0

Sie scheinen ein zufälliges form="" Attribut in der <textarea></textarea>

haben, wenn Sie es auf die folgenden es funktionieren sollte geändert werden.

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

Im Hinblick auf die Überprüfung auf $ message nicht mit ($message == null) arbeiten, sollten Sie empty() es verwenden, um zu überprüfen, wie die NULL und "" fangen.

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

Im Allgemeinen ist ein 'Form' Attribut kein Problem; Es ist nur ein Problem, wenn die Form, auf die das Attribut verweist, nicht existiert. In diesem Fall liegt das daran, dass das Formular "name = contact-me-form" hat, wenn es eine * id * sein muss. - Also, fehlende Erklärung, aber es ist * das Problem. – deceze

+1

das Formular Attribut aus dem Textbereich entfernt und ich änderte die Kontakt-me-Form zu einem id aber noch kein Ergebnis. – CardDeath

0

Hier ist Ihre Lösung ersetzen Sie einfach unter Zeile mit Ihrem Text-Vorwahl.

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

hier ist es nicht notwendig form="contact-me-form" Text.

+0

Entfernt dies und den type = "text", aber immer noch kein Ergebnis. Danke für den Versuch. – CardDeath

0

Vielen Dank für Ihre Hilfe und ich fand das Problem und es scheint zu funktionieren. Ich habe die E-Mail noch nicht erhalten (möglicherweise schreckliches vietnamesisches Internet).

Das Problem war, dass meine Variablen definiert als $variable = "" nicht als null gesetzt wurden, wie ich dachte. Ich hatte durch zu gehen und = null an alle meine Variablen zuweisen und es schien, um den Fehler zu umgehen.