2016-07-20 6 views
-2

이 문제에 관해 수십 개의 게시물을 보았습니다. 기본적으로 선언되지 않거나 값이 제공되지 않는 변수가 있습니다. 그러나 나는 그것이 100 % 확실하고 선언했다.PHP에서 텍스트 영역을 사용하는 정의되지 않은 색인

저는 HTML로 기본 문의 양식을 가지고 있으며, 누군가가 제출 버튼을 클릭하면 저에게 이메일을 보내고 싶습니다. 문제가 무엇인지 알아보기 위해 코드를 디버깅하고 있습니다. 유일한 문제는 내 텍스트 영역에 속하는 Undefined Index입니다.

나는 텍스트 영역의 이름이 PHP에서 내 $_POST의 이름과 같아야한다는 것을 알고 있습니다. 코드의 두 섹션을 살펴보고 텍스트 영역에서 정보를 가져 오지 않는 이유를 알 수 있는지 말해주십시오. 이름은 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); 
} 

?> 

편집 2

는 하드 코드 값이 변수 이름이어야한다 그래서 작품을 테스트. 텍스트 영역에서만 발생한다는 것은 이상한 일입니다.

+0

팁 : 일부 항목 *이 제출되고 다른 항목이 제출되지 않은 경우, 그 차이점을 자세히 살펴보고 그 차이를 제거하십시오. – deceze

+0

'message-area'의 이름을 하이픈없이 바꾸십시오. – Marki555

+0

감사합니다. 들여다 보았습니다. 내 HTML과 PHP에서 하이픈/대시를 제거했지만 여전히 동일한 오류가 이제는 "정의되지 않은 색인 : messagearea"라고 표시됩니다. 여전히 문제가 발생하고 있습니다. – CardDeath

답변

0

당신은 당신이 그것을 작동합니다 다음으로 변경하는 경우 <textarea></textarea>

에서 임의의 form="" 속성을 갖고있는 것 같다. 그 NULL""를 잡을 것으로하지 ($message == null) 작업 $ 메시지에 대한 확인과 관련하여

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

, 당신은 그것을 확인하기 위해 empty()를 사용해야합니다.

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

일반적으로'form' 속성은 문제가 아닙니다. 속성이 참조하는 양식이 존재하지 않는 경우에만 문제가됩니다. 이 경우, 양식이 *'id' * 일 필요가있을 때 양식에'name = contact-me-form'이 있기 때문입니다. - 설명이 부족하지만, 문제는 * 문제입니다. – deceze

+1

텍스트 영역에서 form 속성을 제거하고 contact-me-form을 id로 변경했지만 여전히 결과가 없습니다. – CardDeath

0

다음은 텍스트 영역 코드로 아래 행을 대체하십시오.

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

여기서는 form="contact-me-form" 텍스트 일 ​​필요는 없습니다.

+0

this와 type = "text"를 제거했지만 여전히 결과가 없습니다. 시도해 줘서 고마워. – CardDeath

0

도움을 주셔서 감사 드리며 문제를 발견하고 작동하는 것으로 보입니다. 나는 아직 이메일을받지 못했다. (아마도 끔찍한 베트남 인터넷).

문제점은 내 변수가 $variable = ""으로 정의 된 것이 내가 생각한대로 null로 설정되지 않았기 때문입니다. 나는 모든 변수에 = null을 할당해야했고 오류를 우회하는 것처럼 보였다.