이 문제에 관해 수십 개의 게시물을 보았습니다. 기본적으로 선언되지 않거나 값이 제공되지 않는 변수가 있습니다. 그러나 나는 그것이 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: * </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: * </label><br>
<input class="full-box" type="email" name="email" spellcheck="false" required><br>
<label name="subject">Subject: </label><br>
<input class="full-box" type="text" name="subject"><br>
<label name="message">Message: * </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: * </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: * </label><br>
<input class="full-box" type="email" name="email" spellcheck="false" required><br>
<label name="subject">Subject: </label><br>
<input class="full-box" type="text" name="subject"><br>
<label name="message">Message: * </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
는 하드 코드 값이 변수 이름이어야한다 그래서 작품을 테스트. 텍스트 영역에서만 발생한다는 것은 이상한 일입니다.
팁 : 일부 항목 *이 제출되고 다른 항목이 제출되지 않은 경우, 그 차이점을 자세히 살펴보고 그 차이를 제거하십시오. – deceze
'message-area'의 이름을 하이픈없이 바꾸십시오. – Marki555
감사합니다. 들여다 보았습니다. 내 HTML과 PHP에서 하이픈/대시를 제거했지만 여전히 동일한 오류가 이제는 "정의되지 않은 색인 : messagearea"라고 표시됩니다. 여전히 문제가 발생하고 있습니다. – CardDeath