2018/11/11 CGI程式設計進階 (for UNIX Perl) 國立中央大學電算中心 陳慶彥.

Slides:



Advertisements
Similar presentations
2011/11,12 南台資管 吳昭儀. 1. 使用者介面 (User Interface)  使用者操作畫面的安排  Textbox, ComboBox, ListBox, CheckList, … 2. 流程控制 (Process Control)  使用者輸入資料檢查  計算  資料輸出.
Advertisements

PHP 训练营 - MySQL OA 产品部 李鑫辉 2011 年 9 月. 内容提要 & 目录 1. 介绍 (10 分钟 ) 1.1. 简介 1.2. 特点 1.3. 安装 2. 语法 (60 分钟 ) 2.1. 存储引擎 MyISAM InnoDB 特点与区别.
第 7 章 数据库 1. Overview  数据库概述  数据库管理系统  数据库的体系结构和数据库模型  SQL 语言  数据库技术  构建数据库系统 2.
第六章 网页设计与制作基础.
动态网站开发 【HTTP与网络基础】 李博杰
第八单元 数据库MySQL应用基础 MySQL数据库应用基础 MySQ数据库操作使用 Mysql管理工具 第25章 数据库的增加/删除操作
动态Web开发技术--JSP.
基于JSP搭建Web应用程序.
第5章 HTML 標籤介紹.
第8讲 HTML与PHP基础 静态网页 vs. 动态网页.
Web Programming 網際網路程式設計
第14章 預存程序 14-1 預存程序的基礎 14-2 建立與執行預存程序 14-3 預存程序的參數傳遞 14-4 預存程序的傳回值
Ulrichsweb教育訓練 碩睿資訊有限公司.
資料庫 (Database) SQL Server 2008實作
数据库概述 简而言之,数据库(DataBase)就是一个存储数据的仓库。为了方便数据的存储和管理,它将数据按照特定的规律存储在磁盘上。通过数据库管理系统,可以有效的组织和管理存储在数据库中的数据。如今,已经存在了Oracle、SQL Server、MySQL等诸多优秀的数据库。在这一章中将讲解的内容包括。
MySQL 使用者名稱:USERNAME (上限16個字元)
第 八 章 資料庫安全 本投影片(下稱教用資源)僅授權給採用教用資源相關之旗標書籍為教科書之授課老師(下稱老師)專用,老師為教學使用之目的,得摘錄、編輯、重製教用資源(但使用量不得超過各該教用資源內容之80%)以製作為輔助教學之教學投影片,並於授課時搭配旗標書籍公開播放,但不得為網際網路公開傳輸之遠距教學、網路教學等之使用;除此之外,老師不得再授權予任何第三人使用,並不得將依此授權所製作之教學投影片之相關著作物移作他用。
第13章 FTP檔案上傳、 自動傳送 報告人 M9153314 李育旻.
Chap 13 視界與資料庫程式設計.
第三章 管理信息系统的技术基础 主要内容: 数据处理 数据组织 数据库技术 4. 计算机网络.
模块1 网页设计基础 实训1 体验HTML文档 1.1 网页基础知识 1.2 网站配色方案 1.3 网站设计常用软件
Subversion (SVN) Presented by 李明璋 R /2/21
主机DB2数据库应用与编程 任课老师:王湖南 四川大学计算机(软件)学院.
5.1 – 表格(FORM) 輸入元素 : 兩種傳遞方法 : GET or POST 範例 1. 文字欄位 Text box
CT212 (02/03)-Network Programming and design
HTML.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第3章 超文本标记语言(HTML) 3.1 基本结构标记 3.2 文本格式标记 3.3 超链接标记<A></A>
东南大学 大学计算机基础 ——基本概念及应用思维解析.
Lotus Domino R7 Designer
第四章 網頁表單與資料傳遞.
留言版 1.先Create一個留言板的table
Introduction to PHP part3
第六章 學習SQL語言.
ASP.NET 網頁製作教本 – 從基本語法學起
SQL Injection (資料隱碼) 簡介
資料庫安全 (Database Security)
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
第一組 指導教授:潘仁義老師 組 員:方明建 盧宗宏
JavaScript 语言3 学习网站:心蕊设计
Lesson 5 :基礎應用二(留言版) (2004/08/20).
SQL Server 2000 数据库入门.
第7章 ADO.NET操作SQL Server数据库
第3章 MySQL教學範本 主從式資料庫系統 - CH3.
MySQL数据库基础与实例教程 之 MySQL表结构的管理 郭水泉.
操作資料庫 教授:楊維邦 教授 助教:黃存賢 陳廷宣.
PHP+MySQL互動式網頁程式設計班 檔案上傳程式設計 講師:林業峻 CSIE, NTU 7 / 3, 2010.
檔案上傳 所謂檔案上傳,就是將檔案由客戶端的主機,藉 由瀏覽器傳送到伺服器的資料夾上。
SQL SERVER 一些经典语句 1.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
数据库应用技术 SQL Server 2005.
第20章 MySQL数据库.
Python联合服务器的使用.
架站實做—AppServ
网页设计与制作教程第5版 机械工业出版社同名教材 配套电子教案.
HTML 103 互動式網頁.
Open方法和close方法 主讲人:傅伟玉.
Ch09 在網頁之間傳遞資訊 網頁程式設計.
CS, ZJU 4/18/2019 Chapter 7 数据库.
3.2 Mysql 命令行 1 查看数据库 SHOW DATABASES; 2 创建一个数据库test1 CREATE DATABASE test1; 3 选择你所创建的数据库 USE test1; (按回车键出现Database changed 时说明操作成功!) 4 查看现在的数据库中存在什么表.
MATLAB 程式設計入門篇 初探MATLAB
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
第三章 SQL Server数据管理.
HTML 103 互動式網頁 助教:黃毓瑩.
第6章 PHP的数据采集.
11 檢視表的建立 11-1 檢視表的基礎 11-2 建立檢視表 11-3 修改與刪除檢視表 11-4 編輯檢視表的內容.
数据库应用技术 天津电大 翟迎建.
表单页面 表单是用户利用浏览器对Web站点网络数据库进行查询的一种界面,用户利用表单可以输入信息或选择选项等,然后将这些信息提交给服务器进行处理。通过表单,既可以将浏览器的信息发送到Internet服务器上,同时表单也可以使用户与站点的浏览者交互或从浏览者那里收集信息。它是网页的设计者和使用者相互交流的工具。表单对象包括文本域(单行、多行、密码)、列表、菜单、复选框、单选框、按钮等。
Presentation transcript:

2018/11/11 CGI程式設計進階 (for UNIX Perl) 國立中央大學電算中心 陳慶彥

主題 身份認證功能製作 檔案上傳功能製作 計數器製作 Perl+MySQL 國立中央大學電算中心 陳慶彥 2018/11/11 原始的HTML語言是設計用來展現靜態的資料,它讓人使用一種簡單的語法展現出豐富的多媒體資料,就像廣告看板一樣。由於WWW具有相當大的商業用途,因此推出後大受歡迎。可是單純的靜態展示好像缺少了什麼? 如果使用者需要的資料具有時效性,必需時常更新,這時該怎麼辦呢? 又或者你想留下使用者的資料,讓你的網頁能跟使用者達到互動的效果,這時又該如何? 由於上述種種需求,於是就誕生了CGI這東東。 CGI是Common Gateway Interface的縮寫,中文翻做『共通閘道介面』。它是一種標準介面程式,能讓你的網頁跟WWW server溝通,達到跟使用者互動的效果。而且透過CGI程式,可以讓你動態的產生網頁,秀出server上的最新資料。當你link到一個CGI物件時,你取回的文件並非是一份靜態資料,而是一個藉由程式動態產生的HTML資料流。傳回來的資料也許分分秒秒都在更改,或者針對使用者的特殊查詢而有不同的反應,例如股票市場行情等等。簡單來說,CGI程式就是能夠動態產生WWW網頁,並讓一般使用者經由WWW取用現存在傳統資訊系統內的資料。 首先,你得認清一個事實:如果資料是天天更新,你絕對不可能寫一個很大的HTML文件包含所有的這些更新資料。萬一放在WWW上的資料是分分秒秒都在變動的,那麼利用程式自動根據資料產生HTML文件顯然是你唯一的選擇。第二,CGI程式可以根據使用者輸入的要求自動產生HTML格式的資料。因為輸入資料是由WWW server負責接收,並非CGI程式本身,故得找出一個有效率的方法,來做使用者輸入參數和產生HTML文件程式間的溝通工作。 CGI本身制訂的標準有提到可以藉由環境變數來達成這個目的,而且CGI程式也有能力取得現存在各類資料庫裡的資料。這就是為什麼我們稱之為Common Gateway Interface,因為CGI程式通常就像橋樑或閘道一般,溝通著非WWW系統和WWW server (這和下面所說的Web server、HTTP server是一樣的,都是指一個架有HTTPd的伺服器)。 舉個例子來說,你是某家證券公司的大老闆,你的公司裡已經有一個相當完善的資料庫,裝滿了過去所有的股票價格資料,現在你想經由WWW提供這些資料給你的顧客們做參考,但是你的資料庫系統根本就不懂HTTP這種格式,這時你就需要一個閘道程式,當作股票價格資料庫和HTTP server間的橋樑通道,於是CGI程式就誕生了。它可以取得HTTP使用者送來的查詢指令,轉換成現存資料庫可以了解的指令,用以取得資料後,再將資料轉換為HTML格式,最後再經由HTTP server傳回給使用者,秀在使用者的瀏覽器上。 根據上述這些要求,CGI程式的確可以用任何程式語言來撰寫,只要該語言具有讀寫檔案的能力且該資料檔可被存取即可。不過這也表示寫程式時需要注意安全性的問題,以免資料被使用者有意無意的破壞,否則到時候就真的欲哭無淚了。 國立中央大學電算中心 陳慶彥

2018/11/11 身份認證功能製作 國立中央大學電算中心 陳慶彥

2018/11/11 身份認證功能製作 實作1- login.htm <HEAD><meta charset=big5><TITLE>CGI密碼登錄範例</TITLE></HEAD> <BODY bgcolor=white><p align="center"><br> <font size="+2">新增帳號</font> <FORM METHOD="POST" ACTION= "http://ccy.dd.ncu.edu.tw/~test/passwd.cgi?add"> <p align="center">帳號: <INPUT SIZE=30 NAME="username"><BR> 密碼 : <INPUT type=password SIZE=30 NAME="passwd"><BR> email : <INPUT SIZE=30 NAME="email"><BR> <INPUT TYPE="submit" VALUE="送出資料"> <INPUT TYPE="reset" VALUE="清除資料"> </FORM> 國立中央大學電算中心 陳慶彥

身份認證功能製作 實作1- login.htm (cont) <HR> 2018/11/11 身份認證功能製作 實作1- login.htm (cont) <HR> <p align="center"><font size="+2">系統登錄</font> <FORM METHOD="POST" ACTION="http://ccy.dd.ncu.edu.tw/~test/passwd.cgi"> <p align="center">帳號 : <INPUT SIZE=30 NAME="username"><BR> 密碼 : <INPUT type=password SIZE=30 NAME="passwd"><BR> <INPUT TYPE="submit" VALUE="送出資料"> <INPUT TYPE="reset" VALUE="清除資料"> </FORM> </BODY> 國立中央大學電算中心 陳慶彥

身份認證功能製作 實作1- passwd.cgi #!/usr/bin/perl 2018/11/11 身份認證功能製作 實作1- passwd.cgi #!/usr/bin/perl $passwdfile="/home/test/public_html/userpasswd"; &ReadForm(*FORM); if ($ENV{QUERY_STRING} eq "add") { &adduser; } else { &checkuser; } exit(0); #詳見次頁完整的原始碼 國立中央大學電算中心 陳慶彥

2018/11/11 身份認證功能製作 範例程式畫面 國立中央大學電算中心 陳慶彥

2018/11/11 身份認證功能製作 範例程式畫面 國立中央大學電算中心 陳慶彥

2018/11/11 檔案上傳功能製作 國立中央大學電算中心 陳慶彥

2018/11/11 檔案上傳功能製作 Form 的 參 考 寫 法 <FORM ENCTYPE="multipart/form-data" ACTION="upload.cgi" METHOD=POST> File to upload: <INPUT TYPE="file" NAME="filename"> <INPUT TYPE="submit" VALUE="SEND"> </FORM> 國立中央大學電算中心 陳慶彥

檔案上傳功能製作 Perl 的 CGI 程 式 參 考 寫 法 upload.cgi #!/usr/bin/perl use CGI; 2018/11/11 檔案上傳功能製作 Perl 的 CGI 程 式 參 考 寫 法 upload.cgi #!/usr/bin/perl use CGI; use Fcntl; $q = new CGI; print $q->header; my $uploaddir = "tmp"; if ($file = $q->param('filename')) { $fname = $file; $fname =~ s/\\/\//g; $fname =~ s/\.\.//g; if (($pos = rindex($fname, '/')) != -1) { $fname = substr($fname, $pos+1); } 國立中央大學電算中心 陳慶彥

檔案上傳功能製作 Perl 的 CGI 程 式 參 考 寫 法(cont) 2018/11/11 檔案上傳功能製作 Perl 的 CGI 程 式 參 考 寫 法(cont) print "<h2>File: $fname</h2>"; if (length($fname) > 0) { $fname = sprintf "%s/%s", $uploaddir, $fname; open (FN, "> $fname"); print "<pre>"; while (<$file>) { print; print FN $_; } print "</pre>"; close FN; } print $q->end_html; 國立中央大學電算中心 陳慶彥

2018/11/11 計數器製作 國立中央大學電算中心 陳慶彥

計數器製作-Form 的 參 考 寫 法 實作2- counter.htm <html><body> 2018/11/11 計數器製作-Form 的 參 考 寫 法 實作2- counter.htm <html><body> <script src="http:/ccy.dd.ncu.edu.tw/~test/counter.cgi"> </script> </body></html> 國立中央大學電算中心 陳慶彥

計數器製作- Perl 的 CGI 程 式 參 考 寫 法 2018/11/11 計數器製作- Perl 的 CGI 程 式 參 考 寫 法 實作2- counter.cgi #! /usr/bin/perl $cgiurl="http://ccy.dd.ncu.edu.tw/~test/counter.cgi"; #online.cgi的URL $imgurl="http://ccy.dd.ncu.edu.tw/~test"; #img目錄的URL $cntdir="/home/test/public_html"; $cntfile="counter.dat"; if ($ENV{'QUERY_STRING'} eq "") { } else { $cntfile=$ENV{'QUERY_STRING'}.".dat"; 國立中央大學電算中心 陳慶彥

計數器製作- Perl 的 CGI 程 式 參 考 寫 法 2018/11/11 計數器製作- Perl 的 CGI 程 式 參 考 寫 法 實作2- counter.cgi(cont) #讀取counter $FileName="< ".$cntdir."/".$cntfile; print "$FileName"; if (open (FILE,"$FileName")){ @LINES=<FILE>; close(FILE); $LINES[0]=~ s/\"|\s//g ; if (not ($LINES[0] eq "") ){ $people=$LINES[0]; } else { $people="0"; } $people++; } else{ $people=1;} 國立中央大學電算中心 陳慶彥

計數器製作- Perl 的 CGI 程 式 參 考 寫 法 2018/11/11 計數器製作- Perl 的 CGI 程 式 參 考 寫 法 實作2- counter.cgi(cont) #將資訊寫入檔案 $FileName="> ".$cntdir."/".$cntfile; open(OUTP, "$FileName") || die "記錄檔案開啟錯誤!!\n"; print OUTP "$people"; close OUTP; print "Content-type: text/html\n\n"; $text=$people; for($i=0;$i<=9;$i++){ $text =~ s/$i/<td><img src=\"$imgurl\/count_$i\.gif\"><\/td>/g; } 國立中央大學電算中心 陳慶彥

計數器製作- Perl 的 CGI 程 式 參 考 寫 法 2018/11/11 計數器製作- Perl 的 CGI 程 式 參 考 寫 法 實作2- counter.cgi(cont) $text="<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\"> <tr><td><img src=\"$imgurl\/count_left\.gif\"> </td>“.$text."<td><img src=\"$imgurl\/count_right\.gif\"></td> </tr></table>"; print "document.write(\'$text\');"; exit; 國立中央大學電算中心 陳慶彥

2018/11/11 計數器製作 範例畫面 國立中央大學電算中心 陳慶彥

2018/11/11 Perl+MySQL 安裝MySQL http://www.mysql.com/ 國立中央大學電算中心 陳慶彥

Perl+MySQL Install DBI-1.13 2018/11/11 Perl+MySQL Install DBI-1.13 [root@fax /tmp]# zcat dbi-1.13.tar.gz | tar xvf – [root@fax /tmp]# cd DBI-1.13 [root@fax DBI-1.13] perl Makefile.PL [root@fax DBI-1.13] make [root@fax DBI-1.13] make test [root@fax DBI-1.13] make install 國立中央大學電算中心 陳慶彥

Perl+MySQL Install msql-mysql-modules-1.2210 2018/11/11 Perl+MySQL Install msql-mysql-modules-1.2210 [root@fax /tmp]# zcat msql-mysql-modules-1.2210.tar.gz | tar xvf – [root@fax /tmp]# cd Msql-Mysql-modules-1.2210 [root@fax Msql-Mysql-modules-1.2210] perl Makefile.PL [root@fax Msql-Mysql-modules-1.2210]make [root@fax Msql-Mysql-modules-1.2210]make test [root@fax Msql-Mysql-modules-1.2210]make install 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例 [s8940@ccy public_html]$ mysql -u s8940 test 2018/11/11 Perl+MySQL MySQL操作範例 [s8940@ccy public_html]$ mysql -u s8940 test Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 742 to server version: 3.22.30 Type 'help' for help. mysql> 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) mysql> help; MySQL commands: 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> help; MySQL commands: help (\h) Display this text ? (\h) Synonym for `help' clear (\c) Clear command connect (\r) Reconnect to the server. Optional arguments are db and host exit (\q) Exit mysql. Same as quit go (\g) Send command to mysql serverquit (\q) Quit mysql status (\s) Get status information from the server use (\u) Use another database. Takes database name as argument Connection id: 742 (Can be used with mysqladmin kill) 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) mysql> show tables; +----------------+ 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> show tables; +----------------+ | Tables in test | | s8940 | | testac | 2 rows in set (0.00 sec) 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) mysql> CREATE TABLE s8941 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> CREATE TABLE s8941 -> (CreateDate DATETIME , -> StudentName char(50) , -> StudentID char(10) , -> Address char(100) , -> Birthday DATE ); Query OK, 0 rows affected (0.01 sec) mysql> show tables; +----------------+ | Tables in test | | s8940 | | s8941 | | testac | 3 rows in set (0.01 sec) 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> insert into s8941 values('2000/07/18 15:12:01','陳慶彥','87001', -> '中壢市五權里上山座屋38號','1988/01/01'); Query OK, 1 row affected (0.00 sec) mysql> select * from s8941; +-------------------------+----------------+-------------+-----------------------------------+--------------+ | CreateDate | StudentName | StudentID | Address | Birthday | +-------------------------+-----------------+-----------+------------------------------------+--------------+ | 2000-07-18 15:12:01 | 陳慶彥 | 87001 | 中壢市五權里上山座屋38號 | 1988-01-01 | 1 row in set (0.01 sec) 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> insert into s8941 values('2000/07/18 15:19:01','陳二','87002', -> '中壢市五權里上山座屋38號','1977/01/01'); Query OK, 1 row affected (0.00 sec) mysql> select * from s8941; +-------------------------+----------------+-------------+-----------------------------------+--------------+ | CreateDate | StudentName | StudentID | Address | Birthday | +-------------------------+-----------------+-----------+------------------------------------+--------------+ | 2000-07-18 15:12:01 | 陳慶彥 | 87001 | 中壢市五權里上山座屋38號 | 1988-01-01 | | 2000-07-18 15:19:01 | 陳二 | 87002 | 中壢市五權里上山座屋38號 | 1977-01-01 | 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> update s8941 set Address='金門縣金沙鎮光前村陽翟1號' where StudentID='87002'; Query OK, 1 row affected (0.00 sec) mysql> select * from s8941; +-------------------------+----------------+-------------+-----------------------------------+--------------+ | CreateDate | StudentName | StudentID | Address | Birthday | +-------------------------+-----------------+-----------+------------------------------------+--------------+ | 2000-07-18 15:12:01 | 陳慶彥 | 87001 | 中壢市五權里上山座屋38號 | 1988-01-01 | | 2000-07-18 15:19:01 | 陳二 | 87002 |金門縣金沙鎮光前村陽翟1號| 1977-01-01 | 國立中央大學電算中心 陳慶彥

Perl+MySQL MySQL操作範例(cont) mysql> quit 2018/11/11 Perl+MySQL MySQL操作範例(cont) mysql> delete from s8941 where StudentID='87002'; Query OK, 1 row affected (0.00 sec) mysql> select * from s8941; +-------------------------+----------------+-------------+-----------------------------------+--------------+ | CreateDate | StudentName | StudentID | Address | Birthday | +-------------------------+-----------------+-----------+------------------------------------+--------------+ | 2000-07-18 15:12:01 | 陳慶彥 | 87001 | 中壢市五權里上山座屋38號 | 1988-01-01 | mysql> quit 國立中央大學電算中心 陳慶彥

Perl+MySQL Perl連結MySQL執行資料的存取 use DBI; use strict; 2018/11/11 Perl+MySQL Perl連結MySQL執行資料的存取 use DBI; use strict; $dbh = DBI->connect(“DBI:mysql:資料庫”,“帳號”,”密碼“); $sth = $dbh->prpare($statement); $sth->execute; $sth->finish; $dbh->disconnect; 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作3 – create_table.cgi #!/usr/bin/perl use DBI; use strict; 2018/11/11 Perl+MySQL 實作3 – create_table.cgi #!/usr/bin/perl use DBI; use strict; my $dbh; if ($dbh=DBI->connect("DBI:mysql:test","s8940","") ){ print "連結資料庫:test OK!\n"; }else { print "無法連結資料庫:test!"; exit(0); } 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作3 – create_table.cgi (cont) 2018/11/11 Perl+MySQL 實作3 – create_table.cgi (cont) my $sth=$dbh->prepare(" DROP TABLE s8940 "); if ($sth->execute ){ $sth->finish; print "表格:s8940存在資料庫:test之中,刪除表格:s8940 成功\!\n"; }else { print "表格:s8940不存在資料庫:test之中,刪除表格:s8940 失敗\!\n"; } 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作 3– create_table.cgi (cont) 2018/11/11 Perl+MySQL 實作 3– create_table.cgi (cont) my $sth=$dbh->prepare("CREATE TABLE s8940 ( CreateDate DATETIME , StudentName char(50) , StudentID char(10) , Address char(100) , Birthday DATE) "); 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作3 – create_table.cgi (cont) if ($sth->execute){ 2018/11/11 Perl+MySQL 實作3 – create_table.cgi (cont) if ($sth->execute){ print "表格:s8940在資料庫:test上create OK!\n"; } else{ print "表格:s8940在資料庫:test上create 失敗!: $dbh->errstr\n"; $sth->finish; 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作3 – create_table.cgi (cont) 2018/11/11 Perl+MySQL 實作3 – create_table.cgi (cont) my $sth=$dbh->prepare("INSERT INTO s8940 VALUES (‘2000/07/18 15:12:01’,‘陳慶彥’,‘87001’,‘中壢市五權里上山 座屋38號','1988/01/01') "); if ($sth->execute){ print "表格:s8940新增資料 OK!\n"; }else{ print "表格:s8940新增資料失敗!: $dbh->errstr\n"; } $sth->finish; $dbh->disconnect; exit(0); 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作4 – select_table.cgi #!/usr/bin/perl use DBI; use strict; 2018/11/11 Perl+MySQL 實作4 – select_table.cgi #!/usr/bin/perl use DBI; use strict; my $dbh; if ($dbh=DBI->connect("DBI:mysql:test","s8940","") ){ print "連結資料庫:test OK!\n"; } else { print "無法連結資料庫:test!"; exit(0); } 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作4 – select_table.cgi (cont) 2018/11/11 Perl+MySQL 實作4 – select_table.cgi (cont) my $sth = $dbh->prepare("SELECT * FROM s8940"); if ($sth->execute ){ my $table = $sth->fetchall_arrayref; my($i, $j); for $i ( 0 .. $#{$table} ) { for $j ( 0 .. $#{$table->[$i]} ) { print "$table->[$i][$j]\t"; } print "\n"; } 國立中央大學電算中心 陳慶彥

Perl+MySQL 實作4 – select_table.cgi (cont) } else { 2018/11/11 Perl+MySQL 實作4 – select_table.cgi (cont) } else { print "表格:s8940查詢資料失敗\!\n"; $sth->finish; $dbh->disconnect; exit; 國立中央大學電算中心 陳慶彥

測驗-檔名(examsql.cgi) 請利用Perl+MySQL設計一個可供使用者登入資料與顯示資料的CGI程式 國立中央大學電算中心 陳慶彥