網頁程式撰寫/丁禾

出自六年制學程
跳轉到: 導覽搜尋

筆記

  1. <meta http-equiv='content-type' content='text/html;charset=UTF-8'/>
    • meta:對html文檔的描述
    • http-equiv:meta標籤要描述的類型
    • content-type:http-equiv的類型下要描述的內容
    • charset:字級編碼(例:UTF-8、BIG-5等)
  2. CSS:串接樣式表(在html是style)網上的.CSS檔就是封包的style內容。
  3. 伺服器語言三大系統:
    • ASP:微軟所有,要是微軟倒了就沒了,安全性也較差(開發者是以賺錢為出發點)。
    • JSP:性能比ASP好,業界(大公司)常用,半開放(允許私佔)。
    • PHP:開放,免費,此課程的中心,與前端呼應,又可控制後端。
  4. SQL:後端資料庫,標準語法。
  5. ajax:是javascrip中用來開通和伺服器通道的技術(例:學程該做的事)
  6. form屬性
  7. action是做出回應的檔案位置。
    • input:
      • type:輸入變數的種類(例如text、password、submit之類)<input type='變數的種類'>
        • submit:後送按鈕,是將輸入變數送到後台,可用value改變按鈕的顯示名稱。
        • name:輸入變數的名稱
        • value:在輸入變數前欄位就會出現的預設值
        • maxlength
        • select
        • teetarea
  8. 駝峰式表示法:變數名稱除了第一個單字外字首全部大寫(例:studentName)
  9. php指令分為三段
    1. 命令
      • echo:送出<?php echo  ;?>
      • $connect=mysql_connect:連接MySQL資料庫。<?php $connect=mysql_connect('連接位置','帳號','密碼'); ?>
        • mysql_close關閉與MySQL資料庫的連結。指令為mysql_close(連結ID),承上例:mysql_close($connect)
        • "insert into web set 姓名(要插入的欄位)='".(要插入的內容)."'"在資料庫中的「姓名」欄中插入一筆。
        • "update web set 姓名(要更改的欄位)='". (要更改的內容) ."' where wid=""更改資料庫中的某一筆,前面承上,後加的where wid=後打更改位置。
        • "insert into web set 姓名(要更改的欄位)='". ."' where wid=(wid欄中數字)"刪除資料庫中的某一筆,前面承上,後加的where wid=後打更改位置。
    2. 資料
      • $_REQUEST[]括號中填的是前端送來的變數。例如:$_REQUEST[studentName]就是指前端名為studentName變數的值。<?php echo $_REQUEST[u] ;?>
      • 雙引號"為字串開始和字串結束。例:"123"
      • .為連結字串的符號。例:"123"."345"="123345"
    3. 執行(即為;分號)

筆記二

  1. HTML段落是給瀏覽器了解的,php段落是給伺服器了解的
  2. php嵌入Html的方法:
    • 短型:<?…?>
    • XML型:<?php…?>
    • SCRIPT型:<SCRIPT language='php'?>…</SCRIPT>
    • ASP型:<%…%>
  3. $:在php中是變數前置符號,置於變數前(例:$aa、$bb)
  4. php中變數名稱分大小寫(例:$aa、$AA、$Aa是不一樣的變數),保留字(php已經指定好的文法單字)不分大小寫。
  5. 程式撰寫基本四個型別
    1. 字串:要用引號框起來'sdfa'
    2. 整數:123(沒加引號是代表數值「一百二十三」、'123'則代表字串)
    3. 浮點數:12.5、123.234...等等
    4. 布林值:
      • 只有兩個值:true或1、false或0
  6. php中=是派入(例:$a=123;是指將變數a的值設為123),要比大小要用==是不管型別比較(例:123==123;、123=='123'),===是型別和內容都要比較(例:123===123但不會123==='123')
  7. PHP註解
    • 單行註解用#(例:#這是一個變數)
  8. 多行註解用/**/(例:
    /*這是一個變數
    這是一個TM的變數*/)
  9. GET:由網址列就可傳送變數到後端,能傳得比POST小
  10. POST:要從表單傳送變數。比GET大很多,可傳圖片、幾萬字,會重編碼變很多百分比
    1. <form action='r.php' method='GET/POST' /> 此段後面的method就是前端資料給後端的方法,可選擇GET或POST

筆記三

  1. 空字串
  2. null是既沒位置也沒內容,資料型別是null
  3. 餘數(%)取除法餘數,例:
  4. or(||):其中至少要有一個為true
    • 真||真=真
    • 真||假=真
    • 假||真=真
    • 假||假=假
  5. and(&&)兩個都要為真
    • 真&&真=真
    • 真&&假=假
    • 假&&真=假
    • 假&&真=假
  6. not(!)
  7. 變數前加$號,常數前不加$號
  8. 常數用define("常數名",常數值)指定值,例define("NM",「妮姬」),常數NM得值就是「妮姬」
  9. 變數名字有分大小寫,不可以用數字開頭,也不能用-、@、!、+等運算元
  10. 可以宣告變數,但通常不需要宣告,第一次指派值時,變數會自然產生。例:var $x;
  11. 指定值給變數:$變數名=數值、字串或另一變數。例:$x=8;
  12. 動態變數(變數名為變數):如$a="b";則$$a為$b。$$a以變數$a之值為名。

陣列

  1. 字串索引
    • $x=array('引一'=>2,'引二'=>3,'引三'=>4);
  2. 不設定索引序列從0開始(0,1,2,3...)
    • 例:$x=array(1,1,2);,$x[0]=1、$x[1]=1、$x[2]=2

敘述區塊

  1. 敘述區塊:{}中間放可執行的的敘述。區塊結束處不必加';',但區塊內每個動作末尾均要加';'
    • if
      • (條件一){做一}elseif(條件二){做二}elseif(條件三){做三}…else{做其他}
    • switch
      • switch(變數) {case 值一 : 做一;break;

case 值二 : 做二;break; case 值三 : 做三;break; default :做其他;break; }

筆記四

  1. $result=mysql_query("select 姓名,phone from web where 姓名!=' ' ");
    • query 請求
    • select 某幾欄
    • from 某張表
    • where 條件

std筆記

2016/11/18

  1. 建 account_xxx資料表
    • 登入mysql,建一個新資料表。
  2. 建 std.php 加基本五行。
    • 如下:
      • <?php
      • include_once '../serverConstant.php'; //載入伺服器常數檔
      • include_once CLASS_FILE_PATH."/database/etable.php"; //載入etable.php
      • $ET=new etable; //建一個新etable
      • $ET->sql[0]="select * from account_TH"; //選擇要用的mysql資料表
      • $ET->main();
      • ?>
  3. 加 css、editable、perpage、colAlias 諸屬性
    • $ET->css='default'; //etable預設的css
    • $ET->editable="7"; //設定編輯權限(7是可看可邊可刪可插入)
    • $ET->perpage=5; //設定一頁要顯示幾筆(5就是5筆)
    • $ET->colAlias=array('money'=>'支出','date'=>'日期','summary'=>'摘要','account_e'=>'費用','account_a'=>'減去資產','subaccount'=>'項目','subaccountItem'=>'子項','name'=>'支付者') ; //設定要顯示在網頁中表單上各欄的代稱,例:array(lc_name=>代稱,…)
  4. 加 formType 屬性
    • $ET->formType=array('date'=>array('date'),'account_e'=>array('checkbox',array('費用'=>'費用')),'account_a'=>array('radio' ,array('現金'=>'現金','存款'=>'存款')),'subaccount'=>array('radio' ,array('食'=>'食','衣'=>'衣','住'=>'住','行'=>'行','育'=>'育','樂'=>'樂')),'name'=>array('radio' ,array('丁智仁'=>'丁志仁','白憶蘭'=>'白憶蘭')));
    • 設定各欄的選擇方式(例checkbox和date...等),以及設定其後送質
    • 派值範例:
      • $formType=array('長欄名'=>array('select',array('值'=>'提示文字','值'=>'提示文字','值'=>'提示文字',…)),
      • '長欄名'=>array('select2',第一選單陣列,第二選單長欄名,第二選單二維陣列,第二選單以提示代表欄值),
      • '長欄名'=>array('select22',array(0=>'===請選擇===')),
      • '長欄名'=>array('searchSelect', array(=>'===請輸入姓名或公司名稱===')),
      • '長欄名'=>array('radio' ,array('值'=>'提示文字','值'=>'提示文字','值'=>'提示文字',…)),
      • '長欄名'=>array('radioyn',array('0之提示','1之提示')),
      • '長欄名'=>array('checkbox',array('勾選後送值'=>'提示')),
      • '長欄名'=>array('date',array('ifFormat'=>'daFormat')),改畢,因欄值'%Y-%m-%d'是小日曆認得的格式,所以預選日期為欄值日期
      • '長欄名'=>array('auto',array('plain','html','wiki','tex')),改畢,$this->formType中未定義,則$this->fields[$i]["formType"]會自動將該欄定為auto型,如欄型為TEXT則form出textarea,其他出文字欄。第二元素為語法組合陣列,預設為plain(純文本)。
      • '長欄名'=>array('hidden',函式,表單種類),
      • '長欄名'=>array('password',array('編碼方式'=>'編碼指示')),編碼方式目前有plain,其指示為1,MD5其指示有
      • '長欄名'=>array('unix_time',"Y-m-d
        H:i:s",表單種類),待改,因欄值'%s'是小日曆不認得的格式,所以預選日期為跑到當天日期,要認得欄值格式須為「年-月-日 [10] 時:分」,用Calendar.setDateFormat('%s');無效。此事無解,參看http://192.168.3.175/et/class/calendar/jstest.htm,不是每一種格式jscalendar都可以認得出日期,如Date #0:的%s會解不出日期,Date #2:的…會解錯日期,Date #4:解不出日期。
      • '長欄名'=>array('oneWaySwitch',array(0=>'按鈕字',值=>'按完字')),
      • '長欄名'=>array('wrap')
  5. 嵌入 WWEB 中。
    • require_once "theme.php";
    • if(!isset($_REQUEST['exec_type'])){echo $html1;} //載入theme和$html1
    • if(!isset($_REQUEST['ajax'])){echo $html2;} //加在最後,載入$html2
  6. 加入密碼驗證。

2016/11/25

  • 建立 DVD.php
    1. 加 colAlias、formType 屬性
      • $ET->sql[0]="select concat(Name,'-',number),album,EN,buyDate,inHome from DVD"; //選擇要用的mysql資料表
      • $ET->colAlias=array("concat(Name,'-',number)"=>'片名數量','album'=>'套片','EN'=>'字幕','buyDate'=>'購買日期','inHome'=>'是否在家') ;
      • concat(Name,'-',number)可將兩欄位合在一起,不過因為是演算式所以無法編輯。應用上可只放單項,例:concat(Name)來防止人家編你不想改的欄位。
    2. 加 formType/oneWaySwitch 到 inHome 欄
      • $ET->formType=array('inHome'=>array('oneWaySwitch',array(0=>'待還',1=>'已還')));
    3. 加 concat(Name,'-',number) 演算式欄位,並了解演算式欄位無法編輯
    4. 加 演算式欄位的代名
    5. 加 moreCol(額外欄) 屬性,並解釋自訂函式 f1,f2
    6. 加 formValidate 驗證屬性,並解釋正規表示式
      • $ET->formValidate=array('Name'=>array('.+','請寫片名'));
      • '.+' 必填
      • '^[^\\s]+@[^\\s]+\\.[^\\s]+$' email
      • '^[1-9]\\d*$' 正整數
      • '^[A-Z]{1}[0-9]{9}$' 身份證號
      • '^(\\d+|[1-9]\\d*)$' 非負整數
      • '^(-?(\\d+|[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+))$' 數字
      • '^(\\d+|[1-9]\\d*\\.\\d*|0\\.\\d*[1-9]\\d*|0?\\.0+)$' 非負數值
      • '^((19|20)?[0-9]{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))$' 合理的日期
  • 回到 std.php
    1. 加 驗證屬性 到 summary、money 兩欄
      • $ET->formValidate=array(
      • 'money'=>array('^[1-9]\\d*$','支出必須是正整數'),
      • 'summary'=>array('.+','摘要不能空白'),
      • 'name'=>array('.+','支付者不能空白'),
      • 'subaccount'=>array('.+','項目不能空白')
      • );
    2. 同學取回連動兩陣列
    3. 加 formType/select2,select22 到 subaccount,subaccountItem 兩欄
      • $ET->formType=array(
      • 'date'=>array('date'),
      • 'account_e'=>array('checkbox',array('費用'=>'費用')),
      • 'account_a'=>array('radio' ,array('現金'=>'現金','存款'=>'存款')),
      • 'name'=>array('radio' ,array('丁智仁'=>'丁志仁','白憶蘭'=>'白憶蘭')),
      • 'subaccount'=>array('select2',$category,'subaccountItem',$categoryItem,1),
      • 'subaccountItem'=>array('select22',array(0=>'===請選擇==='))
      • );
    4. 加函式f1、f2
      • $ET->main();
      • if(isset($login->checkin) && $login->checkin==0){echo $nowMsg;}
      • if(!isset($_REQUEST['ajax'])){echo $html2;}
      • ?>

2016/12/23

多國語系

  1. 撰寫「std0En.php」
    1. 先寫基本五行:
      • include_once '../serverConstant.php'; //載入伺服器常數檔
      • include_once CLASS_FILE_PATH."/database/etloc_en.php";
      • include_once CLASS_FILE_PATH."/database/etable.php"; //載入etable.php
      • $ET=new etable; //建一個新etable
      • $ET=css='default'; //建一個新etable
      • $ET->sql[0]="select * from account_jj"; //選擇要用的mysql資料表
      • $ET->main();
      • 加粗的為後來增加的兩行,css檔和載入語言檔
    2. 加$ET->editable="7"; //設定編輯權限(7是可看可邊可刪可插入)
  2. 製作英文布景 themeEn.php
    • 重做一個themeEn.php
    • 將選項欄裡面的內容翻成英文
    • 改xo-banner裡面的標題字
    • 在index.php裡include_once '../serverConstant.php';的下面加(刪掉include_once "themeEn.php"):
      • if($_GET['lan']=='en'){include_once "themeEn.php";}
      • else{include_once "theme.php";}
    • 把theme的xo-banner之下的xo-main-logo的href改成href='/".SITE."/index.php?lan=en'

2016.12.30

ET加認證
  • 範例程式:userTraining.php
  1. 在ET開始前的前置程式內加一行:$nowMsg="您暫無權限閱覽此頁,請洽本站站長:jj@xxx.yyy。";
  2. 在ET屬性中加一行:$ET->sql[0]="select name,性別,psd,email,phone,grp,lineName from 6yearPersonTraining"; //選擇要用的mysql資料表
  3. 在$ET->main();後面加一行:if(isset($login->checkin) && $login->checkin==0){echo $nowMsg;}
隱藏非使用者的密碼
  • 範例程式:userTraining.php
  1. $ET->formType=array('psd'=>array('function','seePass'));
  2. 在$html2之後加:
    • function seePass($arr){
    • if($arr['row'][0]==$_SESSION['login_user']){return $arr['value'];}
    • else{return '無權看';}
    • }
只有吻合的登入者才可以編、刪資料
  • $ET->banE='banE';
    • function banE($row){
    • if(!in_array($_SESSION['login_user'],explode(';',$row[0]))){
    • $row['banEdit']=1;
    • $row['banErase']=1;
    • }
    • return $row;
    • }