2012-09-19 3 views
0

코드에 무엇이 잘못되었는지 알아 냈습니다. 나는 계속 $_POST을 얻지 못하고있다. 이건 내 HTML 코드입니다 :

<form id="EmailForm" action="mailForm.php" method="post" 
    onsubmit="validateForm()" enctype="text/plain"> 
    <div> 
    Name: <input type="text" value="" name="name" size="30" /> 
    Email: <input type="text" value="" name="email" size="30" /> 
    Subject: <input type="text" value="" name="subject" size="60" /> 
    Message: <br /> 
    <textarea name="message" rows="5" cols="60"></textarea> 
    <input type="submit" value="Send" /> 
    </div> 
</form> 

이 내 mailForm.php 코드 :

<?php 
$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$subject = $_POST['subject']; 
$mailsent = mail("[email protected]", "$subject", "$message\n\n$name\n$email", ""); 
if ($mailsent) { 
echo ("Your email has been sent. Thank you for using our mail form. <br />"); 
echo ("Name: ".$name."<br />"); 
echo ("Email: ".$email."<br />"); 
echo ("Subject: ".$subject."<br />"); 
echo ("Message: ".$message); 
} 
?> 

지금까지 내가 이메일을 전송받을 수 있지만 모든 이메일은 비어 있습니다. 이름이나 이메일이 표시되지 않지만 웹 호스팅 서비스에서 기본 이름으로 변경됩니다. 이름 없음, 이메일 없음, 제목 없음, 메시지 없음. 내가 echo $_POST["name"]; echo $_POST["email"]을 시도했지만 빈 페이지를 가지고

Your email has been sent. Thank you for using our mail form. 
Name: 
Email: 
Subject: 
Message: 

다음 mailForm.php에서, 나는 유일한 다음 얻었다.

+0

코드가 헤더 중독에 취약하며 일단 살면 스팸 메일을 보내는 데 사용됩니다. –

+0

@WebnetMobile : 헤더 필드를 사전 처리하고 PHP 파일, 난 그냥 내 질문에 관련이 없기 때문에이 포럼에 넣어하지 않았다. 어쨌든, 헤드 업을위한 thx. – mline86

답변

1

는 그냥 enctype="text/plain" 제거 : <form> 태그에 enctype에 대한 PHP에서

<form id="EmailForm" action="mailForm.php" method="post" onsubmit="validateForm()"> 

유효한 값은 다음과 같습니다

application/x-www-form-urlencoded 
multipart/form-data 
+0

감사합니다. enctype없이 작동합니다. – mline86

1

당신은 당신의 <form> 태그에이 경우 enctype="text/plain"를 사용하지 말아야 ...

php 해당 코드를 사용하는 경우 양식 요소가 $_POST에 표시되지 않습니다. .

PHP에는 $HTTP_RAW_POST_DATA이라는 변수가 있습니다.이 변수는 enctype="text/plain"을 사용할 때 게시 된 데이터를 간단한 문자열로 저장합니다.

그래서 HTML 코드에 <form> 태그는 다음과 같아야합니다 <form> 태그

<form id="EmailForm" action="mailForm.php" method="post" onsubmit="validateForm()"> 

유효한 enctype 값은 다음과 같습니다

응용 프로그램/x-www-form-urlencoded를 : 기본.

multipart/form-data : 공백은 "+"기호로 변환되지만 특수 기호는 변환되지 않습니다. 문자 인코딩 됨 문자는 인코딩되지 않습니다. 이 값은

텍스트/일반 파일 업로드 컨트롤이 양식을 사용할 때 필요합니다 공백을 "+"문자로 변환됩니다 만, 특수 문자는 다른 두 방법 text/plain를 제외하고

을 인코딩하지 않습니다 $ _POST의 배열로 사용할 수 있습니다.

관련 문제