zoukankan      html  css  js  c++  java
  • PHP. 01. C/S架构、B/S架构、服务器类型、服务器软件、HTTP协议/服务器、数据库、服务器web开发、PHP简介/常见语法、PHPheader()、 PHP_POST/GET数据获取和错误处理

    C/S架构

    Client/Server 指客户端,服务器 架构的意思

      优点:性能性高:可将一部分的计算工作放在客户端上,服务器只需处理出局即可

           洁面炫酷,可使用更多系统提供的效果

      缺点:更新软件需版本同步

         不同设备访问:必须安装了客户端才能登陆

    B/S架构

    Browser /Server 指浏览器, 服务器。是WEB兴起后的一种结构

      优点:更新简洁,对用户来说只需刷新浏览器即可

           多设备同步:只要能够使用浏览器即可登录

      缺点:性能较低:当时随着硬件性能的提升,这个差距在缩小

           浏览器兼容:移动设备兼容性较好,当时低版本的浏览器显示问题一直存在

    服务器类型

    虽然之前我们学习的都是HTML相关的内容,但是我们能够从网络上获取的内容绝对不止网页,比如下载视频,听歌,玩游戏,在线聊天

    • 服务器分类

      • 按类型分:
        • 文件服务器、数据库服务器、邮件服务器、Web 服务器等;
      • 按软件分:

        • Apache服务器、Nginx 服务器、IIS服务器、Tomcat服务器、Node服务器等。
      • 按操作系统分: 

        • Linux服务器、Windows服务器等;

    服务器软件

    提供了某种服务的计算器,我们称之为服务器,那么这些赋予计算器各种服务功能的软件主要有哪一些呢?

    • 常见的服务器软件有:

      • 文件服务器:Server-U、FileZilla、VsFTP等;
      • 数据库服务器:Oracle、MySQL、PostgreSQL、MSSQL等;
      • 邮件服务器:Postfix、Sendmail等;
      • HTTP 服务器:Apache、Nginx、IIS、Tomcat、NodeJS等; 这里我们主要介绍HTTP服务器

    HTTP协议:

    当我们在浏览器中输入了www.baidu.com类似这样的地址,点击确认时.只要我们的设备在网络上,就能够返回对应的百度首页回来.

    * 浏览器发出请求->互联网上的服务器
    * 服务器获取请求->请求的浏览器

    参照之前的HTML标准格式,浏览器找服务器要数据这个操作也需要彼此之间有一定的共识,而这种共识就叫做HTTP协议

    HTTP服务器

    直译过来就是网站服务器,主要为用户提供各种文档资源(文本,图片,音频等)一般安装有,IIS,apache等软件

    • 服务端开发 身为21世纪的网站,早就不局限于请求,响应这种最基础的方式了. 试想一下:
        * 你每次访问百度首页看到的内容是否一样
        * 你登陆了淘宝没登录淘宝看到的页面是否一样,为什么会产生这种变化呢?
    

    这是因为当我们的请求到达服务器时,会根据我们请求的内容进行一些逻辑处理,返回不同的页面给用户,这部分的开发叫做服务端开发,可以开发的语言有:PHP,Asp,Jsp,Ruby,Erland等等

    数据库(DBA数据库管理员)

    试想一下,如果一个网站的注册用户有1千万个那么应该使用什么格式,什么方式来保存这些数据呢?

    • 保存的格式: 这个很简单:比如 用户名,密码,性别,出生,爱好,头像 等等 这样的数据排列方式,每一个用户就是一行

    • 常规保存方式:

      • .txt文件:因为内容是文本,所以直接使用文本文件保存肯定可以,但是当一个文本文件很大很大时,打开是异常缓慢的
      • .excel文件:可以用来进行数据的统计,分析等操作,但是当很多个人需要访问同一个.excel文件时,性能也很差
      • 当然也可能想到一些其他的保存方式,但如果出现被删除,被胡乱修改所带来的后果都是灾难性的
    • 数据库:

      • 按照数据结构来组织,存储和管理数据的仓库,软件开发行业一般指的是数据库软件,常见的有:OracleMySQLMSSQL
      • 特点:
        • 数据共享:多用户同时访问数据的稳定性
        • 故障恢复:数据库软件提供了一套的方法,可以用来发现错误并且修复错误
        • 减少数据冗余:由于大家都可以使用同一套数据,没有必要重复创建了
    • DBA数据库管理员: 
      • 从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,他的工作目的是:保证数据库的稳定性,安全性,完整性和高性能.

    HTTP服务器搭建

    WAMP: 在windows平台下如果想要一步到位安装好这些软件,可以使用wamp,其中w的意思为windows指的是windows操作系统

    MAMp:在mac平台搭建的软件。具体的安装可以百度

    服务端web开发

    在讲解什么是服务端开发之前,让我们先思考几个问题

    • 网站访问:

      当我们做好了.html的网站,如何让别人(朋友,用户)可以访问到呢?

      • 使用U盘拷贝,QQ发送文件等直接将文件共享的方式?---不灵活
      • 将网站放在服务器上,让用户通过网址访问?---绝大多数网站的做法
    • 网站内容更新:

      如果用户每次访问我们的网站看到的内容都是一样的,在最初的新鲜劲过去以后估计就再也不想访问我们的网站了o(╯□╰)o,那么如何去更新网站的内容呢?

      • 当有内容,图片,或者界面需要更新是,直接修改.html文件?---费时费力
      • 通过某种手段,当有新的消息,自动的完成网站的更新?---动态网站
    • 如何实现网站动态化

      网站的本质,其实就是一堆按照某种规则排列的字符串而已,如果我们可以通过某种方式,让电脑动态生成这些字符串,是不是就实现了网站的动态化?

      • 想要让电脑干事情,可以通过编程语言来实现.
      • 编程语言的编写位置为服务器,因为用户是问服务器要网站的
      • 服务器,通过编程语言让用户访问的网站动态化叫做:服务端web开发
    • 可选开发方式: 虽然基本上所有可以返回字符串的编程语言都能够实现这个功能,目前市场主流开发语言有:Java,PHP,ASP.Net,Ruby,Python,Erlang等.虽然可以选择的开发语言有很多种,但是本质都是一样的:

      当用户访问网站了,根据`某些逻辑`,生成对应的`HTML,CSS,JS`代码给用户
      

       

      PHP简介

    PHP在众多的编程语言中,是比较容易上手,结合我们搭建的WAMP/MAMP环境就能够开始学习了

    • PHP代码执行方式: 服务端web编程写好的代码,需要通过浏览器访问服务器,在服务器端执行,然后返回给用户结果,如果直接使用浏览器打开,就会解析为文本

    PHP常见语法

    注,这里只列举常用的PHP语法,更为详细的语法教程可以查阅w3cschool_PHP教程

    • 文件定义,注释: PHP文件以.php结尾,代码的编写位置在<?php 写在这里?>.注释的写法跟js一致

      <?php
        //这是单行注释
        /*
            这是多行注释
        */
      ?>
      
    • PHP变量规则:

      • 变量以$符号开头,其后是变量的名称
      • 变量名称必须以字母或下划线开头
      • 变量名称不能以数字开头
      • 变量名称只能包含字母数字字符和下划线(A-z0-9 以及_
      • 变量名称对大小写敏感
    // 变量以`$`符号开头,其后是变量的名称
    // 变量名称必须以字母或下划线开头
    $a;
    $b;
    $a1;
    $_abc;
    
    // 变量名称不能以数字开头
    // 变量名称只能包含字母数字字符和下划线(`A-z`、`0-9` 以及` _`)
    // 下面这些是错误的变量定义
    $1;
    $哈哈;
    $^&*;
    
    //变量名称对大小写敏感(`$y` 与`$Y` 是两个不同的变量)
    // 下面定义的两个变量是不同的,大写,小写x
    $x;
    $X;
    
    • 数据类型 PHP支持的数据类型包括:字符串,整数,浮点数,布尔,数组,对象,NULLL(注:由于对象中可以使用函数,故对象的语法在下文中会提及)
      • 定义字符串时需要注意:
        • 单引号:`` 内部的内容只是作为字符串
        • 双引号:"" 如果内部是PHP的变量,那么会将该变量的值解析
      • 字符串连接:不同于JavaScript,PHP中使用.进行连接
    // 字符串
    $str = '123';
    
    // 字符串连接
    $str2 = '123'.'哈哈哈';
    
    // 字符串
    
    // 整数
    $numA = 1; //正数
    $numB = -2;//负数
    
    // 浮点数
    $x = 1.1;
    
    // 布尔
    $a = true;
    $b = false;
    
    // 数组
    $arr = array('123',123)
    
    • 运算符 PHP中的运算符跟JavaScript中的基本一致,用法也基本一致

      • 算数运算符: +,-,/,*,%
      • 赋值运算符: x = y,x += y,x -= y 注:这里列举的并不完全,更为详细的PHP运算符教程请查阅w3cschool_PHP运算符
    <?php 
    $x=10; 
    $y=6;
    echo ($x + $y); // 输出 16
    echo ($x - $y); // 输出 4
    echo ($x * $y); // 输出 60
    echo ($x / $y); // 输出 1.6666666666667
    echo ($x % $y); // 输出 4
    ?>
    
    • 函数: PHP虽然系统内建了一些函数,但是这不影响我们定义自己的. 函数的作用就是在代码中可以重复使用的语法块,页面加载的时候不会执行,只有在被调用的时候才会执行
    // 基础语法
    function functionName() {
      这里写代码
    }
    
    // 无参数 无返回值的函数
    function sayhi(){
        echo "Hello World";
    }
    
    // 有参数 无返回值的函数
    function sayName($name){
        echo $name.'你好哦';
    }
    // 调用
    sayName('小狐狸');
    
    // 有参数,参数有默认值的函数
    function sayFood($food='西兰花'){
        echo $food.'好好吃';
    }
    // 调用
    sayFood('西葫芦');// 如果传入参数,就使用传入的参数
    sayFood();// 如果不传入参数,直接使用默认值
    
    // 有参数,有返回值的函数
    function sum($a,$b){
        return $a+$b
    }
    sum(1,2);// 返回值为1+2 = 3
    
    • 对象 PHP中允许使用对象这种,自定义数据类型. 使用时必须先声明,实例化之后才能够使用
    // 定义最基础的类
    class Fox{
    
            public $name = 'itcast';
            public $age = 10;
    }
    $fox = new $fox;
    // 对象属性取值
    $name = $fox->name;
    // 对象属性赋值
    $fox->name = '小狐狸';
    
    // 带构造函数的对象
    class fox{
        // 私有属性,外部无法访问
        var $name = '小狐狸';
        // 定义方法 用来获取属性
        function Name(){
        return $this->name;
        }
        // 构造函数,可以传入参数
        function fox($name){
        $this->name = $name
        }
    }
        // 定义了构造函数 需要使用构造函数初始化对象
        $fox = new fox('小狐狸');
        // 调用对象方法,获取对象名
        $foxName = $fox->Name();
    
    • 内容输出: echo:PHP语句直接使用即可,输出字符串 print_r():函数输出复杂数据类型,比如数组,对象 var_dump():函数输出详细信息,如对象、数组
    $arr =array(1,2,'123');
    
    echo'123'; 
    // 结果为 123
    
    print_r($arr);
    // 结果为 Array ( [0] => 1 [1] => 2 [2] => 123 )
    
    var_dump($arr);
    /* 结果为 
        array
      0 => int 1
      1 => int 2
      2 => string '123' (length=3)
    */
    
    • 循环语句: 这里只列举了foreach,for循环
    // for 循环
    for ($x=0; $x<=10; $x++) {
      echo "数字是:$x <br>";
    } 
    
    // foreach 循环
    $colors = array("red","green","blue","yellow"); 
    // 参数1为循环的对象,参数2会将对象的值挨个取出,直到最后
    // 如果循环的是对象的话,输出的是对象属性的值
    foreach ($colors as $value) {
      echo "$value <br>";
    }
    输出结果为
    /*
    red 
    green 
    blue 
    yellow 
    */
    
    • header()函数 用来向客户端(浏览器)发送报头,如果出现中文无法显示,可以尝试在PHP代码顶部添加 如下代码
    header("content-type:text/html; charset=utf-8");

    # php中header()

    浏览器访问http服务器,接收到响应时,会根据响应报文头的内容进行一些具体的操作,在php中,我们能够使用 header来设置这些内容

    • 设置文本编码

      • 设置编码格式为:utf-8
           header('content-type:text/html; charset= utf-8');
        
    • 设置页面跳转

      • 设置跳转到百度首页
             header('location:http://www.baidu.com');
    
      • 设置页面间隔刷新
          header('refresh:3; url=http://www.xiaomi.com');

    PHP_GET数据获取

    PHP中,如果想要获取通过get方法提交的数据,可以通过$_GET对象来获取(虽然参数在地址栏中可以查看)

    • HTML代码: 下面就是一个简单的表单代码,将数据提交到01.php,使用get的方式

    <form action="01.php" method="get" >
      <label for="">姓名:
          <input type="text" name= "userName"></label>
          <br/>
      <label for="">邮箱:
          <input type="text" name= "userEmail"></label>
          <br/>
          <input type="submit" name="">
    </form>
    • PHP代码:

    <?php
        echo "<h1>GET_PAGE</h1>";
        echo 'userName:'.$_GET['userName'] ;
        echo '<br/>';
        echo 'userEmail:'.$_GET['userEmail'];
    
    ?>

    PHP_POST数据获取

    PHP中,如果想要获取通过post方法提交的数据,可以通过$_POST对象来获取

    • HTML代码: 将数据提交到02.php,使用post的方式(注意:代码中的method改为post)

    • 此时地址栏将不显示账号和邮箱

    POST&GET错误处理

    当我们直接访问POST&GET页面时由于并没有传递任何数据,会因为$_GET$_POST不存在对应的key而报错.

    • 处理方式1:
      • 使用array_key_exists(key, 数组)函数来进行判断
      • 参数1: 要检测的key字符串
      • 参数2: 检验的数组
        if(array_key_exists('name', $_GET)){
            //如果有数据 再去读取
        }else{
            // 反之 可以执行一些 其他的逻辑
        }

     

          

  • 相关阅读:
    转:.net面试题及答案(一)
    高兴!
    游标中LOCAL的意思
    九度 1333
    在进程槽中为进程分配一个空闲位置并分配一个进程号
    USACO Section 1.2 Milking Cows
    九度 1334
    USACO Section 1.3 Mixing Milk
    USACO Section 1.3 Calf Flac
    USACO Section 1.3 Prime Cryptarithm
  • 原文地址:https://www.cnblogs.com/mingm/p/6880309.html
Copyright © 2011-2022 走看看