<?php
// include the database configuration and
// open connection to database
include 'library/opendb.php';

// check if the form is submitted
if(isset($_POST['btnSign']))
{
	// get the input from $_POST variable
	// trim all input to remove extra spaces
	$name    = trim($_POST['txtName']);
	$email   = trim($_POST['txtEmail']);
	$url     = trim($_POST['txtUrl']);
	$message = trim($_POST['mtxMessage']);
	
	// escape the message ( if it's not already escaped )
	if(!get_magic_quotes_gpc())
	{
		$name    = addslashes($name);
		$message = addslashes($message);
	}
	
	// if the visitor do not enter the url
	// set $url to an empty string
	if ($url == 'http://')
	{
		$url = '';
	}
	
	// prepare the query string
	$query = "INSERT INTO chapter503 (name, email, url, message, entry_date) " .
	         "VALUES ('$name', '$email', '$url', '$message', current_date)";

	// execute the query to insert the input to database
	// if query fail the script will terminate		 
	mysql_query($query) or die('Error, query failed. ' . mysql_error());
	
	// redirect to current page so if we click the refresh button 
	// the form won't be resubmitted ( as that would make duplicate entries )
	header('Location: ' . $_SERVER['REQUEST_URI']);
	
	// force to quite the script. if we don't call exit the script may
	// continue before the page is redirected
	exit;
}
?>
<html>
<head>
	<title>0503</title>

    <style type="text/css">
<!--
body {scrollbar-face-color: #ffffff; 
          scrollbar-arrow-color:#ccccff; 
          scrollbar-highlight-color: #ccccff; 
          scrollbar-shadow-color: #ccccff;
          scrollbar-3dlight-color: #ccccff; 
          scrollbar-track-color: #ffffff}
          a:link, a:visited,  a:active {color=blue; text-decoration: underline;}
//-->
    </style>

<script language="JavaScript"> <!--
var message="請勿複製!!!"; // Message for the alert box
function click(e) {
if (document.all) {
if (event.button == 2) {
alert(message);
return false;
}
}
if (document.layers) {
if (e.which == 3) {
alert(message);
return false;
}
}
}
if (document.layers) {
document.captureEvents(Event.MOUSEDOWN);
}
document.onmousedown=click;
// --> </script>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="ImageToolBar" content="NO"> 
<script language="JavaScript">
/*
	This function is called when
	the 'Sign Guestbook' button is pressed
	Output : true if all input are correct, false otherwise
*/
function checkForm()
{
	// the variables below are assigned to each
	// form input 
	var gname, gemail, gurl, gmessage;
	with(window.document.guestform)
	{
		gname    = txtName;
		gemail   = txtEmail;
		gurl     = txtUrl;
		gmessage = mtxMessage;
	}
	
	// if name is empty alert the visitor
	if(trim(gname.value) == '')
	{
		alert('請輸入你的名字');
		gname.focus();
		return false;
	}
	// alert the visitor if email is empty or the format is not correct 
	else if(trim(gemail.value) != '' && !isEmail(trim(gemail.value)))
	{
		alert('請輸入正確的信箱網址或留下空白');
		gemail.focus();
		return false;
	}
	// alert the visitor if message is empty
	else if(trim(gmessage.value) == '')
	{
		alert('請輸入你的回應');
		gmessage.focus();
		return false;
	}
	else
	{
		// when all input are correct 
		// return true so the form will submit		
		return true;
	}
}

/*
Strip whitespace from the beginning and end of a string
Input  : a string
Output : the trimmed string
*/
function trim(str)
{
	return str.replace(/^\s+|\s+$/g,'');
}

/*
Check if a string is in valid email format. 
Input  : the string to check
Output : true if the string is a valid email address, false otherwise.
*/
function isEmail(str)
{
	var regex = /^[-_.a-z0-9]+@(([-a-z0-9]+\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i;
	return regex.test(str);
}
    </script>

</head>
<script language="JavaScript1.2"> 
if (window.Event) 
document.captureEvents(Event.MOUSEUP); 
function nocontextmenu()  
{
event.cancelBubble = true
event.returnValue = false;
return false;
}
function norightclick(e)	
{
if (window.Event)	
{
if (e.which == 2 || e.which == 3)
return false;
}
else
if (event.button == 2 || event.button == 3)
{
event.cancelBubble = true
event.returnValue = false;
return false;
}	
}
document.oncontextmenu = nocontextmenu;		
document.onmousedown = norightclick;		
</script>




<body>










<p><span style="letter-spacing: 1pt"><b><font color="#3300FF">７－3．與之談話</font></b></span></p>










<p><span style="letter-spacing: 1pt">
<img border="0" src="http://f.blog.xuite.net/f/b/8/2/18442063/blog_965727/txt/16421034/2.jpg" style="float: left" width="184" height="354">
 跟寵物鳥對話是飼主飼養寵物鳥時最常見的行為之一．然而有時卻是會讓人對寵物鳥是否聽得懂飼主的語言有所疑惑？當然，人類語言的複雜性並非寵物鳥所能完全理解的，但總是會有些情況會讓人驚奇地認為寵物鳥似乎能明瞭飼主的話意．</span></p> 










<p><span style="letter-spacing: 1pt">但且不論寵物鳥是否能明瞭飼主與之談話時的話意，國外不少的專家對與寵物鳥對話的作為卻是相當地推崇．的確，與寵物鳥對話是飼養行為中不可避免的，就飼主本身而言，以語言表達始終是其行為能力最原始也最直接的呈現方式．就算不知寵物鳥是否能清楚其語意下，與之對話亦總是飼主與寵物鳥相處時不自覺地自主行為之一．然而，與寵物鳥對話的功效並非只是單方面在寵物鳥身上受益，事實上，能與寵物鳥對話的飼主在對話的互動行為中亦能得到相當的受惠程度．</span></p>










<p><span style="letter-spacing: 1pt">或許因為身為飼主的角色，而讓飼主更無法清楚地看到當飼養寵物鳥後所隨之而來的變化，例如生活習慣及情感上的改變．事實上，飼養寵物鳥的過程在成為飼主生活一部份的同時，亦或多或少地成為了飼主情感抒發的一種管通．當寵物鳥成為飼主某程度的感情依靠後，那麼適切地互動關係便會被期望著，而除了肢體的接觸外，與之對話便成了最重要的交流．透過適當的對話，除了能達到飼主與寵物鳥的情感交流外，同時一種對生命平等的尊重才更能被發揮．</span></p>










<p><span style="letter-spacing: 1pt">不少的飼主總是把飼養的寵物鳥當作如家人般對待，甚或有些飼主在家中就只有這所謂的“寵物鳥家人”，可見寵物鳥在飼主的心目中佔有多重要的地位．飼養寵物鳥的飼主，在情感上能更為滿足及更豐富生活樂趣外，對其個人的個性特質更具有潛移默化的陶冶作用．寵物鳥的存在其實本身便扮演著一種心靈伴侶的角色．當飼主將寵物鳥當成一個對話的“對象”時，無形中從寵物鳥身上（甚或來自於本身的原發效果）所得的情感回饋便會更為強烈．而不可否認的是不少的飼主會在飼養寵物鳥後，其性情與個性會有或多程度的改變．</span></p>










<p><span style="letter-spacing: 1pt">飼主與寵物鳥間若能有越多的對話行為便越能確保兩者之間相處的和樂關係．不可置疑地，這樣的作為對促進兩者的關係是有相當幫助的．許多的訊息能夠透過交談而被傳遞，或許寵物鳥並無法完全明瞭飼主的語意，但寵物鳥對情感的敏感度卻仍是相當敏銳的，特別是對聲音的判別分析．不論是心平氣和的對話，還是責備的語氣，在飼主的專注行為下，寵物鳥皆能很清楚地感受到其語意．然而，當飼主對寵物鳥交談時，對寵物鳥而言更是一種關注行為的表現．</span></p>










<p><span style="letter-spacing: 1pt">根據調查多數的寵物鳥會在飼主與之對話時給予適當的回應（或是以聲音回應，或是以肢體反應），事實上，當飼主對寵物鳥說話時所傳遞給寵物鳥的感受大多有正面的效果．與之對話行為中通常包含飼主的溫和語氣和專注眼神，對寵物鳥而言，飼主這般的對待是種相當友善的表現，除了對親手養大的寵物鳥是相當重要的作為外，對非手養的寵物鳥亦有促進感情培養的功效．</span></p>










<p><span style="letter-spacing: 1pt">來自於飼主熟悉的聲音對單一飼養或生病時的寵物鳥是一相當重要的心理安撫劑．對玄鳳而言，它是一種相當害怕獨處的寵物鳥，特別是當所處的環境過於安靜時，聽不到飼主的聲音時常會造成玄鳳的惶恐而大聲鳴叫以尋找飼主的回應．在群居玄鳳中，聲音的對應是維持感情相當重要的行為之一，然而也唯有被玄鳳所接納的飼主才會有此互動的行為發生．</span></p>










<p><span style="letter-spacing: 1pt">或許在他人的目光看來，與寵物鳥對話是個沒有意義的作為，但與之對話卻是讓寵物鳥熟悉飼主的最直接也最簡易的方式之一，同時也具有安撫情緒波動中的寵物鳥的功效．飼養過程中若少了與寵物鳥對話的發生，猶如阻斷了感情連繫的一橋樑，這對飼養行為而言無非是折損了它的原有意義．</span></p>










<p><span style="letter-spacing: 1pt">與之對話是一種相互的對等作為，它所具有的意義並非皆能從表象所呈現而出．在飼主與寵物鳥內心中，透過這樣的行為所蘊釀而成的更是心理層面的一種感情結合與默契的養成．別忽視了小小的作為所能帶來的深遠影響，與之對話正是奠定與維持情感的基礎．</span></p>










<table border="0" width="100%">
  <tr>
    <td width="100%">
      <!-- Start of SimpleHitCounter Code -->
<div align="right"><a href="http://www.simplehitcounter.com" target="_blank"><img src="http://simplehitcounter.com/hit.asp?uid=193278&f=16777215&b=0" border="0" alt="free hit counters"></a><br><a href="http://www.simplehitcounter.com" target="_blank"><font size="-3">free hit counters</font></a></div> 
<!-- End of SimpleHitCounter Code -->
 
      </td>
  </tr>
</table>

<?php


// =======================
// Show guestbook entries
// =======================

// how many guestbook entries to show per page
$rowsPerPage = 10;

// by default we show first page
$pageNum = 1;

// if $_GET['page'] defined, use the value as page number
if(isset($_GET['page']))
{
	$pageNum = $_GET['page'];
}

// counting the offset ( where to start fetching the entries )
$offset = ($pageNum - 1) * $rowsPerPage;

// prepare the query string
$query = "SELECT id, name, email, url, message, DATE_FORMAT(entry_date, '%d.%m.%Y') ".
         "FROM chapter503 ".
		 "ORDER BY id DESC ".            // using ORDER BY to show the most current entry first
		 "LIMIT $offset, $rowsPerPage";  // LIMIT is the core of paging

// execute the query 
$result = mysql_query($query) or die('Error, query failed. ' . mysql_error());

// if the guestbook is empty show a message
if(mysql_num_rows($result) == 0)
{
?>
<p><br>
 <br>若你對此文章有所不同意見或觀點，誠請你在此留下回應． </p>
<?php
}
else
{
	// get all guestbook entries
	while($row = mysql_fetch_array($result))
	{
		// list() is a convenient way of assign a list of variables
		// from an array values 
		list($id, $name, $email, $url, $message, $date) = $row;

		// change all HTML special characters,
		// to prevent some nasty code injection
		$name    = htmlspecialchars($name);
		$message = htmlspecialchars($message);		

		// convert newline characters ( \n OR \r OR both ) to HTML break tag ( <br> )
		$message = nl2br($message);
?>
<table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#f9fb9d">
 <tr> 
  <td width="80%" align="left"> <a href="mailto:<?=$email;?>" class="email"> 
   <?=$name;?>
   </a> </td>
  <td align="right"><small> 
   <?=$date;?>
   </small></td>
 </tr>
 <tr> 
  <td colspan="2"> 
   <?=$message;?>
   <?php
   		// if the visitor input her homepage url show it
		if($url != '')
		{   
			// make the url clickable by formatting it as HTML link
			$url = "<a href='$url' target='_blank'>$url</a>";
?>
   <br> <small>Homepage : <?=$url;?></small> 
   <?php
		}
?>
  </td>
 </tr>
</table>
<br>
<?php
	} // end while

// below is the code needed to show page numbers

// count how many rows we have in database
$query   = "SELECT COUNT(id) AS numrows FROM chapter503";
$result  = mysql_query($query) or die('Error, query failed. ' . mysql_error());
$row     = mysql_fetch_array($result, MYSQL_ASSOC);
$numrows = $row['numrows'];

// how many pages we have when using paging?
$maxPage  = ceil($numrows/$rowsPerPage);
$nextLink = '';

// show the link to more pages ONLY IF there are 
// more than one page
if($maxPage > 1)
{
	// this page's path
	$self     = $_SERVER['PHP_SELF'];
	
	// we save each link in this array
	$nextLink = array();
	
	// create the link to browse from page 1 to page $maxPage
	for($page = 1; $page <= $maxPage; $page++)
	{
		$nextLink[] =  "<a href=%22$self?page=$page/&quot;>$page</a>";
	}
	
	// join all the link using implode() 
	$nextLink = "Go to page : " . implode(' &raquo; ', $nextLink);
}

// close the database connection since
// we no longer need it
include 'library/closedb.php';

?>
<form method="post" name="guestform">
 <table width="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#ccff99">
  <tr> 
   <td width="15%">名字*</td> <td> 
    <input name="txtName" type="text" id="txtName" size="30" maxlength="30"></td>
 </tr>
  <tr> 
   <td width="15%">Email</td>
   <td> 
    <input name="txtEmail" type="text" id="txtEmail" size="30" maxlength="50"></td>
 </tr>
  <tr> 
   <td width="15%">網址</td>
   <td> 
    <input name="txtUrl" type="text" id="txtUrl" value="http://" size="30" maxlength="50"></td>
 </tr>
  <tr> 
   <td width="15%">內容*</td> <td> 
    <textarea name="mtxMessage" cols="72" rows="8" id="mtxMessage"></textarea></td>
 </tr>
  <tr> 
   <td width="15%">&nbsp;</td>
   <td> 
    <input name="btnSign" type="submit" id="btnSign" value="送出" onClick="return checkForm();">如要發問問題，請至留言板或討論區．</td>
 </tr>
</table>
</form>



<table width="100%" border="0" cellpadding="2" cellspacing="0">
 <tr> 
  <td align="right" class="text"> 
   <?=$nextLink;?>
  </td>
 </tr>
</table>
<?php
}
?>

</body>
</html>