• PHP程序设计基础


    CGI的基本概念

    PHP的简单程序

     

    CGI的基本概念

    HTML用户虽然可以通过表单将数据发送到Web服务器,但是HTML无法与数据库交互。这就需要在HTML网页与数据库之间架设一个沟通的渠道,这就是通用网关接口(Common Gateway Interface,CGI)。它也是万维网动态网页机制之一。CGI是外部扩展应用程序(例如Perl编写的Perl脚本语言)与Web服务器交互的一种通用的接口标准。按照CGI标准编写的外部扩展应用程序可以处理客户端浏览器输入(例如表单方式)的需要协同工作的数据,并将相应的处理结果给浏览器。从而完成客户端与服务器的交互操作,大大扩展了Web提供的功能。

     

    PHP的简单程序

    将该程序存放在apache根目录下的greeting.php文件中

     1 <html>
     2 <head>
     3 <title>The First Greeting from PHP </title>
     4 </head>
     5 <body>
     6 <?
     7 echo "hello,$name
    ";
     8 ?>
     9 </body>
    10 </html>

    打开浏览器,在地址栏输入http://localhost/greeting.php?name=Cheng,回车。从IE中查看源文件的PHP输出,可以看到6-8行变为"hello,Cheng"。

    PHP网页除了需要Web服务器和浏览器的参与外,还需要经过CGI模块处理才能显示(本例中用的是Aache的PHP解释模块);PHP网页的程序参数(或变量)可以从地址栏附在网页的URL一起输入,如网址后附带的"?name=Cheng",等号左边是变量名,右侧的是变量值,当需要输入的数据项多于一项时,数据项之间要用"&"号隔开。

    <1>将PHP程序嵌入网页的方法:

    <?
    echo("这是第一个PHP语言的嵌入例子
    ");
    ?>
    
    规范形式
    <?php
    echo("这是第二个PHP语言的嵌入例子
    ");
    ?>

    <2>PHP中引用文件的方法

    a,require("MyRequiredFile.php");

    该函数一般放在PHP程序的最前面,PHP程序在执行前,就会先读入require语句所指定引入的文件,使它变成PHP网页的一部分。用此方法可将常用的函数引入网页中

    b,include("MyRequiredFile.php");

    该函数一般放在流程控制中。PHP程序网页在读到include语句时,才将相关的文件读进来。这样可把流程处理程序简化,增强可读性

    <3>PHP的注释: 可用"//"或"/* */"

    PHP的常量,变量和数据类型

    说明:PHP是一种弱类型的程序语言,即一个变量可以存储任意类型的数据;

    定义或分配简单的数据类型(标量或数组),第一次使用变量名就相当于定义它;

    PHP中的变量名区分大小写,不能以数字字符开始。

    <1>PHP基本数据类型

    布尔型:它的值可以为TURE或FALSE。这些情况也被认为是FALSE:0,0.0,"0",空白字符串(""),只声明没有赋值的数组等。  

    整数:$integer=100;//十进制    $integer=0666;//八进制   $integer=0x888;//十六进制

    浮点型(float/double):   $php=1.2;   $php=1.0E3;//科学计数    $php=7e-6;

    字符串:可给字符串加单引号,双引号

    <2>内置环境变量和常量

    __ FILE__,执行中的PHP程序文件名
    __LINE __,执行中PHP程序行数
    PHP_VISION,PHP程序的版本
    PHP_OS,执行PHP的操作系统名称
    TRUE,真值
    FALSE,假值
    E_ERROR,指向最近的错误处

     所有以E_开头形式的常量,可以参考PHP手册中,error_reporting()函数

    自定义所需的常量:define("PI", "3.14");  echo PI; 

    <3>PHP变量类型

    标量:用来记录单个信息,一次保存四种基本数据类型中的一种

    数组:存储数值的列表

    $arr_names[]='Jack';  $arr_names[]='Tom'; //arr_names第一次使用,这两个元素的下标分别为0,1

    $arr_animal['panda']='rare animal';  或$arr_animal=array('panda'=>'rare animal' , 'dog'=>'home animal');  //用于数组下标的字符串须用单引号括起来,且不能有空格

    $arr_mixed=array(2,54,‟Jack‟=>'the first name','application');    //混合下标,数组下标分别为0、1、'Jack'和2

    多维数组:

    $arr_books=array('book1'=>array('name'=>'The New History' , 'pages' => 400) , 'book2'=>array('name'=>'Children of the Mind' , 'pages'=>500));

    echo $arr_books['book1']['pages'];

    $arr_books['book1']['author']='Orson Scott Card';  //多维数组随时都可以加入需要的元素

    对象:存储变量信息和函数

    资源变量:用来保存了对外部资源的引用所得到得结果

    PHP运算符和函数

    <1>字符串的连接符:$a="hello"; echo $a.','.'world'.'<br>';

    算术运算符,赋值运算符:$a+=5; $b="我"; $b.="们"; //$b="我们";

    逻辑运算符:&&  ||  !

    区地址运算符:$a表示一个标量,&$a表示实际存储标量$a的地址

    三元运算符:(expr1)? (expr2): (expr3);

    三种语言结构:顺序,分支,循环,switch(expr)

    <2>PHP函数分为两类:有返回值的函数和无返回值的函数,相当于Pascal中的函数(function)和过程(procedure),两者的区别在于是否有return

    函数的定义:function func_name (参数列表)  { 函数功能 }  //其返回值可以是个标量或数组

    按值调用和按址调用:

    <?  //按值调用
    function add1($value) {$value++;}
    $a = 2;
    add1($a);
    echo "$a<br>";  //$a=2
    ?>
    <?   //按址调用
    function add2(&$value) {$value++;}
    $a = 2;
    add2($a);
    echo "$a<br>";  //$a=3
    ?>

    PHP函数

    PHP网页参数传递

    <1>$_POST['表单控件名']

    $_GET['参数名']

    应用举例:(与前文中的表单标记对应)

    //wp2.php
    <html>
    <body>
    <?php
    //显示函数
    function echo_message($u_type)
    {
    $u_type = $_POST[$u_type];
    if( $u_type == "我的建议是:") $u_type = "";
    if( $u_type == "") $u_type="(空)";
    echo "<font color=red>".$u_type."</font>";
    }
    //显示擅长语言函数
    function echo_lang()
    {
    $lang = $_POST[language];
    $j = count($lang);
    for($i=0;$i<$j;$i++)
    {
        echo "<font color=red>".$lang[$i]."</font>&nbsp;";
    }
    }
    ?>
    姓名:<?php echo_message('myname');?><br>
    用户名:<?php echo_message('user');?><br>
    性别:<?php echo_message('gender');?><br>
    血型:<?php echo_message('bloodtype');?><br>
    擅长语言:<?php echo_lang();?><br>
    最擅长操作系统:<?php echo_message('OS');?><br>
    上传的文件:<?php echo_message('upload');?><br>
    建议:<?php echo_message('advice');?><br>
    <button>确认</button>
    </body>
    </html>

    <2>SESSION会话的使用

    session_start()开始一个会话或者返回已经存在的会话

    $_SESSION['xxx']=xxx  :注册SESSION全局变量。和GET,POST,COOKIE的使用方法相似,具体使用如下:

    <?php  //w1.php
    session_start();  //使用SESSION前必须调用该函数。
    $_SESSION['name']="我是黑旋风李逵!";  //注册一个SESSION变量
    $_SESSION['passwd']="mynameislikui";
    $_SESSION['time']=time();
    echo "<br /><a href='w2.php'>通过COOKIE传递SESSION</a>"; //如果客户端支持cookie,可通过该链接传递session到下一页。
    echo "<br /><a href='w2.php?" . SID ."'>通过URL传递SESSION</a>";//客户端不支持cookie时,使用该办法传递session.
    ?>
    <?php //w2.php
    session_start();
    echo $_SESSION['name']."<br>";
    echo $_SESSION['passwd']."<br>";
    echo date('Y m d H:i:s',$_SESSION['time'])."<br>";
    echo "<br /><a href='w1.php'>返回上一页</a>";
    ?>

     session_id() :用于设定或取得当前session_id,php5也可以通过附加在url上的SID取得当前会话的session_id和session_name。若session_id()有具体指定值,则取代当前的session_id值。使用前先启动会话session_start()

    isset($_SESSION['xxx'] :检查session是否存在

    session_regenerate_id() :更改session_id,成功返回true,失败返回false。使用该函数可以为当前session更改session_id,但不改变当前session的其他信息

    session_name() :返回当前session的name或改变当前session的name。若要改变当前session的name,必须在session_start()之前调用该函数。注意:session_name不能只由数字组成,它至少包含一个字母。

    unset ($_SESSION['xxx']) :删除单个session

    unset($_SESSION) :此函数千万不可使用,它会将全局变量$_SESSION销毁,而且还没有可行的办法将其恢复。用户也不再可以注册$_SESSION变量。

    $_SESSION=array() 删除多个session

    <?php
    session_start();
    $old_sessionid = session_id();
    session_regenerate_id();
    $new_sessionid = session_id();
    echo "原始 SessionID: $old_sessionid<br />";
    echo "新的 SessionID: $new_sessionid<br />";
    echo"<pre>";
    print_r($_SESSION);
    echo"</pre>";
    ?>
    结果是:
    原始 SessionID: 2a218c061f4964ee0d0209ebc70a4f8e
    新的 SessionID: 0f34199b49e7cbc8804387b5a61d21d8
    Array
    (
        [name] => 我是黑旋风李逵!
        [passwd] => mynameislikui
        [time] => 1417957843
    )
  • 相关阅读:
    JeePlus:代码结构
    JeePlus:项目部署
    JeePlus:Maven 安装配置
    JeePlus:目录
    框架-Java:JeePlus
    Java-JSP:EL表达式
    Template-FreeMarker:模板开发指南
    Template-FreeMarker:什么是 FreeMarker?
    FreeMarker:
    Template-FreeMarker:目录
  • 原文地址:https://www.cnblogs.com/zhoutian220/p/4143731.html
Copyright © 2020-2023  润新知