2010年9月5日 星期日

CGI 員工上下班打卡系統

完整程式碼下載

/var/www/log/資料夾中產生使用者帳號加u與加d的檔案
u為上班時間記錄檔
d為下班時間記錄檔

如calvinu與calvind

範例中的員工名稱為66DM01~66DM35
若是在普通的公司之中,可事先做一份user.txt檔記錄員工帳號及名稱
再修改一下我程式的內容中就可以應用了

a.cgi中比較核心的部份

tp=1
while [ $tp -le 35 ]
do
    tx=$(printf "%02i\n" $tp)
    echo "<tr><td>"
    echo "員工:66DM"$tx"上班打卡 : </td><td>"
    #下面這行使用grep檢察log檔中有沒有存在今天日期的資料
    u1=$(cat /var/www/log/66DM$tx"u" | grep $ck)
    #若有存在就顯示該筆日期與時間
    if [ $? == "0" ]; then
        echo $u1
    #若不存在就顯示打卡按鈕,按了以後會呼叫ct.sh做打卡的動作。
    else
        echo "<form action="http://172.22.66.5/~usadmin/cgi-bin/ct.sh" method="get">"
        echo "<input name="66DM$tx"u"" type="hidden">"
        echo "<input type="submit" value="打卡"></form>"
    fi
    echo "</td><td>員工:66DM"$tx"下班打卡 : </td><td>"
    #下班部份存在另一log檔,原理與上面相同。
    u2=$(cat /var/www/log/66DM$tx"d" | grep $ck)
    if [ $? == "0" ]; then
        echo $u2
    else
        echo "<form action="http://172.22.66.5/~usadmin/cgi-bin/ct.sh" method="get">"
        echo "<input name="66DM$tx"d"" type="hidden">"
        echo "<input type="submit" value="打卡"></form>"
    fi
    echo "</td></tr>"
    tp=$(( $tp + 1 ))
done

ct.sh程式碼解釋

echo '<body>'
echo '<pre>'
#抓取a.cgi傳過來的值,只取使用者帳號部份。
mf=$(/usr/bin/env |grep QUERY|cut -d'=' -f2)
#抓取現在時間
tm=$(date +%Y%m%d" "%H":"%M":"%S)

#將現在時間存到該使用者log檔中。
echo $tm >> /var/www/log/$mf

#顯示已經打卡完成。
echo 員工:$mf 已打卡完成,時間為$tm

echo '</pre>'
echo "<a href='./a.cgi'>回上一頁</a>"
echo '</body>'

沒有留言:

張貼留言