關於部落格
請前往新站:ian.twgg.org
  • 14108

    累積人氣

  • 1

    今日人氣

    0

    追蹤人氣

單字記憶系統




一、前言

  系統功能主要是讓使用者輸入自己不會的單字,電腦會紀錄下來,並加上發音,最後由電腦亂數抽考裡面的單字。

系統目前有7個介面:
  1. index.php:主頁,用於展示目前資料庫中的單字
  2. add.php:增加單字,需輸入中英文
  3. delete.php:刪除單字,刪除前的確認視窗
  4. update.php:更新單字,如有打錯字可進入更新
  5. contest.php:亂數展示資料,並將中文隱藏
  6. login.php:管理員登入介面
  7. logout.php:管理員登出,清除SESSION紀錄
不過,增加單字、刪除等等介面都需要身分認證,並不開放給各位使用。



二、分頁



  當資料到達一定數量後,介面會被拉的很長,不適合瀏覽,因此需要分頁,這裡我用了最簡單的方法做一頁10項的分頁
SELECT * FROM English ORDER BY post_time DESC limit 0,10;
輸入上述SQL語法可以將 English表格所有欄位資料取出,並依日期大到小排列,顯示從第1筆開始的10筆資料
<?
if($_GET[page]==""){$_GET[page] = 1;} //如果無page值,則page設為1

$
aa=$_GET[page]*10-10;
$sql = 'SELECT * FROM English ORDER BY post_time DESC limit ';
$sql.= $aa.",10";

mysql_query($sql);
?>
上述PHP語法中,變數aa為limit 後面的第一個數(0、10、20…),代表從第(aa+1)筆資料開始顯示,後面使用字串加法將10加進$sql字串中,代表最多顯示10筆資料
<?
$str="select count(*) from English ";
$list=mysql_query($str,$link);
list($book_count)=mysql_fetch_row($list);
?>
執行上面的指令,可以得到 變數$book_count = 總資料數
<?
$all_pages=$book_count / 10.1 + 1;
?>
使用上式,將資料數除以10.1 再加1,可得頁數
(不除以10的原因是會發生10的整數倍筆資料多一頁)
<? for($i=1;$i<=$all_pages;$i++)
{
echo "&nbsp;<a href="index.php?page=".($i)."">".$i."</a>&nbsp;";
}
?>
如上,最後用for迴圈,印出頁碼的超連結


三、身分認證

  身分認證是只讓管理員才能使用 增加、刪除、更新 單字的功能,必須要讓非登入者進入需登入介面時自動導向到登入介面(login.php)

      (1) 登入介面
<?
session_start();

if($_GET[action]=="login")
{

session_register("admid");
session_register("admpw");
$_SESSION[admid] = $_POST[admid];
$_SESSION[admpw] = $_POST[admpw];
?>
<script>
document.location.href = "index.php";
</script>
<?
}
?>
在login.php使用上述語法將POST輸入的值給剛登記的SESSION admid 及 admpw,最後介面導向至主頁(index.php)

      (2) 認證介面
<? session_start();

if($_SESSION[admid] != "管理員帳號" || $_SESSION[admpw] != "管理員密碼")
{
include("login.php");
die();
}
?>
如上,在需要身分認證的介面中,先判斷 $_SESSION[admid] 及$_SESSION[admpw] 是否正確,如果錯誤直接把使用者到登入頁面(login.php)

      (3) 登出介面
<?
//啟動 Session
session_start();

//清除所有已登記的 Session 變數
session_unset();

//銷毀現有的 Session連線紀錄
session_destroy();
?>
<script>
document.location.href = "index.php";
</script>
如上,消除session,再導向至主頁



四、亂數

  在SQL語法中,RAND() 即表亂數

因此:
SELECT * FROM English ORDER BY RAND() ;
以上即可將表格所有欄位資料取出,並依照亂數排列!
相簿設定
標籤設定
相簿狀態