0
 829   42   2
  View Articles

Name  
   박 선  (2007-12-04 23:59:05, Hit : 21716, Vote : 1752)
Subject  
   [re] PHP 게시판 만들기 프로젝트
질문을 올린 뒤 계속 혼자 고민하다가, 호스팅 회사에 문의해 본 결과
해결할 수 있었습니다.

질문 글을 지울려다가, 저처럼 고민하시는 분들을 위해 답을 올리기로 했습니다. (이미 다 아시는 걸 쓸데없는 짓을 하는 지도 모르겠네용^^;)

저의 경우 데이타베이스와 DB 테이블을 만들려면 더 비싼 패키지를 구입해야 한다고 하더군요. 하지만 간단하게, php만 지원된다면 폼메일php페이지를 계정에 올려 자신의 이메일로 들어오게 할 수 있다는.. 이런 너무도 간단한 방법이 있었던 겁니다 ㅡ ㅡ;;

먼저 form 작성하는 것은 누구나 아시겠죠 action 뒤에 FormToEmail.php라고 지정해주시고요, 아래의 소스를 복사해서 php파일을 만드세요 (메모장에 붙여넣기 한 뒤 확장명을 txt대신 php로 하면 됩니다)

<?php

/*

Thank you for choosing FormToEmail

Version 2.2 July 1st 2007

COPYRIGHT freezone.co.uk 2003 - 2007

You are not permitted to sell this script, but you can use it, copy it or distribute it, providing that you do not delete this copyright notice, and you do not remove any reference to FormToEmail.com

---------------------------------------------------------------------------------------------------

FormToEmail-Pro (Pro version) Features:

Check for required fields.
Attach file uploads.
Photo CAPTCHA system.
Check for a set cookie.
HTML output option.
CSV output to attachment or file.
Show sender's IP address.
Block IP addresses.
Block web addresses or rude words.
Block gobbledegook characters (???etc).
Auto redirect to "Thank You" page.
No branding.
Use on multiple sites.

---------------------------------------------------------------------------------------------------

FormToEmail DESCRIPTION

FormToEmail is a contact-form processing script written in PHP. It allows you to place a form on your website which your visitors can fill out and send to you.  The contents of the form are sent to the email address (or addresses) which you specify below.  The form allows your visitors to enter their name, email address and comments.  The script will not allow a blank form to be sent.

Your visitors (and nasty spambots!) cannot see your email address.  The script cannot be hijacked by spammers.

When the form is sent, your visitor will get a confirmation of this on the screen, and will be given a link to continue to your homepage, or other page if you specify it.

Should you need the facility, you can add additional fields to your form, which this script will also process without making any additional changes to the script.  You can also use it to process other forms.  The script will handle the "POST" or "GET" methods.  It will also handle multiple select inputs and multiple check box inputs.  If using these, you must name the field as an array using square brackets, like so: <select name="fruit[]" multiple>.  The same goes for check boxes if you are using more than one with the same name, like so: <input type="checkbox" name="fruit[]" value="apple">Apple<input type="checkbox" name="fruit[]" value="orange">Orange<input type="checkbox" name="fruit[]" value="banana">Banana

** PLEASE NOTE **  If you are using the script to process your own forms (or older FormToEmail forms) you must ensure that the email field is named correctly in your form, thus: <input type="text" name="email" etc>.  Note the lower case "email".  If you don't do this, you won't be able to see who the email is from and the script won't be able to check the validity of the email.  If you are using the form code below, you don't need to check for this.

This is a PHP script.  In order for it to run, you must have PHP (version 4.1.0 or later) on your webhosting account, and have the PHP mail() function enabled and working.  If you are not sure about this, please ask your webhost about it.

SETUP INSTRUCTIONS

Step 1: Put the form on your webpage
Step 2: Enter your email address and (optional) continue link below
Step 3: Upload the files to your webspace

Step 1:

To put the form on your webpage, copy the code below as it is, and paste it into your webpage:

<form action="FormToEmail.php" method="post">
<table border="0" bgcolor="#ececec" cellspacing="5">
<tr><td>Name</td><td><input type="text" size="30" name="name"></td></tr>
<tr><td>Email address</td><td><input type="text" size="30" name="email"></td></tr>
<tr><td valign="top">Comments</td><td><textarea name="comments" rows="6" cols="30"></textarea></td></tr>
<tr><td> </td><td><input type="submit" value="Send"><font face="arial" size="1">  <a href="http://FormToEmail.com">Form Processor</a> by FormToEmail.com</font></td></tr>
</table>
</form>

Step 2:

Enter your email address.

Enter the email address below to send the contents of the form to.  You can enter more than one email address separated by commas, like so: $my_email = "bob@example.com,sales@example.co.uk,jane@example.com";

*/

$my_email = "/";

/*

Enter the continue link to offer the user after the form is sent.  If you do not change this, your visitor will be given a continue link to your homepage.

If you do change it, remove the "/" symbol below and replace with the name of the page to link to, eg: "mypage.htm" or "http://www.elsewhere.com/page.htm"

*/

$continue = "/";

/*

Step 3:

Save this file (FormToEmail.php) and upload it together with your webpage containing the form to your webspace.  IMPORTANT - The file name is case sensitive!  You must save it exactly as it is named above!  Do not put this script in your cgi-bin directory (folder) it may not work from there.

THAT'S IT, FINISHED!

You do not need to make any changes below this line.

*/

$errors = array();

// Remove $_COOKIE elements from $_REQUEST.

if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}

// Check all fields for an email header.

function recursive_array_check_header($element_value)
{

global $set;

if(!is_array($element_value)){if(preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i",$element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}

}

}

recursive_array_check_header($_REQUEST);

if($set){$errors[] = "You cannot send an email header";}

unset($set);

// Validate name field.

if(isset($_REQUEST['name']) && !empty($_REQUEST['name']))
{

if(preg_match("/[^a-z' -]/i",stripslashes($_REQUEST['name']))){$errors[] = "You have entered an invalid character in the name field";}

}

// Validate email field.

if(isset($_REQUEST['email']) && !empty($_REQUEST['email']))
{

if(preg_match("/(%0A|%0D|\n+|\r+|:)/i",$_REQUEST['email'])){$errors[] = "Email address may not contain a new line or a colon";}

$_REQUEST['email'] = trim($_REQUEST['email']);

if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0 || substr_count($exploded_email[1],".") > 3){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $key => $value){if($key == 0){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}elseif(strlen($value) > 6 || !preg_match('/^[a-z0-9]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

}

// Remove leading whitespace from all values.

function recursive_array_check(&$element_value)
{

if(!is_array($element_value)){$element_value = ltrim($element_value);}
else
{

foreach($element_value as $key => $value){$element_value[$key] = recursive_array_check($value);}

}

return $element_value;

}

recursive_array_check($_REQUEST);

// Check referrer is from same site.

if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";}

// Check for a blank form.

function recursive_array_check_blank($element_value)
{

global $set;

if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}}
else
{

foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}

}

}

recursive_array_check_blank($_REQUEST);

if(!$set){$errors[] = "You cannot send a blank form";}

unset($set);

// Display any errors and exit if errors exist.

if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;}

if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");}

// Build message.

function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}

$message = build_message($_REQUEST);

$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."Thank you for using FormToEmail from http://www.freezone.co.uk";

$message = stripslashes($message);

$subject = "FormToEmail Comments";

$headers = "From: " . $_REQUEST['email'];

mail($my_email,$subject,$message,$headers);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>
<title>Form To Email PHP script from Freezone.co.uk</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#ffffff" text="#000000">

<div>
<center>
<b>Thank you <?php print stripslashes($_REQUEST['name']); ?></b>
<br>Your message has been sent
<p><a href="<?php print $continue; ?>">Click here to continue</a></p>
<p><b>FormToEmail</b> </p>
</center>
</div>

</body>
</html>



이것은 강좌에서 배웠던, insert.php 대신의 역할입니다.

영어로 되어있어서 힘들지 모르지만, 중요한 건 자신의 이메일을 넣어주시고,
작성자가 내용을 적어넣은 뒤 어느 페이지로 돌아가는 지를 꼭 넣어줘야 합니다.

Step 2에서 그것을 하도록 되어있네요. / 슬래쉬 대신에 주소를 넣어줍니다.

강좌에서 배운 것처럼, 페이지를 거치지 않고 '작성되었습니다' 같은 메시지가 뜬 뒤 바로 다시 폼으로 돌아가게 하려면

$msg = "Your message has been sent";
echo " <html><head>
                 <script name=javascript>

                 if('$msg' != '') {
                         self.window.alert('$msg');
                 }

                 location.href='form.php';

                 </script>
                 </head>
                 </html> ";

이 소스를 ?> 안에 넣어주세요.

개인적으로 성공하고 나니깐 너무 기분이 좋네요^^

그럼 다들 하고 싶은 거 꼭 이루세요~




손병목
ㅎㅎ 스스로 해결하셨네요. 다행입니다. 축하합니다!
- 이래저래 답변을 미룬 게으른 운영자 올림^^
 2007/12/05 04:17:06    


no
subject
name
date
hit
*
809
  이런 정말 괜찮은 곳이군요. [1]

黑猫-흑묘
2008/10/02 8495 1750
808
  이런사이트가 있었다니....

flyyo
2008/09/30 9238 1841
807
  이거 문제가 머져.ㅠㅠ

오라초보
2008/07/24 8143 1530
806
 비밀글입니다 데이터베이스에 변수값이 들어오지 않네...

강지산
2008/07/02 1 0
805
  php 강좌 안하시나요?

정윤희
2008/06/16 7870 1440
804
  게시판에서 업로드 에러가 나요 [1]

이연구
2008/06/14 7844 1387
803
  감사!!!!!!!!!!!!!!♡ [1]

우송배
2008/06/09 7479 1468
802
  JSP 게시판을 공부하고 있는데...excep... [1]

안대원
2008/06/04 8042 1507
801
  php게시판에서.. 질문입니다.. [2]

궁금
2008/02/12 8358 1610
800
  이제서야 와 보네요. [1]

김창현
2008/02/04 7572 1546
799
  자료실 소스 다운이 안되네요~ [3]

박관오
2008/01/29 8517 1703
798
  게시판 코멘트에 대해 의문이있습니다.

최혜림
2008/01/24 8668 1656
797
  왜 파일업로드가 안될까요?

박정은
2008/01/24 7262 1446
796
  php게시판 1 delete_ok 질문 [1]

임용규
2008/01/17 7716 1693
795
  게시판 코멘트요~ [1]

최헤림
2007/12/12 7914 1525
794
  php게시판 질문이요.. [2]

박미영
2007/12/12 8662 1714
793
  자료실소스 다운를 안되요!! [2]

석영학
2007/12/06 7550 1680
792
  PHP 게시판 만들기 프로젝트

박 선
2007/12/01 7825 1584

    [re] PHP 게시판 만들기 프로젝트 [1]

박 선
2007/12/04 21716 1752
790
  JSP 게시판 관련 질문드릴께요 [1]

sailron
2007/12/01 7656 1423
[1] 2 [3][4][5][6][7][8][9][10]..[42] [next]

Copyright 1999-2022 Zeroboard / skin by Zetyx