ࡱ> g VbjbjJJ <$(ub(ubg& 8i:"\\\777iiiiiii$kinX>iQ77>i\\iX2X2X2\\iX2iX2X2CfE\P]5̪$j fDii0izDn .tn(fEfEBnE\#70g"X2_777>i>i0777in777777777 B N: CMSC 4003 Lab Assignment 8: PHP and Oracle Name: Due: See the due date in D2L calendar. Preparation You may download lab7_schema.sql and run it in SQL*Plus. We will use some of the tables in the schema as examples. Hello World! (a) Create a file called helloworld.php using the following content: Example 1 Hello World!"); ?> (b) Put the file into the public_html directory of your Web server account ( HYPERLINK "http://www.comsc.uco.edu" www.comsc.uco.edu) (c) In your Web browser, check the execution of the file at:  HYPERLINK "http://www.comsc.uco.edu/~gqxxx/helloworld.php" www.comsc.uco.edu/~gqxxx/helloworld.php Note that gqxxx in the above URL should be replaced with your own account name. (d) PHP code can be embedded in HTML code as we see in this example. PHP code is enclosed by . Each PHP statement ends with a semicolon (;). Note the PHP built-in function echo(). It is used to output text strings into the resulting HTML code that is sent out by the Web Server to browsers. Therefore, the actual HTML code received by your browser does not include any PHP code. You may click on the menu item  View Source Code of your Web Browser to check the HTML code. It should be the same as the follows: Example 1

Hello World!

Variables, Strings and Data Types (a) Create a file called variable.php in the public_html directory using the following content: Example 2 Surf to: $website"); echo ('
Surf to: $website'); ?> (b) Test the file in your Web browser. (c) A variable is defined by a proceeding $ sign in PHP. Unlike C++ or Java, we do not need to declare a variable in PHP. Note how strings are represented in PHP. They can be enclosed by either single quote marks (') or double quote marks ("). The semantics of the two representations are different. In single quote marks ('), a string is interpreted as is. When double quote marks (") are used, if there are variables embedded in the string, the values of the variables will replace the variables in the string. In PHP, values can be strings, integers and floating point numbers. Now consider the following PHP code segment: Write down the values of variables y and z. Answer: For Loop (a) Create a file called forloop.php in the public_html directory using the following content: Example of For Loop "); for ($j=1; $j<=4; $j++) { echo (""); for ($k=1; $k<=2; $k++) echo (" Line $j, Cell $k "); echo(""); } echo (""); ?> The code creates a 4(2 table. (b) Test the file in your Web browser. (c) The for-loop syntax of PHP is almost the same as that of C++. Pay special attention to how the PHP code puts a table together. Compare the PHP code with the source code in your Web browser (Menu: View Source Code). While Loop Write a PHP script using while-loop to draw a 4(2 table the same way as the for-loop example. The syntax of a while-loop is as follows. while (condition) { // loop body; } Name your PHP code as whileloop.php. Test your code in your account. Submit the code along with this lab assignment through email. PHP also provides other control structures such as the if-statement. You can also define arrays and functions in PHP. We will see more in other examples later. References: Official PHP Website: (a)  HYPERLINK "http://www.php.net/" http://www.php.net/ (b) A list of all PHP functions:  HYPERLINK "http://www.php.net/manual/en" http://www.php.net/manual/en Tutorial: (a)  HYPERLINK "http://www.freewebmasterhelp.com/tutorials/php" http://www.freewebmasterhelp.com/tutorials/php (b) A hardcopy of the tutorial (PDF format) is available in D2L. To prepare for the course project, you need to read the whole tutorial carefully and try examples outside the lab. Insertion in Oracle Tables using PHP Starting from this step, we discuss the use of PHP for Oracle. We will learn a database concept called cursor. A cursor contains a set of tuples as the result of a query statement (select). The tuples in a cursor can be accessed one at a time. You may consider a cursor as a pointer that goes through the query result one by one sequentially. (a) Run the following SQL statement in SQL*Plus to check the current content of the table faculty. select * from faculty; (b) Create a file called orainsert.php using the following content in directory public_html. Note that you need to replace the account test/test with your own Oracle username and password (c) Test the file in your Web browser. (d) Notice how the code connects to Oracle (oci_connect). After login, a connection handle ($connection) is obtained and used to parse SQL statements (oci_parse). The connection handle is also used for commit (oci_commit) and logout (oci_close). The SQL statement does not need to end with a semicolon (;). Through oci_parse, a cursor variable ($cursor) is obtained. The cursor variable is used to execute the SQL command that it represents (oci_execute). The PHP built-in function putenv() is used to set the environment variables needed for Oracle. It is not necessary in our  HYPERLINK "http://www.comsc.ucok.edu" www.comsc.ucok.edu environment, since the variables are already set. (Use Linux command set to check) Note the PHP function die()/exit(). It is used to quit the execution of the current PHP code. The period (.) is the string concatenation operator in PHP. By the way, the string concatenation operator in Oracle SQL is ||, e.g., 'aa' || 'bb' = 'aabb'. Note how nested strings are represented in PHP. You are allowed to have a nested string that uses quotation marks different from the outer quotation mark, that is, if the outer quotation mark is double, then you can directly use a pair of nested single quotation mark and vice versa. See the string of $query as an example: since SQL use single quote marks, we need the nested string with single quote marks here. Note the PHP Boolean constant true and false. In function oci_execute(), the option OCI_NO_AUTO_COMMIT indicates the execution of the SQL statement without commit. By default, the SQL statement will be committed automatically after the successful execution of oci_execute(). If the option OCI_NO_AUTO_COMMIT is used, function oci_commit() is needed to commit the transaction in the database. Oracle Update in PHP Write a PHP script, called oraupdate.php, which updates the worksfor attribute of the faculty member Mike to EE. You only need to change a small part of the above PHP code to achieve this. Submit the script oraupdate.php along with this lab assignment through email. Display a Table (a) Create a file called displayfaculty.php using the following content. Note that you need to replace the account test/test with your own Oracle username and password "; echo " Name SSN Address" . "Department "; // fetch the result from the cursor one by one while ($values = oci_fetch_array ($cursor)){ $name = $values[0]; $ssn = $values[1]; $address = $values[2]; $dept = $values[3]; echo "$name $ssn $address" . "$dept "; } echo ""; // free up resources used by the cursor oci_free_statement($cursor); // close the connection with oracle oci_close ($connection); ?> (b) Test the file in your Web browser. (c) Note how the cursor variable ($cursor) is used. After oci_execute(), the cursor variable is populated with the query result. oci_fetch_array() is used to fetch tuples from the cursor one at a time. The fetched tuple is returned as an array. The elements in the array correspond to the attributes in a query result tuple in the same order. The size of the array equals the number of the attributes of the result tuple. The returned value of oci_fetch_array() is also used to check the end of the cursor. It returns FALSE when the end of the cursor is reached. When a cursor has been used, its recourse needs to be released by using the oci_free_statement() function. (d) Write a PHP script, called displayokcstudent.php, which displays the name, SSN and level of those students who are from OKC. Submit the script displayokcstudent.php along with this lab assignment through email. PHP for Oracle References (  HYPERLINK "http://us3.php.net/manual/en/ref.oci8.php" http://us3.php.net/manual/en/ref.oci8.php (  HYPERLINK "http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf" http://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf Session Management Session control is an important part of Web applications. Since HTML is not designed for interactions with users, session control is needed to remember user information between different Web/PHP pages. Note that there are different ways for session control in PHP. If you are more familiar with a method other than the one discussed in this lab assignment, you may use the other method in the course project. (a) Create tables client and clientsession by execute login_schema.sql in SQL*Plus. The client table is used to store user information for login purpose. The clientsession table stores the sessionid for each user who has logged in the system. One session id is assigned to a user after the user login. It is used to identify and verify the user between different Web pages in the application. You may check the definition of both tables in login_schema.sql. Note that, since USER is a reserved word in Oracle SQL, we cannot use it as the table name for users. (b) In SQL*Plus, insert the following two tuples into the table client for testing purpose. insert into client values ('smith', 'David Smith', 'happy', NULL); insert into client values ('susan', 'Susan Gonzales', 'lucky', NULL); commit; We have added two users, whose usernames are smith and susan, respectively. (c) In directory public_html, create an HTML file called login.html using the following content. Simple Login Form
User ID:
login.html is the Web page to accept user login information. It uses the FORM feature of HTML to accept user inputs. A textbox and a button are displayed in the Web page. Within the HTML tag FORM, the attribute action indicates that, when the button is clicked, PHP script loginresponse.php will be invoked. The attribute method is used to indicate the method used to pass user inputs to the PHP script loginresponse.php. In HTML, there are two basic methods for a FORM to pass user inputs, namely, POST and GET. Please refer to an HTML manual for further explanations. In this FORM, we choose to use method POST. Basically, when the button is clicked, loginresponse.php is invoked and the user input in the textbox is passed to loginresponse.php using the identifier clientid. (d) In directory public_html, create a PHP file called loginresponse.php using the following content. Note that you need to replace the account test/test with your own Oracle username and password. "; oci_close ($connection); // query failed - login impossible die("Client Query Failed"); } // query is OK - If we have any rows in the result set, we have // found the client $result = oci_execute($cursor); if ($result == false){ $e = oci_error($cursor); echo $e['message']."
"; oci_close($connection); die("Client Query Failed"); } if(!$values = oci_fetch_array ($cursor)){ oci_close ($connection); // client username not found die ("Client not found."); } oci_free_statement($cursor); // found the client $clientid = $values[0]; // create a new session for this visitor $sessionid = md5(uniqid(rand())); // store the link between the sessionid and the clientid // and when the session started in the session table $sql = "insert into clientsession " . "(sessionid, clientid, sessiondate) " . "values ('$sessionid', '$clientid', sysdate)"; $cursor = oci_parse($connection, $sql); if($cursor == false){ $e = oci_error($connection); echo $e['message']."
"; oci_close ($connection); // insert Failed die ("Failed to create a new session"); } $result = oci_execute($cursor); if ($result == false){ $e = oci_error($cursor); echo $e['message']."
"; oci_close($connection); die("Failed to create a new session"); } // insert OK - we have created a new session //oci_commit ($connection); oci_close ($connection); // jump to your welcome page Header("Location:welcomepage.php?sessionid=$sessionid"); ?> The first thing we do in loginresponse.php is to fetch the user input clientid from system variable $_POST. $_POST is an array populated by the POST method in login.html. Instead of using an index number, we use string "clientid" as an index to fetch the user input clientid from array $_POST["clientid"] and assign it to variable $clientid. The code then verifies the existence of the client id using table client. If the user exists, a new session id is randomly generated. The session id is inserted into table clientsession along with clientid. The session id is used to verify user privilege to access a Web/PHP page. Note the PHP function Header() near the end of the code. After the successful verification of user login information, Header() is used here to redirect the Web browser to: "welcomepage.php?sessionid=$sessionid" Note the part of the URL after the question mark. Here the GET (as opposed to POST) method is used to pass the session id to PHP script welcomepage.php for verification purpose. IMPOTANT: In such a Web application, whenever you go to a Web/PHP page, you almost always need to pass the session id for verification purpose. (e) In directory public_html, create a PHP file called welcomepage.php using the following content. The PHP script welcomepage.php is very straightforward. It first embeds/runs PHP script verifysession.php using PHP function include(). Here, you can consider PHP file verifysession.php as a procedure, it is embedded into welcomepage.php by function include(). It takes the session id passed to welcomepage.php and verifies it. If the execution of verifysession.php fails to verify the session id, the variable $sessionid is set to "" in verifysession.php. Using the content of variable $sessionid, welcomepage.php can decide the validity of the session id and what to do. IMPORTANT: In such a Web application, you need to include verifysession.php at the beginning of almost every Web/PHP page except login.html. It guarantees that each page is accessed by legal users. If someone wants to access a Web/PHP page directly without a valid session id, verifysession.php will notice it (set $sessionid to "") and your code can decide what to do. (f) In directory public_html, create a PHP file called verifysession.php using the following content. Note that you need to replace the account test/test with your own Oracle username and password. "; $sessionid=""; } else { // connection OK - validate current sessionid if (!isset($sessionid) or ($sessionid=="")) { // no session to maintain $sessionid=""; } else{ // lookup the sessionid in the session table to get the clientid $sql = "select clientid " . "from clientsession " . "where sessionid='$sessionid'"; $cursor = oci_parse($connection, $sql); if($cursor == false){ $e = oci_error($connection); echo $e['message']."
"; // query failed - login impossible $sessionid=""; } else{ $result = oci_execute($cursor); if ($result == false){ $e = oci_error($cursor); echo $e['message']."
"; $sessionid=""; } else{ if($values = oci_fetch_array ($cursor)){ // found the sessionid $clientid = $values[0]; } else { // invalid sessionid $sessionid = ""; } } oci_free_statement($cursor); } } oci_close($connection); } ?> The first thing we do in verifysession.php is to fetch the argument from system variable $_GET. $_GET is an array populated by the GET method (Remember the URL: "http://www.comsc.uco.edu/~gqxxx/welcomepage.php?sessionid=$sessionid"). Instead of using an index number, we use string "sessionid" as an index to fetch the argument sessionid from array $_GET["clientid"] and assign it to variable $sessionid. The code then verifies the existence of the session id using table clientsession. If the session id exists, $sessionid and $clientid will be populated. Otherwise, $sessionid is set to "". (g) As a summary, in directory public_html, you have files login.html, loginresponse.php, verifysession.php and welcomepage.php. In your Web browser, access the following URL. Note that you need to replace gqxxx with your own account name.  HYPERLINK "http://www.comsc.uco.edu/~gqxxx/login.html" http://www.comsc.uco.edu/~gqxxx/login.html Now you can login using the usernames (susan or smith) provided in step c. You may also try an invalid username to see what happens. Basically, you enter the user name in login.html, its FORM sends the username to loginresponse.php. loginresponse.php verifies the username and generates a session id for the user, which is inserted into the table clientsession. The session id is then passed to welcomepage.php. welcomepage.php embeds the PHP script verifysession.php that checks the session id. Why do we need to use verifysession.php at beginning of every Web/PHP page in an application except login.html? Answer: Now we will see an example that further combines PHP, Oracle and HTML FORM. (a) In directory public_html, create a PHP file called multi.php using the following content. Note that you need to replace the account test/test with your own Oracle username and password. Student Page " . "Course No: " . " " . ""); // the query string $query = "select cno, credits from CourseDescription where " . $whereClause; $cursor = oci_parse ($connection, $query); if ($cursor == false){ $e = oci_error($connection); die($e['message']); } $result = oci_execute ($cursor); if ($result == false){ $e = oci_error($cursor); die($e['message']); } // the form to process the selected courses // the selected course numbers are in array cnoList[] // and passed to proc.php echo "
"; echo ""; echo "" . "" . ""; // fetch the result from the cursor one by one while ($values = oci_fetch_array ($cursor)){ $cno = $values[0]; $credits = $values[1]; echo "" . "" . "" . ""; } echo "
Course NoCredits
$cno$credits
"; echo ""; echo "
"; oci_free_statement($cursor); // close the connection with oracle oci_close ($connection); ?> Read the comments in the code. There are two pairs of FORM tags in multi.php. The first pair of FORM tags is recursive because its action attribute invokes multi.php itself. The FORM passes argument queryCno to multi.php, which is a query condition provided by a user. Note the PHP syntax (\") to include double quotation mark within a string. The second FORM invokes proc.php. The FORM passes a list of user-selected course numbers as an array (cnoList[]) to proc.php. Why do we initialize the variable $whereClause with " 1=1"? Answer: (b) In directory public_html, create a PHP file called proc.php using the following content. Note that you need to replace the account test/test with your own Oracle username and password. "; } ?> proc.php processes the course numbers passed to it. Here you add more functions as needed by the application. A demonstration of a department-employee management program is provided with this lab assignment in demo.zip. (a) To run the program, unzip demo.zip and follow the instructions in readme.docx included in the demo. (b) In the demo, several frequently used operations are grouped together as PHP functions into the file utility_functions.php. They are used by other PHP files in the program. (c) In readme.docx, a flow chart of the program is provided. Make certain that you review the flow chart along with the code in the PHP files to understand the structure of the program. (d) One key issue in Web programming is how to pass needed data from the current page to the next page. The demo program uses three different ways to achieve this. They are summarized in the following table. Methods to pass dataUser InteractionGet Input
, including the use of hidden fields.Click on a button in the form._POST[]Link. Example: http://abc.php?param1=v1¶m2=v2Click on the link._GET[]PHP function Header(). Example: Header(http://abc.php?param1=v1¶m2=v2)PHP function. No user interaction needed._GET[] Make certain that you read the code and identify locations where the above three methods are used. The three methods are reflected in the flow chart using different arrow styles for your reference. Note that it is pos  *+,12èziXD9.#hti PJnHo(tHh"LPJnHo(tHhDPJnHo(tH&h*nh^B5CJ PJaJ nHo(tH hnB5CJ PJaJ nHo(tH hLS5CJ PJaJ nHo(tH hnB5CJ PJaJ nHo(tHh{@hYh5CJ aJ h@j5CJ PJaJ nHo(tH5hYhhYh5>*CJ OJPJQJ^JaJ nHo(tH/hD7;5>*CJ OJPJQJ^JaJ nHo(tH hYh5>*CJ OJQJ^JaJ &h{dhYh5>*CJ OJQJ^JaJ  +,23Z[g. / 6 = V ^ e h h^hgd2sBh^hgdth`hgdKh^hgd2f & Fgd^^TgdHi $da$gdYh$a$gdYh23LOYZ[x ʿ}odYdNCh2sBPJnHo(tHhVxPJnHo(tHhTPJnHo(tHhskPJnHo(tHh2fh2fPJnHo(tHh2fPJnHtHhBPJnHo(tHhA,GPJnHo(tHhLJgPJnHtHhLJgPJnHo(tHh2fh2fPJnHtHh2fPJnHo(tHh{ ZPJnHo(tHh>PJnHo(tHhB PJnHtHh>PJnHtHh mPJnHo(tH  - /    # $ % & 3 7 F J W c d e ˸ޭޟwޭlaVޭHjhFPJUnHtHhkPJnHo(tHh#7PJnHo(tHh*w%PJnHo(tHhhh0JPJnHo(tHhhPJnHo(tHhPJnHtHjhPJUnHtHhskPJnHo(tH$h#7htOJPJQJ^JnHtH$h#7h2sBOJPJQJ^JnHtHhWPJnHo(tHh2sBPJnHo(tHh8PJnHo(tH & ' d   45<C\dkh^hgdgZ & Fgd^^Th^hgdCh^hgd2sBe x   " e } ~ ڿti_ThsZPJnHo(tHhCPJnHtHh|PJnHo(tHhCGWPJnHo(tHhPJnHtHhPJnHo(tHhCPJnHo(tHhFHPJnHo(tHhwt:PJnHo(tHhWPJnHtHhWPJnHo(tHhhhF0JPJnHo(tHjhFPJUnHtHhFhFPJnHo(tHhFPJnHtH 5޶ޣwlalVlC$hgZh?3OJPJQJ^JnHtHhgZPJnHo(tHhM?PJnHo(tHh*w%PJnHo(tHh.QPJnHo(tHh2sBhCPJnHo(tH$h{*hFHOJPJQJ^JnHtH$h{*hCOJPJQJ^JnHtH$hChCOJPJQJ^JnHtHhCPJnHtHh7DPJnHo(tHhCPJnHo(tHhsZPJnHo(tHhnr\PJnHo(tH'AJRV{|  NO}~h^hgd?3h^hgd*w%Az{1HIlmкФvk^kSk^khPJnHo(tHh8hTPJnHtHhTPJnHo(tHhnPJnHo(tHh8PJnHo(tHh8h8PJnHtHhL*_PJnHo(tHhF^PJnHo(tHh~|PJnHo(tHhCGWPJnHo(tHhPJnHo(tHh:aPJnHo(tHhPJnHo(tHh*w%PJnHo(tHh?3h*w%PJnHo(tH N}޽zj_jQh -hpOPJnHo(tHhPJnHo(tHh2Uhj5PJnHo(tHhjPJnHo(tHh{ aPJnHo(tHh -PJnHtHh#PJnHo(tHh PJnHo(tHh -h -PJnHtHh -PJnHo(tHhXPJnHo(tHhXPJnHo(tHh'PJnHo(tHhF^PJnHo(tHhPJnHo(tHVW^e1h^hgd,^h^hgd}ah^hgdY) & Fgd^^Th^hgd*w%h^hgd -9Wijk|n|`UJhisgPJnHo(tHh;PJnHo(tHh?3h"PJnHo(tH jh"PJnHo(tHh"PJnHo(tH$hY)h$OJPJQJ^JnHtH$hY)hQ[OJPJQJ^JnHtH$hY)huOJPJQJ^JnHtH$hY)h,^OJPJQJ^JnHtHhY)PJnHo(tHh97PJnHo(tHh}aPJnHo(tHhpOPJnHo(tH1BDWZbjk "8JLvh^hgdqUMh^hgd=p & Fgd^^Th^hgdh^hgd}ah^hgd,^"#tu"8 HJLӽӔ~p~e~eZeOeh=pPJnHo(tHhuyPJnHo(tHhTPJnHo(tH jhGePJnHo(tHhGePJnHo(tHhPJnHo(tHhPJnHo(tH$hChtOJPJQJ^JnHtHhtPJnHo(tHhgUPJnHo(tHh[* PJnHo(tHhkPJnHo(tHhGSlx &Ϲπh]Fh,hoU|hv-CJOJPJQJ^JaJnHtHhoU|hv-CJaJ/hoU|h 5CJOJPJQJ^JaJnHo(tH,hoU|h CJOJPJQJ^JaJnHtHh h$8PJnHtHh$8PJnHo(tHh%PJnHtHh%PJnHo(tHhKPJnHo(tHh`PJnHo(tHhOPJnHo(tHhw6hi PJnHo(tHhw6hw6PJnHtH./OJK# $ O f hUD>]^hgd|h^hgd h`hgd$8h^hgd$8&*]hkoswxz{йТТЊs\sE,E1hoU|h;SCJOJQJ^JaJfHq ,hoU|h;SCJOJPJQJ^JaJnHtH,hoU|hC(CJOJPJQJ^JaJnHtH,hoU|hCJOJPJQJ^JaJnHtH/hoU|hCJOJPJQJ^JaJnHo(tH,hoU|hbCJOJPJQJ^JaJnHtH,hoU|h)SCJOJPJQJ^JaJnHtH,hoU|h CJOJPJQJ^JaJnHtH/hoU|hFCJOJPJQJ^JaJnHo(tH _`ghjkpqsvyz涟qqqqqqqqY/hoU|h|CJOJPJQJ^JaJnHo(tH,hoU|hCJOJPJQJ^JaJnHtH,hoU|hxCJOJPJQJ^JaJnHtH,hoU|h$CJOJPJQJ^JaJnHtH,hoU|h CJOJPJQJ^JaJnHtH1hoU|hCJOJQJ^JaJfHq 1hoU|h[CJOJQJ^JaJfHq . 7 f ! !!9!_!һҤv_vHһһ1,hoU|hWCJOJPJQJ^JaJnHtH,hoU|h|&CJOJPJQJ^JaJnHtH,hoU|h{CJOJPJQJ^JaJnHtH,hoU|h1CJOJPJQJ^JaJnHtH,hoU|hZCJOJPJQJ^JaJnHtH,hoU|hgCJOJPJQJ^JaJnHtH,hoU|h}gCJOJPJQJ^JaJnHtH,hoU|h CJOJPJQJ^JaJnHtH,hoU|h9CJOJPJQJ^JaJnHtH "!9!m!!!!!!!!!""."1"2"h^hgdh^hgdOh^hgdWh^hgd h^hgd1h^hgdZ_!e!!!!!!""."1"2"3"4"["\"^"y"һv_QF;F;F0h OPJnHo(tHh/PJnHo(tHh`PJnHo(tHh h`PJnHo(tH,hoU|hCJOJPJQJ^JaJnHtH,hoU|h(iGCJOJPJQJ^JaJnHtH,hoU|h1YCJOJPJQJ^JaJnHtH,hoU|h CJOJPJQJ^JaJnHtH,hoU|hOCJOJPJQJ^JaJnHtH,hoU|hWCJOJPJQJ^JaJnHtH,hoU|h.CJOJPJQJ^JaJnHtH2"Y"Z"T#U###*$+$:%;%%%8&9&''( (g)h)});*<***h^hgd_Xh^hgdgTp & Fgd^^Th^hgd`y"z""""""""""""""""""".#8#F#O#S#T#U#######޺ޯ{p{e{X{h h`PJnHtHh}gPJnHo(tHh9&PJnHo(tHh`PJnHo(tHh1.PJnHo(tHh(iGPJnHtHh1YPJnHtHh}gPJnHtHh4mPJnHo(tHh4mh4mPJnHtHh hv&sPJnHtHh)SPJnHtHhv&sPJnHo(tHh OPJnHo(tHhR9(PJnHo(tH #$ $$'$)$*$+$E$K$$$$$$$$$$$$*%+%.%/%9%:%;%P%W%%%ɾuj_U_jhXZ PJnHtHh]PJnHo(tHh PJnHo(tHhXhI0JPJnHo(tH'jhXhIPJUnHtHhIPJnHtHjhIPJUnHtHh hIPJnHtHhIPJnHo(tHh`PJnHo(tHh`PJnHo(tHh}gPJnHtHhwPJnHo(tHh:PJnHo(tH%%!&"&$&%&(&)&*&,&-&/&0&1&5&6&7&8&9&j&}&&&&&&&&& ' '!')'0'7'E'F'W'^''''''''' (ʿʿʿʿʴʿʿʿʿʴʅ{hD.PJnHtHhyPJnHo(tHhRhRPJnHo(tHhRPJnHo(tHh#VPJnHo(tHhsPJnHo(tHhLyPJnHo(tHhAePJnHo(tH hhhhPJnHtHhPJnHo(tHhyPJnHo(tH/ ( (( ($(/(A(\((((((((())#)-)3)9)D)G)S)c)f)g)h)}))))Ӿɳ޳}rg\gh=@PJnHo(tHhrPJnHo(tHhgTpPJnHo(tHh`PJnHo(tHhyPJnHo(tHhdPJnHo(tHh%PJnHo(tHh1YPJnHtHhb/PJnHo(tHhpPJnHo(tHh8EVPJnHtHhPJnHo(tHh}gPJnHo(tHh_PJnHo(tHhD.PJnHo(tH )))):*;*<*C*L*M*N*[*\*]*i*k*z*{*}*~**********++̪̪̿̈}rgr\rOrh h/PJnHtHh2GPJnHo(tHh h{PJnHo(tHh/PJnHo(tHhu'PJnHo(tHh PJnHtHh_Xh_XPJnHtHh PJnHo(tHh*PJnHo(tHh*PJnHtHh*h*PJnHtHh_XPJnHtHhgTpPJnHo(tHhrPJnHtHhrPJnHo(tHh.PJnHtH**D+E+H+h++++',(,R,t,,,,-(-?-A-B-Y-z--h^hgduh^hgd.h^hgd-Oh`hgd/h^hgd/ & Fgd^^T+++D+E+v+++++++++++++Ѻѣѣыt]tF,h|Ph.CJOJPJQJ^JaJnHtH,h|PhC(CJOJPJQJ^JaJnHtH,h|Ph 5CJOJPJQJ^JaJnHtH/h|Ph 5CJOJPJQJ^JaJnHo(tH,h|PhfCJOJPJQJ^JaJnHtH,h|Ph)SCJOJPJQJ^JaJnHtH,h|Ph-OCJOJPJQJ^JaJnHtHh/PJnHo(tHh h/PJnHtH+++%,,,,?-c-n---1.2.7.8.:.;.C.D.E.F.H.I.P.Q.R.渡s\EEEEEE,h|PhMJ~CJOJPJQJ^JaJnHtH,h|PhCJOJPJQJ^JaJnHtH,h|PhBCJOJPJQJ^JaJnHtH,h|PhuCJOJPJQJ^JaJnHtH,h|Ph}gCJOJPJQJ^JaJnHtH,h|Ph-OCJOJPJQJ^JaJnHtH,h|Ph.CJOJPJQJ^JaJnHtH1h|Ph.CJOJQJ^JaJfHq ------.-.h....../,/B/C////////// 0h^hgd-Oh^hgdBR.S.U.V.W.X.a.b.c.h.i.m.n.o.q.r......../]/^/k/l/һҤҤu^GG,h|Ph;r;CJOJPJQJ^JaJnHtH,h|PhnCJOJPJQJ^JaJnHtH,h|Ph8EVCJOJPJQJ^JaJnHtH/h|PhfdCJOJPJQJ^JaJnHo(tH,h|PhoCJOJPJQJ^JaJnHtH,h|PhRsYCJOJPJQJ^JaJnHtH,h|Ph-OCJOJPJQJ^JaJnHtH,h|PhMJ~CJOJPJQJ^JaJnHtHl/}/~//////////// 0)08090;0Һuu^F/h|Ph-OCJOJPJQJ^JaJnHo(tH,h|Ph(iGCJOJPJQJ^JaJnHtH,h|PhVCJOJPJQJ^JaJnHtH,h|PhCJOJPJQJ^JaJnHtH,h|Ph;r;CJOJPJQJ^JaJnHtH/h|Phx&CJOJPJQJ^JaJnHo(tH,h|Phx&CJOJPJQJ^JaJnHtH,h|Ph-OCJOJPJQJ^JaJnHtH 090<0=0d0e022 3 33333344h455/555h^hgd2h^hgdh^hgd; & Fgd^^Th^hgdQh^hgd/h^hgd-O;0<0=0j00000!1/121[11111111111222źŭuj`jVjKjVj@hm0PJnHo(tHhhPJnHo(tHh%PJnHtHh.HPJnHtHhjQmPJnHo(tHhjQmPJnHtHhPJnHo(tHhYtlPJnHtHhPJnHo(tHhRhRPJnHo(tHhYtlhYtlPJnHtHh}gPJnHo(tHhRPJnHo(tHh/PJnHo(tHh-Oh-OPJnHo(tH,hfdh/CJOJPJQJ^JaJnHtH2222'2628292@2A2e2h2w222222 3 3 32363<3@3H3[333ἲzozodYNzh%PJnHo(tHh!PJnHo(tHhOtMPJnHo(tHh+PJnHo(tHh^PJnHo(tHh^UPJnHo(tHhi PJnHo(tHhi hi PJnHtHhi PJnHtHhu'PJnHtHhEkPJnHtHhRhYtlPJnHo(tHhYtlhYtlPJnHtHh%PJnHtHhYtlPJnHo(tHhYtlPJnHtH33333333333333344444494;4߰wl^TGTh;h;PJnHtHh;PJnHtHjh;PJUnHtHh\PJnHo(tH jh\PJnHtHh;PJnHo(tHhPJnHo(tHhQ9PJnHo(tHh1PJnHo(tHh^PJnHo(tHh PJnHtHhMqNhMqNPJnHtHh*hQPJnHtHhQPJnHo(tHhMqNPJnHtHh PJnHo(tH;4<4=4f4g4h4i4j4k4445555.5/55o_TI>3h PJnHo(tHh2PJnHo(tHhPJnHo(tHhPJnHo(tHhp8h0JPJnHo(tH$h-h|0JCJPJaJnHtH h-h|CJPJaJnHtH)jh-h|CJPJUaJnHtHh\PJnHo(tH jh\PJnHtHh;hPJnHo(tHhIIh;0JPJnHtHjh;PJUnHtH'jhIIh;PJUnHtH55555666666666677 7!7"777c8d8{88899Ƚ駜|qfq[q[P[qh-!PJnHo(tHhU%PJnHo(tHhpPJnHo(tHhwPJnHo(tHhB&PJnHtHhB&PJnHo(tHhlEPJnHo(tHh: PJnHo(tHhPJnHo(tHh!PJnHo(tHhI0CPJnHo(tHhbe3PJnHo(tHh\+PJnHo(tHh2PJnHo(tHh PJnHo(tHhPJnHo(tH566!7"799`9a99999?:@::::::::#;Q;;;h^hgd2h^hgd\zh^hgdlEh^hgd299 999:9>9I9K9_9`9a9|99999999999999>:?:@:D:_:zodoYNh&PJnHo(tHh?PJnHo(tHhU%PJnHo(tHh -PJnHo(tHhk)PJnHo(tHhnPJnHo(tHhAPJnHo(tHh\zh\zPJnHtHh\zPJnHo(tHh<#PJnHo(tHh 9PJnHo(tHhqPJnHo(tHh15PJnHo(tHhePJnHtHhePJnHo(tHhH xPJnHo(tH_:::::;;;;;M<W<<<<<<<<<<5=6=G=J=T=a=g====ƻxm`UUh9PJnHo(tHh2h|PJnHtHh|PJnHo(tHhu42PJnHtHh2hYpEPJnHtHhPJnHo(tHhYpEPJnHo(tHhu42PJnHo(tHhu42PJnHo(tHh2PJnHo(tHh>PJnHo(tHh2h2PJnHtHh\zPJnHo(tHh\PJnHo(tHh?PJnHo(tH;;;;L<M<>>>>}?~?????@/@0@U@q@@@@@h^hgdh^hgdh^hgdlEh^hgd!h^hgd2=== >>>6>G>W>>>>>>>>>>>>>>>???1?=?I?J?N?y?|?뭢qdddYhCPJnHo(tHh h!PJnHtHh!h!PJnHo(tHh!PJnHo(tHh>hxPJnHtHhxPJnHo(tHhPJnHo(tHhu42hu42PJnHo(tHh2hHoHHHһҤһҙvkv^^^vSHShbmPJnHo(tHhqPJnHo(tHh>1hePJnHtHhPJnHo(tHhPJnHo(tHh>hePJnHtHhePJnHo(tHh>1PJnHo(tH,h|Ph1YCJOJPJQJ^JaJnHtH,h|Ph(iGCJOJPJQJ^JaJnHtH,h|PhCJOJPJQJ^JaJnHtH,h|PhmqCJOJPJQJ^JaJnHtHEEE"F$F%FRFnFFFFFF9H:HXIYI-JJJsKtKKKKLh^hgd?h^hgd rh^hgd>1h^hgdH2I;IWIXIYI]IoIuIJJ+J,J-JBJJJJJ-K4KrKsKtKKKKKǺǯvk^Qkh>h?PJnHtHh h?PJnHtHh?PJnHo(tHhAPJnHo(tHh.`PJnHo(tHh5?-PJnHo(tHh>1hO@lPJnHtHhO@lPJnHo(tHhgPJnHo(tHh>1h;PJnHtHh>1h rPJnHtHha5PJnHo(tHhPJnHo(tHhYAPJnHtHh rPJnHo(tHKKKKKLLLLMMM9M?MCMDMPMaMMMMMMMŵŧwlaTaTaJa=h hbYPJnHtHhbYPJnHtHhhbYPJnHtHhbYPJnHo(tHh+PJnHo(tHhXPJnHo(tHh>h5?-PJnHtHh h5?-PJnHtHh5?-PJnHo(tHhh?PJnHo(tHh3OJPJQJ^JnHtH$hO#h?OJPJQJ^JnHtHhCh?PJnHo(tHh?PJnHo(tHh!h?PJnHo(tHL$L%L>LkLLLLLLLLL9O:OPPxQyQ|QQQQQQQRh^hgdm h^hgd h^hgd?MM N!N,N-N0N5N=NWNiNNNNNNNNNNNN O-O8OEOtOOOOOOOO PPPLP蠕~s~~hha@PJnHo(tHhGPJnHo(tHhj2PJnHtHhhj2PJnHtHhj2PJnHo(tHhBPJnHo(tHh#PJnHo(tHhhbYPJnHtHhbYPJnHtHh hbYPJnHtHhbYhbYPJnHo(tHhbYPJnHo(tHh>hbYPJnHtH%LPMPQPbPrPxPPPPPPPPPPPPPPQQ,Q8QDQEQIQtQwQxQyQ鹮{nnn`hCh PJnHo(tHh h PJnHtHh!h PJnHo(tHh>h PJnHtHh h PJnHtHh?PJnHo(tHh PJnHo(tHh5?-PJnHo(tHhhPJnHtHhPJnHo(tHhhj2PJnHtHhj2PJnHo(tHhSPJnHo(tHyQQQQQQQQR9RVRWRRRRR5S麣u^G0,h|Phs6CJOJPJQJ^JaJnHtH,h|Ph"BCJOJPJQJ^JaJnHtH,h|PhCJOJPJQJ^JaJnHtH,h|Ph qwCJOJPJQJ^JaJnHtH,h|PhC(CJOJPJQJ^JaJnHtH,h|Ph 5CJOJPJQJ^JaJnHtH/h|Ph 5CJOJPJQJ^JaJnHo(tH,h|Ph)SCJOJPJQJ^JaJnHtH,h|Phm CJOJPJQJ^JaJnHtHR%RBRTRWR_RRRRRRSGSgSSSSSST1h+ZPJnHtHh+ZPJnHtHh+ZPJnHo(tHhU?PJnHo(tHhyZ'PJnHo(tHh>hPJnHtHh hPJnHtHhhPJnHtHhPJnHo(tHh PJnHo(tH,h|Ph(iGCJOJPJQJ^JaJnHtH,h|Ph}]CJOJPJQJ^JaJnHtH,h|Phm CJOJPJQJ^JaJnHtH5W[W\W_WWWWWWWWWWWWWWX7X>XTX[XeXlXoXxXXXXXYYY$Y&YŸҭŭҸҢҢҗҁti\i\ih>hzgPJnHtHhzgPJnHo(tHhm h dPJnHtHh dPJnHo(tHhe\PJnHo(tHh%PJnHo(tHh[PJnHo(tHhfPJnHo(tHhm hfPJnHtHh>1hPJnHtHhPJnHo(tHhU?PJnHo(tHh+ZPJnHo(tHh>1h+ZPJnHtH"&Y,Y-Y4Y7YGYHYKYYYYYYYYYYZZZ#Z$Z%Z&ZRZnZoZZ[[#[ö͙{peZeMeMh+Uh+UPJnHtHhBPJnHo(tHh+UPJnHo(tHhJnPJnHo(tHhbhzgPJnHo(tHhhhUO0JPJnHo(tHhhhUO0JPJnHtHhUOhUOPJnHo(tHhUOhUOPJnHtHhUOPJnHtHjhUOPJUnHtHh>hzgPJnHtHhzgPJnHo(tHh hzgPJnHtHXMYNYYY%Z&Z\\\\\\\\\\\\]]]]]]^h^hgd-h^hgd{Z & Fgd^^Th^hgdlE#[[[[[[\\\4\E\i\{\\\\\\\\\\\]øzodYNYCh{ZPJnHo(tHhV,PJnHo(tHh2 PJnHo(tHh,[PJnHo(tHhfDPJnHo(tHh<hfD5PJnHo(tHhrPJnHo(tHhA> PJnHo(tHh6/hp]PJnHtHhp]PJnHo(tHhKyPJnHo(tHh6/hzgPJnHo(tHh]xPJnHo(tHh6/h6/PJnHtHh6/PJnHo(tHh+UPJnHo(tH]'](]+]H]I]J]`]l]x]y]}]]]]]__B_D_W_[_n_y___ӸӸӸ魖~~fO~,h|Ph)SCJOJPJQJ^JaJnHtH/h|PhUOCJOJPJQJ^JaJnHo(tH/h|Ph 5CJOJPJQJ^JaJnHo(tH,h|Ph-CJOJPJQJ^JaJnHtHhwPJnHo(tHh h6`VPJnHtHh!h6`VPJnHo(tHh6`VPJnHo(tHh PJnHo(tHh{ZPJnHo(tHh/PJnHo(tH^'^(^_^^^^^^^^_B___`_____!`Z```!afaxaya0hUD]0^hgdk1h^hgd-______aabVbcbnbbb*dMd~eee黢tt]F,h|PhP]CJOJPJQJ^JaJnHtH,h|Phtu'CJOJPJQJ^JaJnHtH,h|Ph2hCJOJPJQJ^JaJnHtH,h|Ph}gCJOJPJQJ^JaJnHtH1h|Ph2hCJOJQJ^JaJfHq ,h|Ph-CJOJPJQJ^JaJnHtH,h|PhC(CJOJPJQJ^JaJnHtH,h|Ph 5CJOJPJQJ^JaJnHtHyaaaabb?bVbXbYbzbbbbbbb+cEcxcccccc#dPdedh^hgd2hh^hgd-ed~dddeee+eme}e~eeeeeeeee f fffIgJgggh^hgd h^hgdP]h^hgd-eeeee ff5f6fGfffffffffffffgǼzoboWoLoAhl"PJnHo(tHh~$PJnHo(tHh+6PJnHo(tHh-h._PJnHtHh._PJnHo(tHhq PJnHo(tHh;SPJnHo(tHhcOPJnHo(tHh[ PJnHo(tHhj;PJnHo(tHh-APJnHo(tHh-PJnHo(tHh{ZPJnHo(tH,h|Ph-CJOJPJQJ^JaJnHtH,h|Ph(iGCJOJPJQJ^JaJnHtHgg)gHgIgJgmgqgugggggggggggggggghhhǼǦǛxmbUbmHmHmh-h!EPJnHtHh4\|h`@]PJnHtHh`@]PJnHo(tHh!EPJnHo(tHhj;PJnHo(tHhlPJnHo(tHh-hUPJnHtHh PJnHo(tHh,8PJnHo(tHh,PJnHo(tHh,PJnHo(tHh?PJnHo(tHh!1'PJnHo(tHhcPJnHo(tHhl"PJnHo(tHh-hl"PJnHtHghhhhhhhhhhhi2i3ifiiiij%j@jBjEjFjjh^hgd{Zh^hgd)gh^hgdJh^hgd-hhhhhhhJhNhphqhhhhhhhhDjEjFjOjYj]jcj|i^SH>h!EPJnHtHh!EPJnHo(tHhz PJnHo(tHh,8PJnHo(tH$h,~h_`OJPJQJ^JnHtH$h,~h)gOJPJQJ^JnHtHh hJPJnHtHh!hJPJnHo(tHh&PJnHo(tHh&:PJnHo(tHhJPJnHo(tHh-ht!PJnHo(tHht!PJnHo(tHhZht!5PJnHo(tHh PJnHo(tHcjyjjjj"k&kkkkkk l?lmmmmmmn*nHnInOnPnQnSnXnYnbncnnnnnnnnnnnnnnnnnnnoo o!o"o$opT`#ÿʿʸʫʞh5>hS PJnHtHhKhS PJnHtHU hS o(hS hHhS hS PJnHtHhS PJnHo(tHh,8PJnHtHh_ PJnHo(tHh!EPJnHo(tH>jj&kk?llmmmmm $$Ifa$gd0ch^hgdS  & FgdS h^hgd{Z mm*nInRnpggg $Ifgd0ckd$$IflFhk,"j  t0    44 layt0cRnSnYncnnnnpggggg $Ifgd0ckde$$IflFhk,"j  t0    44 layt0cnnnnno#opggggg $Ifgd0ckd$$IflFhk,"j  t0    44 layt0c#o$o%ooobc'/1pggggggg^\h^hgd{Zh^hgdS kd$$IflFhk,"j  t0    44 layt0c sible that a page links to itself. Such examples can be seen in department.php and employee.php. (e) Review how the program handles error when a problem occurs. We basically exit whenever a problem with the database is detected. (f) One problem of the execute_sql_in_oracle() function in utility_functions.php is that it only executes one SQL statement at time. It is a waste of the Oracle connection resource if we have several SQL statements to execute at the same time. Consider what we should do in such a case. Write down your answer below. Answer:     PAGE  PAGE 20 #8&./0235689;<BCDFGMNPQRTUVȾhQsO0JmHnHuhgP hgP0JjhgP0JUhrjhrUh!EPJnHo(tHhQsOPJnHtHhS PJnHtHh5>hS PJnHtH124578:;DEFRSTUVh^hgd{Z &`#$gd A:&P182P:p{ Z/ =!"#$% DyK http://www.php.net/yK (http://www.php.net/DyK http://www.php.net/manual/enyK :http://www.php.net/manual/en1DyK /http://www.freewebmasterhelp.com/tutorials/phpyK ^http://www.freewebmasterhelp.com/tutorials/phpDyK www.comsc.ucok.eduyK 6http://www.comsc.ucok.edu/DyK *http://us3.php.net/manual/en/ref.oci8.phpyK Thttp://us3.php.net/manual/en/ref.oci8.php$$If!vh#vj#v #v:V l t05j5 5ayt0c$$If!vh#vj#v #v:V l t05j5 5ayt0c$$If!vh#vj#v #v:V l t05j5 5ayt0c$$If!vh#vj#v #v:V l t05j5 5ayt0cs666666666vvvvvvvvv666666>6666666666666666666666666666666666666666666666666hH6666666666666666666666666666666666666666666666666666666666666666662 0@P`p2( 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p 0@P`p8XV~ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@ 0@PJ_HmH nHsH tHD`D  NormalCJPJ_HaJmH sH tH J@J Yh Heading 2$$@&a$>*OJQJ^JDA`D Default Paragraph FontRi@R  Table Normal4 l4a (k (No List e gEHTML Preformatted7 2( Px 4 #\'*.25@9CJOJPJQJaJjj b"1 Table Grid7:V06U`6 a Hyperlink >*B*ph> @"> AFooter 9r G$CJaJ.)@1. A Page NumberPK![Content_Types].xmlN0EH-J@%ǎǢ|ș$زULTB l,3;rØJB+$G]7O٭Vc:E3v@P~Ds |w<v g$ %%%(2 e L&_!y"#% ()++R.l/;023;459_:=|?ACEHKMLPyQ5SU5W&Y#[]_eghcj#V8:;=>@ACEFHIJKMNOQSTUVWYZ\]_`abcefhikmnpqstuwyz{}~ 1 2"*- 05;@-CELRTX^yaedgjmRnn#o1V9<?BDGLPRX[^dgjlorvx|#d(EV'Pc))))I**@OyOOgXXXXXXXXX !(!!8@0(  B S  ?ccc { g  g9*urn:schemas-microsoft-com:office:smarttagsplace RX ;Fhq&/x;Ezs|&al !$!+!T!_!!!"!"Z"c"""""#'#N#W#################$$$$M$\$$$%%_%q%%%!&,&i&x&''m((005 55515<5^5e555555566!6)676@6O6R6u6~666k7v777778*898B888889999F9O9X9`9999999999999: : ::#:,:;:>:_:h::::;/;8;b;k;;;;;-<O<Q<Z<????AAAAD!DFGGGG'G>GIGkGrGGGGGHHHHH(H/H8HfHoHHHHHHHHHHIII!I*I?IHIWIZIIIII"J-JbJkJJJJJKK#K+KjKsKKKKKKKSS TT7TATQT\TaTdTTTTTTTTTU#UIURU-V8VVVW"W1WBWNWYWfWoWWWWWX#XXXYYlYnYYYYYZ ZZZeZlZzZ}ZZZZZZ[A[J[n]y]_^f^^^^^^^^_____ffggggggggggggghlz|  3 8 D H ' , STagRY7:lr &*0CGem/!1!P!S!!!9";"V"Y"""""""##R#X#g#k#####<$A$t${$$$$$$$$$%%%%)%h%r%%&-&s&y&''v((..%/+/k/q/// 1*155i5l555555566;6A6V6X6y666666o7w77777777777 88s8v8888899999999':-:B:E:c:i:{:::::;;;3;9;E;I;f;l;|;;%<,<>>Q?X?AAAAAAB BKBPBBBtC|C GGwGzGGGGGGGHH{HHHHHHIICIIIaIdIIIIIJ J&J.J>J@JfJlJJJJJJJ/K6KMKQKKKKKUMYMOOPPHQWQ-S1S4S8S]SaSSSSSTT#T(T7TBTTTTT'U*UMUSUVVVVVVIWLWWWWWWWWWX$X3X7XXXXXXXYYVYYYlYnYYYYYYYZZ5Z8ZeZmZZZZZZZ[[2]:]^^^^______ccdd0d7dddffggggggggggggg33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333[gCd  &;Vz  """"{#~#&&g))**55666 7a777798T888:;C;b;^<b<BBGGyHHIII>JxJJEK_KKKKKWWGXJXZ[A[Z[!ccccd#dddggggggggggggggYYZZ$d FV'd  !+!^)^)))O5e577777777*;.;A;Z;\GrG@OO U#UAUnUWWXGX]gggggggggggggggggggg# L \Vsdj!Us`+9PvAd wb$( \^`\hH. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH.hh^h`o(. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH. \^`\hH. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH. \^`\hH. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH. \^`\hH. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH. \^`\hH. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH. \^`\o(hH. H\H^H`\hH) \^`\hH. \^`\hH. 4\4^4`\hH)  \ ^ `\hH. | \| ^| `\hH.  \ ^ `\hH) \^`\hH.L s`+ w!vAVs#         l[x!                                   bN         <Y h)!<+g'J%a$mmoop<~,8CRXp&)+L-Odfu}<!$h77F@B1sxx}e#y(KOGetxx2%AxK1VZei{  =@2G)no,|*`;K\]epvKy ( O9 hE M _ m v x x y  J H\ d hs h}  [* 7 +C T X ti i :s  4   h* A, w< @ B i n M K    T% B [ /:W>dHio@pw0|&u'<;&@s[/]OyG|5~/$U9h=Vykt!!/DHXZEc;q=  bz o&A*0KOKQu=?Mb{uX5#VX\F^hhmn  G'<3IVpqxwx 2$:`MW_\Lv%@BVuy[ vD|Y J3O_ooqy0*3"B;S\*<?Zn~%92ZZ\\}g|k&e, AH+%]%L*4nBUM{[_h  & ) '. A> XZ Y{ H~ !!!!/!!!!!&!-!W!5Y!Y!U\!^f!4"""p$"(@"b"l"#_####`<#,R#g#x $~$$*$4$8$I$K$M$R$In$|$0%U%%%J%R%ad%p%*w%x&&B&3&2&$&9&=&LF&U&\&d''!'!1'E'gP'Q'yZ'tu'n(9 (R9(C(E(I(X(")Q*)-)M)Y)k)Ol)u)k)**g!*E*E*kS*a*+_"+K+_+Cr+W|+\, , ,),V,_,K- -- -5?-X-T^-q-v-. .e.,....X .1.k?.[F.J.V.Me. k.s.w.:x."z.b~./$/6/K/ S/b/I00030A_0b"1<1>1O1a2H2#'2}'2,2:42u42X2`2i2j2(k2Z33'333e>3?3be3f3344'+4pE4/F4a4r4&}4 515F5P5hQ5U53a56E6+6%h6Im6m6s6w6>x672 7f797<7L7Yp7u7z7 8884 8$8B8[j8jq8|89 9+9&"9m'9>9H9!O9g9::j::!:Y:wt:jy:j;R$;\$;D7;M7;AR;;r;<!<$<-<RL<9M<= ==l='= R=Y=[=>i >>:><>F>BM>wR>}>?Y#?$?)?0?M?a?g?\x?{?N|?|?@=@#@>@?@R@u_@|d@t@ AAo&AMAXAYXAu\A]A_A B BHB/Bu:B;BJBpB2sBvBC+CC"C$CI0C3C8C"HCaC'mCDD7De!D)D8DZDbDfD~DFD!E(/E0EoJEMEQE4\E ^E fEgEYpEtEFF]HFOFVF^^FgFUhFGA,Gh;G ?GkRGueG(iGfoGH-H.H01Hg8Hc9HFH!KH{SH$I I I,IrIzI>J.J)MJNJVQJ`JFqJrJtJ0}JK^+K2K?KtWKWKYKZKZKgKVhKL"LLL(%LR(L~6Lt=LXL}MHMM{ M%Mz>MqUMniMOtMCyMiN :N>NGNfNMqNvN~NXOOO O'"O:OUOcOpOQsO{O}OHPX]P#aPTbPgP`nPqP|PQQQ.Q;Q8rQfRRd%R^0R6R?;RV8EVIV6`VoVV*W,WCGWYWFWX X#X+X/X_X6aX]oXYY'Y*Y1Y9Y[5H[Q[+`[\3\I\-Z\e\=q\nr\I~\R]] ]5]:]`@]N]P]|]}]^^^^#^+^,^7^iC^([^1y^-|^.___L*_\D_fE_a_hf_-h_ ` E`_`g`j`a2a{ a)a- aCawaIb"b(%bOGbfbY-c-c2cecQgcgcVjcqcwc{c[d d%dNdPdSjdfde6eed$e(eAeDbefeYkee|e;f3ffm0f2f:fBfFfnfBgLJgqgXrgisgzg2hYh[h4hh0h12hgBhMWhYhqhgshT~h~hhEimixid4iKciTdi)li[j j Pjtjyj k~k5$k%k8k:kvCvEvIWvbvJcvAyv ww @w qw_rwtwxH x]xx,x|6x6CxPx]x*axzxyy yly%z[z\skq u} %8<dd+A\F2J3q4#7LS\p]_r~q v]_rfvwl )4Giuy.*OhUXYajl|7/G7ZqrQsd%  "*?W eZjqS~1p8KMoeo~_w+1Y \^h_swni&E0mopt}*%6A OGOd$r7yr~s~ 9g!#+K'QQ5`inIsu K! ;=pLL-TWaa6~, &/<IOPUIr{?"9HJ3RkR8nrr '-j@@Da`dMf>jdjr{h| (1&:OcVqY}a}` deU g2i=@GDOoXV '__y&| /2cgs;%+y0FTzUY,`hunuuBza)b7{7SGLB[\`]gl22G?@DJcLLpO%(77N`lw #$.+.:Ez`+\+BHm{|6 >'/;SfkS "5IBHWwazt_ Pn G-ecA}D*SW;c?dme#F5:?}RU0c? .=9D*_=~xB )]01L4Z,KJ(KLeyvzbNZ0\q yRD :>a@GHQ]8s$6**+ 37OSa}G &<FGjoN;CZzf !|&gUy3@E&HOA`wt|~AeAPV aao/z)IN_Oj m<} ')_.4j9^U5jv: ? '-^_u '115o'%]H1^a[bidu'Qq^U?@H cefgiS".6KBHUV:akdMiL(7?]CkGMWbwyCH-;+\mtu-]7B@BGoj}(*BRQW_it|8166<6?^^dx$(p2G{ !D1DfQcdjy{ )IJy[[h:e _''3f;J#N$SiS.`ryS1^BgDpr3!%&|*T-2<>1e4a5nw3MUX8Zww!+S@DlEZ$^bcYi$h}|8!s i 56'-19>CNXZcj^lK2?EG_ r)~L'|3{57q?)glk~\8KLQTty7E\gl+12UZ]zpc&E*DLE| -0CDgDE`x(A"JS{gg@ggggL eg@ @0@8@UnknownG.[x Times New Roman5Symbol3. .[x Arial;(SimSun[SOi PMingLiUMalgun Gothic Semilight?= .Cx Courier NewA$BCambria Math 1hMUy7X4y7X4a-!),.:;?]}    & 6"0000 0 0 00000 =@\]^([{  0 0 00000;[|g|g 2QHP?6){2!xx7  CMSC 4003gqian Gang Qian(       Oh+'0d   , 8DLT\ CMSC 4003gqian Normal.dotm Gang Qian85Microsoft Office Word@n@+@F̪y7X ՜.+,D՜.+,8 hp  home4|g  CMSC 4003 Title 8@ _PID_HLINKSA6c$+http://www.comsc.uco.edu/~gqxxx/login.html+>Phttp://www.oracle.com/technology/tech/php/pdf/underground-php-oracle-manual.pdf *http://us3.php.net/manual/en/ref.oci8.phpz9http://www.comsc.ucok.edu/k! /http://www.freewebmasterhelp.com/tutorials/phpA http://www.php.net/manual/ens1http://www.php.net/-|/http://www.comsc.uco.edu/~gqxxx/helloworld.phpKLhttp://www.comsc.uco.edu/  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry F`H?̪Data 1TablenWordDocument<$SummaryInformation(DocumentSummaryInformation8CompObjr  F Microsoft Word 97-2003 Document MSWordDocWord.Document.89q