Form에 POST 및 배열로 변수 값 넘기기
Computer Tip's/PHP2019. 9. 24. 03:07
- selectResult.php -
<?php
/*
* Created on 2009. 08. 06
*/
echo "<b>".$_POST[name]."</b>님이 선택하신 상품은 아래와 같습니다.<br/>";
if(!empty($_POST["products"])){
echo "<ul>";
foreach ($_POST["products"] as $value){
echo "<li>$value</li>";
} // foreach 반복문의 형태를 잘 알아두자.
echo "</ul>";
}
?>
<html>
<head>
<title>A simple HTML form</title>
</head>
<body>
<form method="post" action="write_result.php">
<p><strong>이름:</strong><br/>
<input type="text" name="name" maxlength="12"/></p>
<p><strong>메시지:</strong><br/>
<textarea name="content" rows="5" cols="40"></textarea></p>
<p><input type="submit" value="글등록" /></p>
</form>
</body>
</html>
- write_result.php -
<?php
/*
* Created on 2009. 08. 06
*/
echo "<p><b>".$_POST["name"]."님, 환영합니다.</b></p>";
echo "<p>당신의 메시지: ". $_POST["content"]."</p>";
?>
--> $_POST 전역변수로 폼의 데이터를 넘겨 받는다.
==== 배열을 사용한 폼 ====
: select 문에서 다중 선택을 가능하게 하였을 때에는 배열을 사용하여 하나 이상의 값을 넘길 수 있도록 해야된다.
- selectResult.php -
<html>
<head>
<title>
select 구문을 포함한 form
</title>
</head>
<body>
<form method="post" action="selectResult.php">
<b>이름:</b><br>
<input type="text" name="name" maxlength="12"><br>
<b>상품 선택</b><br>
<select name="products[]" multiple> // select문에서는 products[]처럼 배열 형태로 값을 넘겨야된다.
<option value="본체">본체</option>
<option value="마우스">마우스</option>
<option value="키보드">키보드</option>
<option value="스피커">스피커</option>
</select><br>
<input type="submit" value="확인"><br>
</form>
</body>
</html>
<?php
/*
* Created on 2009. 08. 06
*/
echo "<b>".$_POST[name]."</b>님이 선택하신 상품은 아래와 같습니다.<br/>";
if(!empty($_POST["products"])){
echo "<ul>";
foreach ($_POST["products"] as $value){
echo "<li>$value</li>";
} // foreach 반복문의 형태를 잘 알아두자.
echo "</ul>";
}
?>
==== 한페이지에서 HTML과 PHP를 함께 사용하기( 자기자신에게 폼값 넘기기) / 페이지 리다이렉션 ====
* PHP로 작성한 숫자 맞추기 스크립트
--> 단, 정답을 맞추었을 경우 정답 페이지로 리다이렉션한다.
<html>
<head>
<title>자기자신을 호출하는 폼</title>
</head>
<body>
<h1><?php echo $message; ?></h1>
<b>정답 시도 횟수:</b> <?php echo $num_tries;?> 번째 정답 시도를 할 차례입니다.
<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> // 폼의 데이터값을 자기자신의 페이지에 넘긴다.
<br>당신이 예상하는 숫자:</b><br>
<input type="text" name="guess"/><br>
<input type="hidden" name="num_tries" value="<?php echo $num_tries; ?>">
<input type="submit" value="전송">
</form>
</body>
</html>
** self.php **
<?php
$num = 42;
$num_tries = (isset($_POST["num_tries"]))?$_POST["num_tries"]+1:1; // hidden으로 넘어온 값이 있다면... 삼항 연산자.
if(!isset($_POST["guess"])){ // 처음 페이지를 열었을때 $_POST변수에 값이 설정되어 있지 않다면...
$message = "환영합니다.";
}
else if($_POST["guess"]<$num){ // 폼에서 넘어온 값이 42보다 적은 숫자일때
$message = $_POST["guess"]."는 적은 숫자입니다.더 높은 숫자를 입력하세요";
}
else if($_POST["guess"]>$num){ // 폼에서 넘어온 값이 42보다 클때,
$message = $_POST["guess"]."는 큰 숫자입니다. 더 낮은 숫자를 입력하세요";
}
else { // 폼에서 넘어온 값이 42일때, goodjob.html로 리다이렉션 된다.
header("Location:goodjob.php");
}
[mail function]
; For Win32 only.
;SMTP = localhost
SMTP = mail.hananet.net // 실제로 사용 가능한 메일서버가 구축되어 있어야 가능함.
smtp_port = 25
; For Win32 only.
;sendmail_from = hjs6877@naver.com
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =
--> mail() 함수를 사용하기 전에 php.ini 파일에서 위와 같이 수정한다.
<html>
<head>
<title>메일 폼</title>
</head>
<body>
<form method="post" action="sendmail.php">
이름: <br/>
<input type="text" size="25" name="name"/></p>
이메일 주소:<br/> <input type="text" size="25" name="email"/></p>
글쓰기:<br/>
<textarea name="message" cols="30" rows="5"></textarea><br/>
<input type="submit" value="전송"/><br/>
</form>
</body>
</html>
** sendmail.php **
<html>
<head>
<title>메일 전송</title>
</head>
<body>
<?php
/*
* Created on 2009. 08. 10
*/
echo "<p><b>".$_POST["name"]."</b>님의 메일이 전송되었습니다.!!</p>";
echo "<p><b>".$_POST["name"]."</b>님의 메일 주소: <b>".$_POST["email"]."</b></p>";
echo "<p><b>메시지 내용: </b><br/>";
echo $_POST["message"]."</p>";
// 메일 스트링을 만든다.
$msg = "이름: ".$_POST["name"]."\n";
$msg .= "이메일 주소: ".$_POST["name"]."\n";
$msg .= "메시지 내용: ".$_POST["message"]."\n";
//메일을 설정한다.
$recipient = "stlucifel@naver.com"; // 받는 사람 주소
$subject = "From siksco"; // 메일의 제목
$mailheaders = "From: stlucifel@naver.net\n";
$mailheaders .= "Reply-To: ".$_POST["email"];
// 메일을 보낸다.
mail($recipient,$subject,$msg,$mailheaders);
// mail() 함수는 받는 사람, 제목, 본문, 메일 헤더 등 네개의 인자를 사용한다.
?>
</body>
</html>
댓글()