html 폼메일php 연결하기 채택완료
카멜리아
5년 전
조회 3,634
안녕하세요. 웹 관련 초보자 입니다ㅠㅠ.
html에 php를 연결시켜 메일을 보낼 수 있도록 해야해서, 인터넷에 찾아 집어넣었습니다.
전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다. 어떤 점이 잘못된건지 조언 부탁드려도 될까요?
contact.html
</p>
<p><body></p>
<p><form name="contactform" method="post" action="send.php" id="mail_form"></p>
<p> <div class="form_1 cf"></p>
<p> <ul></p>
<p> <li></p>
<p> <label for="first_name">Name</label></p>
<p> </li></p>
<p> <li></p>
<p> <input type="text" name="first_name" class="first_name" minlength="1" maxlength="50" required > </p>
<p> <!-- maxlegth는 최대 문자수 --></p>
<p> </li></p>
<p> </ul></p>
<p> </p>
<p> <ul></p>
<p> <li></p>
<p> <label for="form_tel">Tel</label></p>
<p> </li></p>
<p> <li></p>
<p> <input type="form_tel" name="form_tel" class="form_tel" maxlength="80" required ></p>
<p> </li></p>
<p> </ul></p>
<p> </div></p>
<p> </p>
<p> <div class="form_2 cf"></p>
<p> <ul></p>
<p> <li></p>
<p> <label for="form_fax">Fax</label></p>
<p> </li></p>
<p> <li></p>
<p> <input type="form_fax" name="form_fax" class="form_fax" maxlength="80" required ></p>
<p> </li></p>
<p> </ul></p>
<p> </p>
<p> <ul></p>
<p> <li></p>
<p> <label for="form_email">Email</label></p>
<p> </li></p>
<p> <li></p>
<p> <input type="form_email" name="form_email" class="form_email" maxlength="80" required ></p>
<p> </li></p>
<p> </ul></p>
<p> </div></p>
<p> </p>
<p> <ul class="f-address"></p>
<p> <li></p>
<p> <label for="form_address">Address</label></p>
<p> </li></p>
<p> <li></p>
<p> <input type="form_address" name="form_address" class="form_address" maxlength="80" required ></p>
<p> </li></p>
<p> </ul></p>
<p> </p>
<p> <ul></p>
<p> <li></p>
<p> <label for="comments">Inquiry</label></p>
<p> </li></p>
<p> <li></p>
<p> <textarea name="comments" cols="50" rows="10" required class="comments" style="resize:none;"></textarea></p>
<p> </li></p>
<p> </ul></p>
<p> <ul class="formmail_submit"></p>
<p> <li class="cf"></p>
<p> <button type="submit" value="전송하기" class="btn_submit">Send</button></p>
<p> <button name="재설정" type="reset" value="다시작성" class="btn_submit">Rewrite</button></p>
<p> </li></p>
<p> </ul></p>
<p> </form></p>
<p></body></p>
<p>
send.php
</p>
<p><?</p>
<p>$tomail = "xxx@naver.com";</p>
<p> </p>
<p>function error($text){</p>
<p> echo "</p>
<p> <script language=javascript></p>
<p> window.alert('$text')</p>
<p> history.go(-1)</p>
<p> <script>";</p>
<p> exit;</p>
<p>}</p>
<p> </p>
<p>function msg($text){</p>
<p> echo "</p>
<p> <script language=javascript></p>
<p> window.alert('$text')</p>
<p> top.location.href = 'contact.html'</p>
<p> <script>";</p>
<p> exit;</p>
<p>}</p>
<p> </p>
<p>if (!$first_name) {error('Please Write Your Name.');}</p>
<p>if (!$form_tel) {error('Please Write Your Tel.');}</p>
<p>if (!$form_fax) {error('Please Write Your Fax.');}</p>
<p>if (!$form_email) {error('Please Write Your Email.');}</p>
<p>if (!$form_address) {error('Please Write Your Address.');}</p>
<p>if (!$comments) {error('Please Write Inquiry.');}</p>
<p> </p>
<p>$mailheaders = "Return-Path: $email |r|n";</p>
<p>$mailheaders .= "From: $name <$email>|r|n";</p>
<p> </p>
<p>$body = "이름: $first_name |r|n";</p>
<p>$body = "전화번호: $form_tel |r|n";</p>
<p>$body = "팩스: $form_fax |r|n";</p>
<p>$body = "이메일: $form_email |r|n";</p>
<p>$body = "주소: $form_address |r|n";</p>
<p>$body = "내용: $comments |r|n";</p>
<p> </p>
<p>$result=mail($tomail, $body, $mailheaders);</p>
<p>if($result) {</p>
<p> msg('Mail has been sent successfully.');</p>
<p>}</p>
<p>else {</p>
<p> error('The mail has failed to send.');</p>
<p>}</p>
<p>?></p>
<p>
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
5년 전
1. <? → <?php 추천
2. send.php 파일 내용을 아래처럼 변경하고, 폼에서 입력한 값이 뜨는지 확인부터 해보세요.
</p>
<p>Input values = <?php print_r($_POST);</p>
<p>
3. 옛날 방식의 변수라 그렇습니다. 2번에 적은 변수를 사용해야 합니다.
</p>
<p>$first_name → $_POST['first_name'] // 또는 $_REQUEST['first_name'] (특성 이해하고 사용)</p>
<p>
4. |r|n → \r\n
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
카멜리아
5년 전
B
BiHon
5년 전
send.php 파일 내용을 더도 말고 덜도 말고 딱 아래처럼만 저장하면 됩니다.
[code]
Input values = <?php print_r($_POST);
[/code]
contact.html에서 아무 내용이나 입력하고, 전송하기 버튼을 눌렀을 때
화면에 Input values = ... 입력된 내용들 뜨면 정상입니다.
"전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다."라고 했기 때문에 확인용이었죠.
화면에 내용이 정상적으로 떴다면, 변수들을 모두 바꿔주면 됩니다.
그런데 " 내에서는 {}로 감싸주면 됩니다.
[code]
$body = "이름: {$_POST['first_name']}\r\n";
[/code]
그리고, $mailheaders에 $name, $email은 없으니 상단에 $name = '원하는 이름'; 추가,
$email은 $_POST['from_email'] 등 정상적인 값이 들어가도록 바꿔주면 됩니다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ Dealing with Forms (폼 다루기)
- https://www.php.net/manual/en/tutorial.forms.php
- http://docs.php.net/manual/kr/tutorial.forms.php
+ mail()
- https://www.php.net/manual/en/function.mail
- http://docs.php.net/manual/kr/function.mail.php
mail() 함수의 예제를 통해, 가장 간단한 코드로 메일 발송 테스트부터 해보면 됩니다.
환경에 따라 다양한 경우가 있어 이하 생략합니다.
[code]
Input values = <?php print_r($_POST);
[/code]
contact.html에서 아무 내용이나 입력하고, 전송하기 버튼을 눌렀을 때
화면에 Input values = ... 입력된 내용들 뜨면 정상입니다.
"전송 버튼을 누르면 그냥 흰바탕이 뜨면 send.php주소로 넘어가고 아무런 작동을 하지 않습니다."라고 했기 때문에 확인용이었죠.
화면에 내용이 정상적으로 떴다면, 변수들을 모두 바꿔주면 됩니다.
그런데 " 내에서는 {}로 감싸주면 됩니다.
[code]
$body = "이름: {$_POST['first_name']}\r\n";
[/code]
그리고, $mailheaders에 $name, $email은 없으니 상단에 $name = '원하는 이름'; 추가,
$email은 $_POST['from_email'] 등 정상적인 값이 들어가도록 바꿔주면 됩니다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
+ Dealing with Forms (폼 다루기)
- https://www.php.net/manual/en/tutorial.forms.php
- http://docs.php.net/manual/kr/tutorial.forms.php
+ mail()
- https://www.php.net/manual/en/function.mail
- http://docs.php.net/manual/kr/function.mail.php
mail() 함수의 예제를 통해, 가장 간단한 코드로 메일 발송 테스트부터 해보면 됩니다.
환경에 따라 다양한 경우가 있어 이하 생략합니다.
�
카멜리아
5년 전
진심으로 감사합니다.
시도해보겠습니다!
시도해보겠습니다!
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
이렇게나 친절하게 설명해주셧지만, 완전히 이해하지를 못해서요ㅠㅠ..
괜찮으시다면 조금 더 봐주실 수 있을까요?
1. <? 에서 <?php 로 수정했습니다.
2. 어느부분에 저렇게 변경해야하는지 모르겠습니다...
3. 밑에 두줄대로 수정하는게 맞나요?
[code]
if $_POST['first_name'] {error('Please Write Your Name.');}
if $_POST['form_tel'] {error('Please Write Your Tel.');}
if $_POST['form_fax'] {error('Please Write Your Fax.');}
if $_POST['form_email'] {error('Please Write Your Email.');}
if $_POST['form_address'] {error('Please Write Your Address.');}
if $_POST['comments'] {error('Please Write Inquiry.');}
$mailheaders = "Return-Path: $email \r\n";
$mailheaders .= "From: $name <$email>\r\n";
$body = "이름: $_POST['first_name'] \r\n";
$body = "전화번호: $_POST['form_tel'] \r\n";
$body = "팩스: $_POST['form_fax'] \r\n";
$body = "이메일: $_POST['form_email'] \r\n";
$body = "주소: $_POST['form_address'] \r\n";
$body = "내용: $_POST['comments'] \r\n";
[/code]