# php 开发之前的准备

  • 下载 warp 集成开发环境

修改 host 文件 Windows/system32/drivers/etc/host

自定义多个本机 ip 域名如 f.com y.com

修改 wamp\bin\apache\apache2.4.9\conf\httpd.conf 文件在末尾添加如下代码

可以同时访问如 f.com,y.com

NameVirtualHost *:80
<VirtualHost *:80>
    #域名的配置,每个虚拟主机有个一域名对应
    ServerName localhost
    #设定网站的目录
    DocumentRoot "D:/wamp/www/"
    #给目录指定访问权限
    <Directory "D:/wamp/www/">
        Order Deny,Allow
        Allow from all
    </Directory>
    #给默认的首页
    Options Indexes FollowSymLinks
</VirtualHost>

<VirtualHost *:80>
    ServerName www.f.com
        DocumentRoot "D:/wamp/www/f.com"
        <Directory "D:/wamp/www/f.com">
        Order Deny,Allow
        Allow from all
        </Directory>
    #给默认的首页
    Options Indexes FollowSymLinks
</VirtualHost>

<VirtualHost *:80>
    ServerName www.y.com
        DocumentRoot "D:/wamp/www/y.com"
        <Directory "D:/wamp/www/y.om">
        Order Deny,Allow
        Allow from all
        </Directory>
    #给默认的首页
    Options Indexes FollowSymLinks
</VirtualHost>
use mysql;
update user set password=password<'123'> where user='root' and host='localhost'
#修改MySQL密码

# Html and Css

w3c

MDN

在初步了解 html 和 css 的基础上学习使用 bootstrap 框架:Bootstrap 是最受欢迎的 HTML、CSS 和 JS 框架,用于开发响应式布局、移动设备优先的 WEB 项目。

使用方式: bootstrap 框架 是依赖 jquery 库的,首先下载 jquery 库,

之后如下方式引用

<script type="text/javascript" src="../js/jquery-3.5.1.min.js"></script>
    <script type="text/javascript" src="../js/bootstrap.min.js"> </script>
    <link rel="stylesheet" type="text/css" href="../js/bootstrap.min.css">

框架用的比较多的点:

  • 栅格系统把页面 12 等分用于页面布局和响应式
  • css 的美化等

# 留言板练习

<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script type="text/javascript" src="../js/jquery-3.5.1.min.js"></script>
    <script type="text/javascript" src="../js/bootstrap.min.js"> </script>
    <link rel="stylesheet" type="text/css" href="../js/bootstrap.min.css">
    <title>留言板</title>
</head>
<body class="container">
    <nav class="navbar navbar-default">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <a class="navbar-brand" href="#">留言板</a>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
                <ul class="nav navbar-nav">
                    <li><a href="#">我要留言</a></li>
                </ul>
                <form class="navbar-form navbar-right">
                    <div class="form-group">
                        <input type="text" class="form-control" placeholder="Search">
                    </div>
                    <button type="submit" class="btn btn-default">搜留言</button>
                </form>
            </div><!-- /.navbar-collapse -->
        </div><!-- /.container-fluid -->
    </nav>
    <div class="row">
        <div class="col-md-4"></div>
        <div class="col-md-4">
            <legend class="text-center">用户注册</legend>
            <form class="form-horizontal">
                <div class="form-group">
                  <label for="inputEmail3" class="col-sm-4 control-label">用户名</label>
                  <div class="col-sm-8">
                    <input type="text" class="form-control"  placeholder="Username">
                  </div>
                </div>
                <div class="form-group">
                  <label for="inputPassword3" class="col-sm-4 control-label">密码</label>
                  <div class="col-sm-8">
                    <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
                  </div>
                </div>
                <div class="form-group">
                    <label for="inputPassword3" class="col-sm-4 control-label">确认密码</label>
                    <div class="col-sm-8">
                      <input type="password" class="form-control" id="inputPassword3" placeholder="Password">
                    </div>
                  </div>
                 
                <div class="form-group"  >
                  <div class="col-sm-offset-4 col-sm-8"  >
                    <button type="submit" class="btn btn-default" style="background-color:rgb(7, 172, 248)" >注册</button>
                  </div>
                </div>
              </form>
        </div>
        <div class="col-md-4"></div>
         
    </div>
    <nav class="navbar navbar-default navbar-fixed-bottom">
        <div class="container">
          版权为我所有
        </div>
      </nav>
    
</html>

效果如图:

image-20210203221311298

# php

# 变量名以及运算符

变量名:必须以 $ 符号开头,以 a-z,0-9,下划线组成,不能以数字开头,变量名区分大小写

变量名带 $

语句以;结尾

# hello world

<?php
    echo "hello world";

# 一些必要的函数

phpinfo();// 显示搭建环境
var_dump(isset($b));// 返回 bool 值,输出语句
echo "<br>";// 换行
echo (gettype($a));// 获取变量类型
echo isset($a); // 检测变量是否设置设置输出 1,否则无输出

# 输出汉字:

header("Content-type:/html;charset=utf-8");

变量类型:

整形,integer

浮点型,double

字符型,string

布尔值,false true

数组,// 索引数组,关联数组

null, Null

资源

对象

运算符:

数学运算符: +-*/ % 取模

++ 前加加,后加加

-- 前减减,后减减

比较运算符:

返回 bool 值

//> < >= <= != ==

=== ! ==

$a="10";
$b=10;
var_dump($a===$b);//false 会判断数值类型
var_dump($a==$b);//true

? :

if else 的简写形式

$a=20;
$b=10;
echo $a>$b?"hello":"go" // 输出 hello

&& || !

与,或。非

字符串运算符:

.

$c="baidu";
 $d="alibaba";
 echo $c.$d;
// 字符串的拼接

# 三大控制结构

# 顺序

依次执行语句

# 选择

if ($a>5){
    echo $a;
}else if($a>7)
    echo "a>1";
// 满足一个条件后面的就都不会执行
$a=4;
    switch($a){
        case 1:
            echo "a=1";
            break;
        case 2:
            echo "a=2";
            break;
        case 3:
            echo "a=3";
            break;
        default:
            echo "a=!";
            break;
        }// 记得 break

# 循环

# while
$a=1;
    $b=10;
    while ($a<$b){
        echo "a=$a,b=$b"."<br>";
        $a++;
    }
# for
for($i=1;$i<20;$i=$i+2){
        echo $i."<br>";
    }
# do{}while
do{
        echo "a=$a,b=$b"."<br>"
        $a--
    }while($a>$b)

先执行判断

break 跳出整个循环

continue 略过本次循环

# 字符串

"" 和 '' 的区别:

"" 可以解释变量转义就是解释变量的值,而 ' ' 直接显示不转义

常用函数:

strlen (): 统计字符串函数

mb_stelen () 计算真实的字符个数(中文)

$a="helloworld";
    $b="北京";
    echo "a=".mb_strlen($a,"utf-8")."<br>";
    echo "b=".mb_strlen($b,"utf-8")."<br>";// 输出 2

strpos () 计算字符串位置从零开始 // 返回一个整数,查找不到就返回空

stirpos () 区分大小写

strrpos () 最后一次出现的位置

echo strrpos($a,'he)

返回数字

字符串替换:

$a="helloworld";
$b="北京";  
echo str_replace("he","baidu",$a);
输出:baidulloworld

strstr ()

echo strstr($a,"l");
输出:lloworld

substr()截取字符串

$a="helloworld";
echo substr($a,4,4);
输出:owor

strrchr () 从右边截取 // 取文件后缀名用

$a="helloworld";
echo strrchr($a,"h");
输出:helloworld
$website="www.mashiro.zone";
$arrstr=explode(".",$website);
print_r($arrstr);

explode (): 分割字符串返回数组

输出 Array( [0] => www [1] => mashiro [2] => zone)

implode ($arrstr,".")拼接字符串传入的是数组

trim (str) 消除字符串首尾的空格

ltrim

rtrim

addslashes($user)

$website="www.'mashiro'.zone";
 echo addslashes($website);
输出:www.\'mashiro\'.zone
xss常用
$ss = "<script>alert('1')</script>";
 echo $ss; // 弹窗代码
 echo htmlspecialchars($ss);
输出<script>alert('1')</script>

image-20210204145745416

# 数组

$arr =array(1,2,3,"baidu",false);
 $arr1=array(
        "aa"=>"wuhan",
        "bb"=>"beijing"
    );
 echo $arr[1];
 echo $arr[2];
  echo $arr[3];
print_r($arr);
var_dump($arr);
var_dump($arr1);

输出:print_r

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => baidu [4] => )

输出:var_dump

array (size=5)
  0 => int 1
  1 => int 2
  2 => int 3
  3 => string 'baidu' (length=5)
  4 => boolean false
array (size=2)
  'aa' => string 'wuhan' (length=5)
  'bb' => string 'beijing' (length=7)

# 遍历

索引数组

for($i=0;$i<count($arr);$i++)
    {
        echo $arr[$i];
        echo "<br>";
    }

关联数组

foreach($arr as $key => $value){
        echo $key."---".$value."<br>";
    }

# 增删改查

$arr=array("a","vv","cc");
$arr[]="ff";
unset($arr[1]);
$arr[2]="ssss";

# 常用数组函数

array_key_exists() 
array开头的函数

# php 函数

// 无参 
function a()
{
    
}
// 有参
function b($a,$b){
    
}

# var_dump($GLOBALS)

数组 get post 函数等全局变量

# var_dump($_SERVER)

输出 http 协议服务器客户端等信息

打印 cookie 信息

利用 cookie 插件改变 cookie 信息

设置 cookie 信息

setcookie("aaa","www.mashiro.zone"time()+60); // 最后参数设置 cookie 是否过期

第一次设置 cookie 无法取出

刷新再次请求得到

session 是设置在服务端的

session 登录验证

session_start();

# 文件包含

# require 报错不执行

# include 报错继续执行

# 文件上传

# MYsql

# mysql 的客户端

phpadmin

console

navicat

客户端操作数据库

dbms

image-20210507223931084

这四个一定存在的数据库

数据库,表,字段,列,行,记录