第八章解答
- 1. 第 8 章解答 PHP 6 與 MySQL 基礎學習教室
1.設計一個網頁,當使用者按下重新整理,會顯示「請勿重複開啟」訊息。
解答:
<?session_start();?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>session</title></head><body>
<?
if(!isset($_SESSION['addr']))
{
$_SESSION['addr']=$_SERVER["REMOTE_ADDR"];
echo "謝謝您的登入";
}
else
echo "請勿重複登入";
?></body></html>
2.設計一個網頁,當使用者兩小時內重複開啟,會顯示「兩小時候請再開啟」訊
息。
解答:
<? ob_start() ;?>
<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>cookie</title></head><body>
<?
if(isset($_COOKIE["pass"]))
echo "已經使用過了,請再稍等 2 小時"."<br>";
else
{
setcookie ("pass", "php",time()+(60*60*2));
echo "第一次開啟網頁,您在 2 小時內不能再度使用"."<br>";
}
?></body></html>
第1頁
- 2. 第 8 章解答 PHP 6 與 MySQL 基礎學習教室
3.請設計以下的網頁:
sessionform1.htm 讓使用者輸入帳號及密碼
sessionform1.php 接收表單傳遞過來的帳號及密碼,並產生兩個 Session 變數
sessionform2.php 判斷是否有 form1.php 產生的 Session 變數,有則顯示
「OK」,沒有則顯示「Cancel」
sessionform3.php 銷毀 session 變數及 session id,並加上 form2.php 連結,以確
認 session 是否清除
解答:
sessionform1.htm
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入</title></head>
<body>
<form name="form1" method="post" action="sessionform1.php">
登入帳號:<input name="loginname" type="text"><br>
登入密碼:<input name="loginpwd" type="password"><br>
<input type="submit" value="送出"><input type="reset" value="重設">
</form></body></html>
sessionform1.php
<?session_start();?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>sessionform1</title></head><body>
<a href = "sessionform2.php"> 連到下一頁面</a><br>
<a href = "sessionform3.php"> 登出</a><br>
<?
if (isset($_POST['loginname']) and isset($_POST['loginpwd']))
{
$_SESSION['loginname']=$_POST['loginname'];
$_SESSION['loginpwd']=$_POST['loginpwd'];
}
else
echo("沒有內容儲存,請返回表單網頁")
?>
</body></html>
第2頁
- 3. 第 8 章解答 PHP 6 與 MySQL 基礎學習教室
sessionform2.php
<?session_start() ;?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>sessionform2</title></head><body>
<?
echo "你的帳號:".$_SESSION['loginname']."<br>" ;
echo "密碼:".$_SESSION['loginpwd']."<br>" ;
?>
<a href = "sessionform1.php"> 登錄 session</a><br>
<a href = "sessionform3.php"> 登出</a><br>
</body></html>
sessionform3.php
<?session_start(); ?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>sessionform3</title></head><body>
<?
session_unset();
session_destroy();
?>
<a href = "sessionform1.php"> 登錄 session</a><br>
<a href = "sessionform2.php"> 連到下一頁面</a><br>
</body></html>
4.請設計以下的網頁:
cookieform1.htm 讓使用者輸入帳號及密碼
cookieform1.php 接收表單傳遞過來的帳號及密碼,並產生兩個 Cookie 變數
cookieform2.php 判斷是否有 form1.php 產生的 Cookie 變數,有則顯示
「OK」,沒有則顯示「Cancel」
cookieform3.php 銷毀 Cookie 變數,並加上 form2.php 連結,以確認 Cookie
是否清除
解答:
第3頁
- 4. 第 8 章解答 PHP 6 與 MySQL 基礎學習教室
cookieform1.htm
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登入</title></head>
<body>
<form name="form1" method="post" action="cookieform1.php">
登入帳號:<input name="loginname" type="text"><br>
登入密碼:<input name="loginpwd" type="password"><br>
<input type="submit" value="送出"><input type="reset" value="重設">
</form></body></html>
cookieform1.php
<?ob_start();?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>cookieform1</title></head><body>
<a href = "cookieform2.php"> 連到下一頁面</a><br>
<a href = "cookieform3.php"> 登出</a><br>
<?
if (isset($_POST['loginname']) and isset($_POST['loginpwd']))
{
setcookie ("loginname",$_POST['loginname'],time()+(60*60*2));
setcookie ("loginpwd",$_POST['loginpwd'],time()+(60*60*2));
}
else
echo("沒有內容儲存,請返回表單網頁")
?>
</body></html>
cookieform2.php
<?ob_start() ;?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>cookieform2</title></head><body>
<?
第4頁
- 5. 第 8 章解答 PHP 6 與 MySQL 基礎學習教室
echo "你的帳號:".$_COOKIE['loginname']."<br>" ;
echo "密碼:".$_COOKIE['loginpwd']."<br>" ;
?>
<a href = "cookieform1.php"> 登錄 cookie</a><br>
<a href = "cookieform3.php"> 登出</a><br>
</body></html>
cookieform3.php
<?ob_start(); ?>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>cookieform3</title></head><body>
<?
setcookie ("loginname","",time()+(60*60*2));
setcookie ("loginpwd","",time()+(60*60*2));
?>
<a href = "cookieform1.php"> 登錄 cookie</a><br>
<a href = "cookieform2.php"> 連到下一頁面</a><br>
</body></html>
5.以下幾種是否為網頁間資料分享的方法:a.表單 b.網址 URL 參數 c.Cookies
d.Session
解答:
四種皆是。
但這四種資料分享的方式各有差異。
a.表單 :資料只能存在表單及接收資料的網頁。
b.網址 URL 參數:透過網址傳遞,資料欠缺安全性。
c.Cookies:儲存於使用者端電腦,若使用者瀏覽器提高安全性則將無法存取。
d.Session:當網頁關閉後就會消失。
第5頁
- 6. 第 8 章解答 PHP 6 與 MySQL 基礎學習教室
6.請查閱你的 php.ini 內 session id 儲存的位置
解答:
請查詢主機內 php.ini 檔案內容,請尋找「session.save_path」,就可知道
session id 儲存的位置
7.Server 上 session 檔案保存期限是由哪些設定決定?
解答:
php.ini 內相關設定:
session.gc_probability = 1
session.gc_divisor = 100
session.gc_maxlifetime = 1440
這三行設定分別為 session 清除垃圾比例分子(session.gc_probability)、session
清除垃圾比例分母(session.gc_divisor)、session 資料保存最大時間
(session.gc_maxlifetime)。 以上述設定為例,代表主機會在瀏覽器失去訊息後
1440 秒清除 1/100 session 檔案。至於為何不全部清除呢?因為主機無法判斷
「瀏覽器失去訊息」 「瀏覽器關閉」 「網路傳輸速度慢」
是 或 ,所以主機不會主動
把所有 session 資料清除。
8.不同瀏覽器可以共用 Cookie 嗎?
解答:
不同瀏覽器不可以共用 Cookie。
9.如何讓 Cookie 變數失效?
解答:
當 Cookie 變數逾期或變數內容清空,Cookie 變數就會失效
10.如何讓 Seesion 變數失效?
解答:
當網頁關閉或執行 session_unset( )函數銷毀 session 變數。
第6頁