zoukankan      html  css  js  c++  java
  • 学习php

    <?php         ?>    php语法写在这里面

    $  php变量开始

    define   定义常量

    echo ""     输出字符   可以输出一个以上的字符串,比print快;

    print,只能输出一个字符串,始终返回1。

    .     字符串连接

    ;     以分号结尾

    //   #   /**/  三种注释

    变量区分大小写    关键词 不区分

    var_dump() 会返回变量的数据类型和值

    1、 字符串:引号(单引号或双引号)内的任何文本;

    $str="Hello";
    var_dump($str);

    结果为:string 'Hello' (length=5)

    2、 整数

    整数规则: 
    整数必须有至少一个数字(0-9) 
    整数不能包含逗号或空格 
    整数不能有小数点 
    整数正负均可 
    可以用三种格式规定整数:十进制、十六进制(前缀是 0x)或八进制(前缀是 0)

    $num=0x345;
    var_dump($num);

    3、 浮点数:有小数点或指数形式的数字;

    $decimal = 0.23;
    $decimal2=2e3;
    var_dump($decimal);
    var_dump($decimal2);

    运行结果为: 
    float 0.23 
    float 2000

    4、 逻辑:true或false,用于条件测试; 
    5、 数组:一个变量存储多个值;

    $it=array("google","apple","microsoft");
    var_dump($it);

    运行结果: 
    array (size=3) 
    0 => string 'google' (length=6) 
    1 => string 'apple' (length=5) 
    2 => string 'microsoft' (length=9)

    6、 对象:对象是存储数据和有关如何处理数据的信息的数据类型。

    明确地声明对象: 
    首先我们必须声明对象的类。对此,我们使用 class 关键词。类是包含属性和方法的结构。 
    然后我们在对象类中定义数据类型,然后在该类的实例中使用此数据类型。

    class Car
    {
      var $color;
      function Car($color="green") {
        $this->color = $color;
      }
      function what_color() {
        return $this->color;
      }
    }

    7、 NULL:表示变量无值,可用于标示变量为空,也可以用于区分空字符串和空数据库。

    五、字符串函数

    1. strlen():返回字符串的长度,以字符计;
    2. strpos():检索字符串内指定的字符或文本。 
      如果找到匹配,则会返回首个匹配的字符位置。如果未找到匹配,则将返回 FALSE。 
    注意:字符串中首字符的位置是 0 而不是 1。
    $str ="Hello IT!";
    echo strlen($str);
    echo "<br />";
    echo strpos($str,"IT");

    运行结果: 

    6

    六、PHP常量

    1.PHP常量的特点

    • 一旦被定义就无法更改或撤销定义;
    • 以字符或下划线开头(常量名称前面没有 $ 符号);
    • 自动全局。

    2.设置PHP常量

    使用define()函数,包含三个参数:

    • 第一个——>常量名称;
    • 第二个——>常量的值;
    • 第三个——>是否对大小写敏感,默认为false(对大小写敏感)。
    define("PHP","Personal Home Page.",true);
    echo PHP.'<br />';
    echo php;

    运行结果: 
    Personal Home Page. 
    Personal Home Page.

    七、PHP运算符

    1、算数运算符

    算数说明
    +
    -
    *
    /
    % 取模

    2、赋值运算符

    赋值等同于描述
    x =y x = y 右侧表达式为左侧运算数设置值。
    x += y x = x + y
    x -= y x = x - y
    x *= y x = x * y
    x /= y x = x / y
    x %= y x = x % y 模数

    3、字符串运算符

    运算符名称例子结果
    . 串接 $txt1 = “Hello” $txt2 = $txt1 . ” world!” 现在 $txt2 包含 “Hello world!”
    .= 串接赋值 $txt1 = “Hello” $txt1 .= ” world!” 现在 $txt1 包含 “Hello world!”

    4、递增/递减运算符

    运算符名称描述
    ++$x 前递增 $x 加一递增,然后返回 $x
    $x++ 后递增 返回 $x,然后 $x 加一递增
    –$x 前递减 $x 减一递减,然后返回 $x
    $x– 后递减 返回 $x,然后 $x 减一递减

    5、比较运算符

    运算符名称例子结果
    == 等于 $x == $y 如果$x 等于 $y,则返回 true。
    === 全等(完全相同) $x === $y 如果 $x 等于 $y,且它们类型相同,则返回 true。
    != 不等于 $x != $y 如果 $x 不等于 $y,则返回 true。
    <> 不等于 $x <> $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等(完全不同) $x !== $y 如果 $x 不等于 $y,且它们类型不相同,则返回 true。
    > 大于 $x > $y 如果 $x 大于 $y,则返回 true。
    < 大于 $x < $y 如果 $x 小于 $y,则返回 true。
    >= 大于或等于 $x >= $y 如果 $x 大于或者等于 $y,则返回 true.
    <= 小于或等于 $x <= $y 如果 $x 小于或者等于 $y,则返回 true。

    6、逻辑运算符

    运算符名称例子结果
    and $x and $y 如果 $x 和 $y 都为 true,则返回 true。
    or $x or $y 如果$x 和$y 至少有一个为 true,则返回 true。
    xor 异或 $x xor $y 如果 $x 和 $y 有且仅有一个为 true,则返回 true。
    && $x && $y 如果 $x 和 $y 都为 true,则返回 true。
    || $x | $y 如果 $x 和 $y 至少有一个为 true,则返回 true。
    ! !$x 如果 $x 不为 true,则返回 true。

    7、数组运算符

    运算符名称例子结果
    + 联合 $x + $y $x 和 $y 的联合(但不覆盖重复的键)
    == 相等 $x == $y 如果 $x 和 $y 拥有相同的键/值对,则返回 true。
    === 全等 $x === $y 如果 $x 和 $y 拥有相同的键/值对,且顺序相同类型相同,则返回 true。
    != 不相等 $x != $y 如果 $x 不等于 $y,则返回 true。
    <> 不相等 $x <> $y 如果 $x 不等于 $y,则返回 true。
    !== 不全等 $x !== $y 如果 $x 与 $y 完全不同,则返回 true。

    PHP的基本语法(三)

    八、条件语句

    1、if 语句

    如果指定条件为真,则执行代码

    2、if…else 语句

    如果条件为 true,则执行代码;如果条件为 false,则执行另一端代码

    3、if…elseif….else 语句

    选择若干段代码块之一来执行

    $num=3;
    if($num>3)
    echo "$num>1";
    elseif($num==3)
    echo "$num=3";
    else
    echo "$num<3";

    运行结果:$num=3

    4、switch 语句

    有选择地执行若干代码块之一

    工作原理:

    • 对表达式(通常是变量)进行一次计算
    • 把表达式的值与结构中 case 的值进行比较
    • 如果存在匹配,则执行与 case 关联的代码
    • 代码执行后,break 语句阻止代码跳入下一个 case 中继续执行
    • 如果没有 case 为真,则使用 default 语句
    $x=4;
    switch ($x)
    {
    case 1:
      echo "Number 1";
      break;
    case 2:
      echo "Number 2";
      break;
    default:
      echo "No number between 1 and 2";
    }

    运行结果:No number between 1 and 2

    九、循环语句

    1、while

    只要指定条件为真,则循环代码块

    2、do…while

    先执行一次代码块,然后只要指定条件为真则重复循环

    3、for

    循环代码块指定次数

    4、foreach

    遍历数组中的每个元素并循环代码块

    <?PHP
    $its = array("Apple","Google","Microsoft","Solidot"); 
    
    foreach ($its as $it) {
      echo "$it <br>";
    }
    ?>

    运行结果: 
    Apple 
    Google 
    Microsoft 
    Solidot

    十、函数

    1、函数的类型

    函数是可以在程序中重复使用的语句块。 
    页面加载时函数不会立即执行。 
    函数只有在被调用时才会执行。

    • 内建函数:超过一千个内建函数
    • 自定义函数:以“function”关键字开头;函数名能够以字母或下划线开头(而非数字),对大小写不敏感,应该能够反映函数所执行的任务。

    2、函数的几个要素

    • PHP函数参数:参数被定义在函数名之后,括号内部。您可以添加任意多参数,只要用逗号隔开即可。
    • PHP函数默认参数:直接在参数后面赋值,当我们调用不含参数的函数时会自动赋予默认值。
    • PHP函数返回值:使用return语句返回值。
    <?php 
    
    function passwd($account,$password=123456){
    return $password;
    }
    
    $pLee = passwd("Lee");
    echo  "$pLee";
    
    ?>

    运行结果:123456

    十一、数组

    1、什么是数组?

    数组是特殊的变量,它可以同时保存一个以上的值。 
    数组能够在单一变量名中存储许多值,并且您能够通过引用下标号来访问某个值。

    2、三种数组类型

    • 索引数组 - 带有数字索引的数组
    • 关联数组 - 带有指定键的数组
    • 多维数组 - 包含一个或多个数组的数组

    3、用array()创建数组

    (1)、创建索引数组

    $its=array("Google","Apple","Microsoft");
    print_r($its);

    $its[0]="Google";
    $its[1]="Apple";
    $its[2]="Microsoft";
    print_r($its);

    运行结果:Array ( [0] => Google [1] => Apple [2] => Microsoft )

    (2)、创建关联数组

    $age=array("Peter"=>"20","Bill"=>"19","Ken"=>"21");
    print_r($age);

    $age["Peter"]="20";
    $age['Bill']="19";
    $age["Ken"]="21";
    print_r($age);

    运行结果:Array ( [Peter] => 20 [Bill] => 19 [Ken] => 21 )

    4、用count()获取数组长度

    $its=array("Google","Apple","Microsoft");
    $age=array("Peter"=>"20","Bill"=>"19","Ken"=>"21");
    echo count($its)."<br />";
    echo count($age);

    运行结果: 

    3

    5、用for和foreach遍历数组

    (1)、用for遍历索引数组

    $its=array("Google","Apple","Microsoft");
    for($i=0;$i<count($its);$i++){
        echo $its[$i]."<br />";
    }

    运行结果: 
    Google 
    Apple 
    Microsoft

    (2)、用foreach遍历关联数组

    $age=array("Peter"=>"20","Bill"=>"19","Ken"=>"21");
    foreach($age as $value){
    echo $value."<>";
    }

    运行结果: 
    20 
    19 
    21

    6、数组排序

    sort() - 以升序对数组排序 
    rsort() - 以降序对数组排序 
    asort() - 根据值,以升序对关联数组进行排序 
    ksort() - 根据键,以升序对关联数组进行排序 
    arsort() - 根据值,以降序对关联数组进行排序 
    krsort() - 根据键,以降序对关联数组进行排序

    如何记住它们?

    r—-reduce,减少 
    a—-value,值(不知道是不是,暂且这样记) 
    k—-key,键

    $age=array("Peter"=>"20","Bill"=>"19","Ken"=>"21");
    foreach($age as $value){
    echo $value."<br />";
    }
    arsort($age);
    foreach($age as $value){
    echo $value."<br />";
    }

    运行结果: 
    20 
    19 
    21 
    21 
    20 
    19

    一、GET和POST的联系和区别

    1、GET和POST的联系

    • GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, …))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。
    • GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。

    2、GET和POST的区别

    • $_GET 是通过 URL 参数传递到当前脚本的变量数组。
    • $_POST 是通过 HTTP POST 传递到当前脚本的变量数组。

    二、GET和POST的使用

    1、何时使用?

    • GET使用情景:对任何人可见的非敏感数据,限制在2000个字符,显示在URL中;
    • POST使用情景:对其他人不可见,字符数量无限制,嵌入http请求主体,支持高阶功能。

    2、怎么使用?

    • 使用GET
    <!DOCTYPE html>
    <html>
    <body>
    
    <a href="<?php echo $_SERVER['PHP_SELF']?>?keyword=Google&position=China">搜索</a>
    
    </body>
    </html>
    
    <?php
    echo "You search ".$_GET['keyword']." in ".$_GET['position'];
    ?>
    • 使用POST
    <!DOCTYPE html>
    <html>
    <body>
    
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
    Name:<input type="text" name="name">
    <input type="submit">
    </form>
    
    </body>
    </html>
    
    <?php
    $name= $_POST['name'];
    echo $name;
    ?>

    一、date()函数

    string date ( string $format [, int $timestamp ] ) 
    作用:将时间戳格式化为易读的时间和日期。

    参数描述
    format 必需。规定时间戳的格式。
    timestamp 可选。规定时间戳。默认是当前时间和日期。

    1、获取日期

    (1)、年

    format格式说明例子
    L 是否为闰年 如果是闰年为 1,否则为 0
    o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
    Y 4 位数字完整表示的年份 例如:1999 或 2003
    y 2 位数字表示的年份 例如:99 或 03

    (2)、月

    format格式说明例子
    F 月份,完整的文本格式,例如 January 或者 March January 到 December
    m 数字表示的月份,有前导零 01 到 12
    M 三个字母缩写表示的月份 Jan 到 Dec
    n 数字表示的月份,没有前导零 1 到 12
    t 给定月份所应有的天数 28 到 31

    (3)、日

    format格式说明例子
    d 月份中的第几天,有前导零的 2 位数字 01 到 31
    D 星期中的第几天,文本表示,3 个字母 Mon 到 Sun
    j 月份中的第几天,没有前导零 1 到 31
    l(“L”的小写字母) 星期几,完整的文本格式 Sunday 到 Saturday
    N ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加) 1(表示星期一)到 7(表示星期天)
    S 每月天数后面的英文后缀,2 个字符 st,nd,rd 或者 th。可以和 j 一起用
    w 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
    z 年份中的第几天 0 到 365

    (4)、星期

    format格式说明例子
    W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)

    2、获取时间

    (1)、时间

    format格式说明例子
    a 小写的上午和下午值 am 或 pm
    A 大写的上午和下午值 AM 或 PM
    B Swatch Internet 标准时 000 到 999
    g 小时,12 小时格式,没有前导零 1 到 12
    G 小时,24 小时格式,没有前导零 0 到 23
    h 小时,12 小时格式,有前导零 01 到 12
    H 小时,24 小时格式,有前导零 00 到 23
    i 有前导零的分钟数 00 到 59>
    s 秒数,有前导零 00 到 59>
    u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321

    (2)、时区

    format格式说明例子
    e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
    I 是否为夏令时 如果是夏令时为 1,否则为 0
    O 与格林威治时间相差的小时数 例如:+0200
    P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
    T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
    Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200

    二、mktime()函数

    mktime(hour,minute,second,month,day,year) 
    作用:根据给出的参数返回Unix时间戳。 
    时间戳是一个长整数,包含了从 Unix 纪元(January 1 1970 00:00:00 GMT)到给定时间的秒数。

    三、strtotime()函数

    int strtotime ( string $time [, int $now = time() ] ) 
    作用:将任何英文文本的日期时间描述解析为 Unix 时间戳 
    time:日期/时间字符串。正确格式的说明详见 日期与时间格式。 
    now:用来计算返回值的时间戳。

    备注:修改时区获取本地时间

    1. 修改PHP.ini文件中date.timezone字段 
      去掉前面的分号,在后面加上PRC(北京时间),然后重启appache
    2. 在代码中初始化时间 date_default_timezone_set (XXX)
    3. 另外:关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐) 
      港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)。还有新加坡:Asia/Singapore。 
      其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC

    四、奉上我学完这个之后做的一个简单的日历:


    <html>
    <head>
    <!--<meta http-equiv="refresh" content="3">-->
    </head>
    <body>
    
    <table cellpadding="10">
    <tr>
    <td>Sun</td><td>Mon</td><td>Tue</td><td>Wed</td><td>Thu</td><td>Fri</td><td>Sat</td>
    </tr>
    <?php
    #显示一张日历
    $SATNUM=0;
    $MONTH=date("m");
    echo "<tr>";
    for($i=0;$i<date("w",strtotime("2015/$MONTH/01"));$i++){
        echo "<td></td>";
    }
    for($j=0,$i=date("w",strtotime("2015/$MONTH/01"));$i<=6;$i++,$j++){
        $tmp=01+$j;
        $GLOBALS['SATNUM']=$tmp;
        echo "<td>$tmp</td>";
    }
    echo "</tr>";
    
    for($j=0;$j<4;$j++){
        echo "<tr>";
        for($i=0;$i<7;$i++){
            $tmp=++$GLOBALS['SATNUM'];
            if($tmp==date("d"))
                echo "<td bgcolor=blue>$tmp</td>";
            elseif(!($tmp>date("t")))
                echo "<td>$tmp</td>";
        }
        echo "</tr>";
    }
    ?>
    
    <?php 
    #确定星期几
    $week="";
    switch(date("w")){
    case 0:$week="星期天";break;
    case 1:$week="星期一";break;
    case 2:$week="星期二";break;
    case 3:$week="星期三";break;
    case 4:$week="星期四";break;
    case 5:$week="星期五";break;
    case 6:$week="星期六";break;
    }
    #动态显示当前时间
    echo "现在时间是:".date("Y年m月d日$week h时i分s秒");
    echo "<br />";
    ?>
    </body>
    </html>




    一、有什么用?

    服务器端包含 (Server Side Include,SSI) 用于创建可在多个页面重复使用的函数、页眉、页脚或元素。包含文件重用了文件,省去了许多工作。

    二、怎么用?

    include ‘filename’; 
    或 
    require ‘filename’;


    1.php

    <?php
    echo "Hello ";
    include '2.php';
    ?>

    2.php

    <?php
    echo "World.";
    ?>

    在浏览器访问1.php会得到(注意此时1.php和2.php是放在同一个文件夹里的):Hello World.

    三、include跟require有什么区别?

    在错误处理方面: 
    require 会生成致命错误(E_COMPILE_ERROR)并停止脚本 
    include 只生成警告(E_WARNING),并且脚本会继续


    请在此时使用: 
    请在此时使用 require:当文件被应用程序请求时。 
    请在此时使用 include:当文件不是必需的,且应用程序在文件未找到时应该继续运行时。

     

    PHP中对文件的操作:创建、读取、上传、编辑。 PHP提过了多种相关的函数。

    1、readfile()

    int readfile ( string $filename [, bool $use_include_path = false [, resource $context ]] )

    参数:

    1. filename:文件名;
    2. use_include_path:是否也在include_path中搜索文件;
    3. context:规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

    返回值:返回从文件中读入的字节数。如果出错返回 FALSE 并且除非是以 @readfile() 形式调用,否则会显示错误信息。 
    示例: 
    1.php和new.txt在同一个文件夹

    1.php内容:

    <?php
    echo @readfile("new.txt");
    ?>

    new.txt内容:

    It's a new file.

    运行1.php结果:

    It's a new file.16

    2、fopen()

    resource fopen ( string $filename , string $mode [, bool $use_include_path = false [, resource $context ]] )

    参数:

    1. filename:如果 filename 是 “scheme://…” 的格式,则被当成一个 URL,PHP 将搜索协议处理器(也被称为封装协议)来处理此模式。如果该协议尚未注册封装协议,PHP 将发出一条消息来帮助检查脚本中潜在的问题并将 filename 当成一个普通的文件名继续执行下去。;
    2. mode:指定了所要求到该流的访问类型;
    3. use_include_path:是否也在include_path中搜索文件;
    4. context:规定文件句柄的环境。Context 是可以修改流的行为的一套选项。

    返回值: 
    成功时返回文件指针资源,如果打开失败,本函数返回 FALSE。 
    注:文件访问类型表

    mode说明
    “r” 只读方式打开,将文件指针指向文件头
    “r+” 读写方式打开,将文件指针指向文件头
    “w” 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    “w+” 读写方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。
    “a” 写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    “a+” 读写方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之。
    “x” 创建并以写入方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL
    “x+” 创建并以读写方式打开,将文件指针指向文件头。如果文件已存在,则 fopen() 调用失败并返回 FALSE,并生成一条 E_WARNING 级别的错误信息。如果文件不存在则尝试创建之。这和给底层的 open(2) 系统调用指定 O_EXCL

    3、fread()

    string fread ( resource $handle , int $length ) 
    从文件指针 handle 读取最多 length 个字节

    参数:

    1. head:文件系统指针,是典型地由 fopen() 创建的 resource(资源);
    2. length:最多读取 length 个字节。

    返回值: 
    返回所读取的字符串, 或者在失败时返回 FALSE。

    4、fclose()

    bool fclose ( resource $handle ) 
    将指定文件关闭(好习惯,减少服务器资源占用)。文件指针必须有效,并且是通过 fopen() 或 fsockopen() 成功打开的。

    5、fgets()

    string fgets ( resource $handle [, int $length ] ) 
    从文件中读取一行数据。从 handle 指向的文件中读取一行并返回长度最多为 length - 1 字节的字符串。碰到换行符(包括在返回值中)、EOF 或者已经读取了 length - 1 字节后停止(看先碰到那一种情况)。如果没有指定 length,则默认为 1K,或者说 1024 字节。

    6、feof()

    bool feof ( resource $handle ) 
    测试文件指针是否到了文件结束的位置。

    7、fgetc()

    string fgetc ( resource $handle ) 
    从文件中读取单个字符。

    8、fwrite()

    int fwrite ( resource $handle , string $string [, int $length ] )

    参数:

    1. handle:文件系统指针,是典型地由 fopen() 创建的 resource(资源);
    2. string:要写入的字符串;
    3. length:如果指定了 length,当写入了 length 个字节或者写完了 string 以后,写入就会停止,视乎先碰到哪种情况。

    返回值: 
    fwrite() 返回写入的字符数,出现错误时则返回 FALSE 。

    9、一个超级简单的评论墙

    <html>
    <head>
    <title>评论墙</title>
    </head>
    <body>
    <!--评论表单-->
    <form method="post"  action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'])?>">
    昵称:<input type="text" name="name"></input>
    <br />
    评论:<textarea rows='5' cols='19' name="comment"></textarea>
    <br />
    <input type="submit" name="submit" value="提交">
    </form>
    <!--保存评论到文件-->
    <?php
    /**
    文件的读写测试
    */
    if($_SERVER['REQUEST_METHOD']=='POST'){
    #打开文件
    $fname="D:\comment.txt";
    $file=fopen($fname,"a+");
    #写入数据
    $name=@$_POST['name'];
    $comment=@$_POST['comment'];
    $str=$name."`".$comment."
    ";
    fwrite($file,$str);
    #关闭文件
    fclose($file);
    }
    ?>
    <!--显示评论内容-->
    <table cellpadding="4" >
    <tr>
    <td><b>昵称</b></td>
    <td><b>评论</b></td>
    </tr>
    <?php
    $fname="D:\comment.txt";
    $file=fopen($fname,"r");
    while(!feof($file)){
        $line=fgets($file);
        $arr=explode("`",$line);
        echo @"<tr><td>$arr[0]</td><td>$arr[1]</td></tr>";
    }
    fclose($file);
    ?>
    </table>
    
    </body>
    </html>

    一、什么是Cookies?

    Cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 PHP,您能够创建并取回 cookie 的值。如果你的浏览器不支持Cookies,那就只好用表单传递数据了。 
    点击查看维基百科关于Cookies的解释。

    二、创建Cookies

    setcookie(name, value, expire, path, domain); 
    用于设置Cookie,必须位于 < html > 标签之前。

    参数:

    • name:设置Cookies的名字;
    • value:Cookies的值,存储在客户机上,不要存放敏感信息,假定Cookies名为“cookiesname”则值为$_COOKIES[‘cookiesname’]。
    • expire:Cookies的到期时间,这是一个时间戳(以秒为单位)。默认为会话结束(浏览器关闭)就到期。一般使用time()函数加上秒数,表示多少秒后到期。
    • path:设置Cookies在服务器上的可用目录,默认为当前目录。
    • domain:设置Cookies可用的域名。

    返回值:

    如果在调用这个函数之前有输出,将会返回false;如果函数正常执行将会返回true。这并不能表示用户是否接受Cookies。

    注:

    在发送 cookie 时,cookie 的值会自动进行 URL 编码,在取回时进行自动解码。(为防止 URL 编码,请使用 setrawcookie() 取而代之。)

    三、取回Cookies

    $_COOKIES[‘cookiesname’]用于取回Cookies的值。在这之前最好用isset()函数判断是否设置了Cookies

    四、删除Cookies

    删除Cookies只需要用setcookie()函数,将参数中的expire设置为过去的时间即可。

    五、Cookies的一个小测试

    1. 新建1.php

    <?php 
    setcookie("ip","192.168.1.1",time()+86400);
    echo '已设置Cookies:ip';
    ?>

    2. 新建2.php

    <?php 
    if(isset($_COOKIE["ip"])){
        echo '已取得Cookies:ip---->'.$_COOKIE['ip']."<br />";
        setcookie("ip","",time()-300);
        echo "已删除Cookies:ip.";
    }
    ?>

    3、打开浏览器输入:localhost/1.php

    输出结果: 
    已设置Cookies:ip

    4、关闭再打开浏览器,输入:localhost/2.php

    输出结果: 
    已取得Cookies:ip---->192.168.1.1 
    已删除Cookies:ip.

    5、在步骤4的基础上刷新页面

    没有输出。

  • 相关阅读:
    leetcode算法题基础(五)双指针(一)27 题 移除元素
    kata-shim: Setctty set but Ctty not valid in child: unknown.
    kata-runtime mount
    UVa1636 Headshot
    HDU1150 Machine Schedule
    POJ 1273 Drainage Ditches
    SPOJ GSS1 Can you answer these queries I
    POJ 1840 Eqs
    POJ2001 Shortest Prefixes
    HDU 2795 Billboard
  • 原文地址:https://www.cnblogs.com/mingjing/p/8205098.html
Copyright © 2011-2022 走看看