004 - PHP git

##   报错 
 `git上传要写限制500M那个,要不页面不更新`

www.wangeditor.com

dataType: 'json',


print_r($_SERVER);
dump();
echo();


###  bootstript 的居中类名
   container

####  百度云上传的  bug
出不来页面:
/view/
改成APP/view/

进了phpfunction index(){ 中,print_r(123); 看一下,能不能出来123.}
如果还是没有,看看 include 'APP/view/gameadmin.html'; 这几个字对了没,核对文件夹里,
是不是 gameadmin  写成 Gameadmin 了 。一般只有这个错误


如果出现404页面 是路径问题   大小写问题

###   解决 bug
//调试 :  到处 用 echo 查看,在 index.php 中,在 core 中,一步一步echo ,看看到哪一步没有的
//echo 123;


####★技巧★   密码安全保障机制
md5()
把任意长度的字符串 --> 定长的字符串

####★技巧★   关闭input的默认弹框
   歌手名">

   ajax 的值要用JS先从html中获取,再传给phpphp处理数据库中,然后从php发回来再在JS处理显示在页面上

####★技巧★   进入页面后自动触发这个事件   刷新
$(window).trigger('hashchange');

页面跳转:
location.href = location.pathname + '#list';

####★技巧★   浏览器 报错   
Parse error: syntax error, unexpected end of file in D:already.html on line 109

  书写错误
echo的结尾没加分号  ; 


####★技巧★   报错
 data = JSON.parse(data);

   loadings(data);
可能是调用函数没有传参  loadings();

原因:data数据有问题
 data: {name: nameEl, prive: priceEl, pic: picEl, num: numEl, cid: cidEl},
price 写错


####★技巧★   选中复选框的值
$('.radio:checked')
`let cidEl = $('.radio:checked').val();`

nameEl.val()

####★技巧★  console.table
   console.table


####★技巧★   修改 input 值,必须修改value

jquery input 的值是:  nameEl.val()


####★技巧★  
localhostz就等于127.0.0.1
192.168.3.1668087    8087是端口号


####★技巧★   后台有哪些语言    
//JS python php node.js java .net
`通过json()方式来链接`


####★技巧★  鼠标点击事件 默认增加
element event listeners 下查看鼠标点击事件被注册越来越多次。
换一批点击事件在length下时,每次length=3时,下边的on事件就多注册一次,所以会出现点击次数越多,注册越多的现象。

1个汉子3个字节

####★技巧★    浏览器CSS改变后不更新
浏览器newwork勾上  disable cache


####★技巧★    JS 引入   返回 从哪来到哪去



####★技巧★     apache允许外网访问
apache  httpd.conf  httpd-vhosts.conf  中都改为:
#   onlineoffline tag - don't remove
    Require all granted


####★技巧★  phpMyadmin  数据库注意数据类型 字段长度的选择
phpMyadmin --> test --> news   5  -->  id  INT / VARCHAR / text/mediumtext 字段长度不够  --》  保存

####★技巧★   跳转页面,修改网址  的方法
  JS   `location.href = $('a')[0].getAttribute('href')`

页面会在5秒后跳转,如果没有,请点击跳转

`include '../0614/jump.html';` `header('Location:/0614/');` //校验成功进入首页 ####★技巧★ localhost 不能用解决方法: localhost= 127.0.0.1= wamp用户名:root 密码: 空 wamp版本太低,需要在5.5版本以上 PHP-->version-->get more 下载新版本 ####★技巧★ webstorm 系统检测出问题 设置中 --> Appearance & Behavior --> System Setting --> Synchronization --> 下边只留第一个的对勾 (后边为自动保存) mysql wampserver ####★技巧★ 用户看到的是图形 浏览器看到的是对象 JS看到的是字符串、代码 ####★技巧★ 滚动条 超出浏览器 scrollTop $(window).scroll(function(){ console.log($(document).scrollTop()) }) ####★技巧★ $('li').css({color:'red'}) 中的 $('li') 称为JQuery集合 ####★技巧★ 赋值 程序运行第一步都在赋值 ####★技巧★ 网址 下载JQuery www.bootcdn.cn ####★技巧★ JQuery兼容问题 2.0开始不再兼容IE81.12以下可以兼容IE8. DOM Document Object Model 文档对象模型 ####★技巧★ 控制台中 属性: length:(...) 三个点是get set 事件 ####★技巧★ 视口 ####★技巧★ tabs[k].classList.remove('active'); navs[i].classList.add('active'); ####★技巧★ 移动端 width:7.5rem 不要这样写 默认 *{ box-sizing:border-box; } 优先使用 flex 100% 最后再选rem ####★技巧★ 浏览器 报错!!! 代码修改,但浏览器没变(浏览器中的缓存还在) sourse network disable cache 强制把缓存去掉 ####★技巧★ 在控制台 console 中输入 查看图片 for(let i = 0;i[i].src) } $('h1') ####★技巧★ 控制台的properties 是原型链 ####★技巧★ 字符串只有空字符串为空 ####★技巧★ 函数内部打断点没有显示,隐藏的,只有在函数运行,点击事件的时候回出现 ####★技巧★ 渐变--兼容问题 先写兼容,最后写标准。 ####★技巧★ display:flex 行内块元素的时候:display:inline-flex 容器下边统一的为项目 容器本身,项目 方向、换行、水平、垂直,单轴交叉、多轴交叉 ####★技巧★ 编程风格 firstnum = secondnum = ''; 等同于 firstnum = undefined; secondnum = undefined; ####★技巧★ 习惯用 += ####★技巧★ 查看它是否添加事件: 浏览器控制台---element添加事件---Event Listeners ####★技巧★ 调试出错 调试:把所有变量 表达式的值 都输出来就能解决 ####★技巧★ scope控制台调试 ####★技巧★ 调试出错 检查类名是否重复 ####★技巧★ flex布局中有个 调竖直高度元素的 align-items: center; ####★技巧★ 实例化 就是指 new一个东西,new这个东西 ####★技巧★ 添加 移出类名 tabs[k].classList.remove('active'); tabs[k].classList.add('active'); ####★技巧★ obj.a == obj['a'] #### 一、 1.JavaScript是基于原型的语言 2.10种数据类型(大致上)都是对象 (除undefined3.每个对象都有自己的原型 __proto__ (只要是对象,就有原型) 4.Object.prototype 是所有原型的终点 /////////////////////////// 5.所有对象都能使用原型链上所有的属性和方法 ////////////////////////////////////////////////////////////////////////////// 二、 this一般出现在函数内部 哪个对象调用这个函数 this就指向谁 //谁调用它就指向谁 this可以被强制替换 三、new的时候发生了什么 函数对象上有一个特殊的属性叫:prototype 这是javascript专门为原型设计的一个属性 // var o = new A(); //此时的o是对象 // 1.o = {} 创建一个空对象 // 2.A.call(o) call的方式调用构造函数 把this替换成o // o._proto_ = A.prototype // 3.o加上原型 A.prototype 属性 // 4.return o var arr = new Array[1,2,3]; // var arr = {}; // Array.call(arr,1,2,3); // arr.__proto__ = Array.prototype 对象 构造函数 function A(){ this.a = 12; this.b = 13; } var o = new A(); //此时的o是对象 o.a o.b //因此可以用 0.a o.b #### /JQuery $('li') //JQuery集合 #### cmd 命令 环境变量 SASS //环境变量 1.QQ(软件)的安装目录找到,复制地址, D:\QQ\Bin 2.放到环境变量中(属性--高级设置--环境变量--path--加分号), 3.cmd 中运行 qq dir ls -al clear node -v npm -v cmd--> cd 切换目录 dir 查看目录下文件 npm 下载(已有)程序 npm install -g bing-pic 把微软官网的图片换成背景图片 运行 bing-pic npm install -g node-sass 安装node-sass的软件 node-sass -v npm install -g cnpm //中文版 npm 命令改为: cnpm install -g node-sass 任何一个文件中都有 两个文件夹 . .. . 当前文件夹 .. 上一层 cmd中复制命令:右键--标记--回车 C:\Users\Administrator\AppData\Roaming\npm 把文件拖过去 node-sass -w index.scss index.css node-sass -w index.scss index.css --output-style expanded . Sass简介 Sass 是一种css预处理器,CSS 预处理器定义了一种新的语言,其基本思想是,用一种专门的编程语言,为 CSS 增加了一些编程的特性,将 CSS 作为目标生成文件,然后开发者就只要使用这种语言进行编码工作。 /* 变量默认只能在属性值中使用 差值: 选址器和属性部分用差值 #{$s} */ ### 占位符 % 生成高效率群组选择器 % 继承的方法 --> 群组选择器 ### 扩展/继承(@extend) %mt5 { margin-top: 5px; } %pt5{ padding-top: 5px; } .btn { @extend %mt5; @extend %pt5; } ### for 循环 @for $i from 1 through $num{ #{$box}:nth-child(#{$i}){ animation: drop 1s cubic-bezier(0.38, 1.48, 0.22, 1.32) ( $i - 1 ) * 0.1s both; } } 数字是:$x
"; } ?> ### each 遍历 $arr: 'one','two','three'; @each $v in $arr{ .atem-#{$v}{ color:red; } } /*html中遍历: foreach($data as $v){ }*/ #### PHP中 遍历: 键 值 /*foreach($arr as $k => $v){ dump($k,$v); }; foreach ($nts as $key => $value) { var_dump($key, $value); $id = $value['id']; dump($id); }; ## ★★★★★★★★★★★ SASS ★★★★★★★★★ $a:13; $a:12 !default; //默认 @debug $a; $aa: 10rem; $b: 10px; $c: null; @debug $aa; @debug $b; @debug $c; $d: $a * 2; $border: '1px solid black'; @debug $d; @if ($a > 7){ } ## ★ ★★★★★★★★★★★ PHP ★★★★★★★★★ 公告栏 当我们打开浏览器 输入一个地址 随后发生了什么 ## 【浏览器(chrome)】的主要功能: 1.通过网络发送请求, 3.接受网络上发给它的回应 4.根据回应的内容进行对应的操作(**一般为渲染(画图)**) ----------------------------- http 协议 ---------------------------------- 是服务器和浏览器之间通信遵循的一个规则 ## 【服务器Apache】的主要功能 2.回应通过网络发送过来的请求。 如果请求的资源是一个php文件 apache 不会把php文件的内容发回去 apache 会把该文件当成一段程序去运行 程序运行一般都有输出 apache 拿到这个输出 通过网络吧这个输出发回浏览器 WAMP server WwindowsAApacheMMysqlPPhpjava node.js perl .net ## 【浏览器】会在什么情况下发送请求 1.输入地址回车(主动) 2.点击a链接(有可能,主动) 3.提交表单有可能会发起请求(主动) form input 4.绘制html的过程中会自动发起请求(自动) 5.解析css的过程中可能会自动发起请求(自动) `background-image:('../img/1.png');`` 6.解释js的过程中有可能会是自动发起请求(自动)【ajax ## 【浏览器】发出去的请求是什么? 是一堆字符串 GET /a.html HTTP/1.1 【要获取的文件 http协议】 Host: 192.168.4.147 【地址,从哪获取的】 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 【获取的文件的类型】 ## 【服务器】发回来的是什么 是一堆字符串 200 OK 404 报错 500 报错 HTTP/1.1 304 Not Modified 【头】 Server: Apache/2.2.29 (Unix) ... 【空行】 服务器类型 content-Length:54 //字节 1025字节==1M 1024M==1G 【空行】 【内容的长度】 content-Type:text/html(plain) 【主体】 【请求内容的类型,】 content-Type:text/html 返回的是html内容 content-Type:text/plain 返回全部(包括标签)如下

this is header

## ★★★★★ PHP 输出 ★★★★★★★★★ //echo '
';
//    print_r($_SERVER);
//echo '
'; 变量 // 数据类型 // 表达式和语句 // 运算符 // 控制流程 // echo 5; // echo rand( 1,10 ); if(rand( 1,10 )>5) { ./error.jsWEB中是 localhost/index.php/error.js /views/error.js ### header('Content-Type:text/plain'); `修改头部信息` header 是选中头部信息 header('X-sever:ABC'); include 'a.html'; //输出 a.html 这个文件 }else{ header('Content-Type:text/html'); 修改头部信息 header 是选中头部信息 header('X-sever:DEF'); include '1.txt'; } dump() ### 程序头部:调试工具: +vendor文件夹 ★★★★★★★ ★★★★★★★ pushHandler($options); $whoops->register(); ini_set('display_errors', 'On'); ## ★★★★★★★★★★★★★★ PHP ★★★★★★★★★★★★★★ #### PHP WEB开发中 ./ ../ 页面是从服务器回来的: . 代表 localhost/index.php / 代表 localhost ### ./ 退回一级 请求: http://localhost/index.php/air/qwe/ewqqwe/ewq 返回: http://localhost/index.php/air/qwe/ewqqwe/error.js ### ../ 退回2请求: http://localhost/index.php/air/qwe/ewqqwe/ewq 返回: http://localhost/index.php/air/qwe/error.js 一般不要用 ./ ../ 用直接的 `/views/error.js` ./error.js WEB中表示应该是 `localhost/index.php/error.js` ### > incliude 引入的html页面中如果包含php标记 会先运行标记中的代码,运行完之后再输出整个内容 ### > include 也能引入php文件,如果引入的是php文件 运行这个文件 ####################### 数据类型 ############################ /* $int = 12; dump($int); $float = 12.5; dump($float); $str1 = 'string{$float}'; $str2 = "string{$float}"; //相当于 JS中的模板字符串 `阿斯顿还{aasd}asd` dump($str1); dump($str2); $name = "\\name"; //转义字符串 \ 为了使\name正常输出来 dump($name); $arr = array( 'k1' => 'v1', 'k2' => 'v1', 'k3' => 'v1', 'k4' => array('a','b',1,2.3) ); dump($arr);*/ //unset($arr['k2']); //dump($arr); class A{ public $a; public function getA() { return $this->a = 12; } } $o = new A(); dump($o);*/ ## ★★★★★★★★★★★★★★ 变量 PHP 基础 ★★★★★★★★★★★★★★ // 字符串连接 $num = 12.8; $string = "this is world".$num; // 双引号中使用变量 $world = "world"; $hello = "hello {$world}"; // 转义特殊字符 $class_name = "\\name"; echo $class_name; // 遍历 foreach ($array as $key => $value) { var_dump($key, $value); } // 对象 class foo { function do_foo() { echo "Doing foo."; } } gettype()函数可以得到变量的类型 is_[type]()函数可以用来判断某个变量是否某个类型 var_dump()函数会输出变量的类型和值 静态变量 static $sum = 0; $_SERVER; 以结构化的形式存储用户的请求信息和一些与服务器相关的信息 dump($_SERVER); 循环 date里有几条,就循环几次 组件 面板 ## login name = account type = text name = password type = password ## ★★★★★★★★★★★ 作业 ★★★★★★★★★★★ login ( 导航条 表单 面板 自己的CSS--> / (首页用:面板) --> list (用列表组) --> news (用面板) --> air (有图片的页面 用缩略图) --> mac(不用做) --> 404页面 ## ★★★★★★★★★★ news中两种方法: ★★★★★★ 不用输入:
需要从列表页进入先点:
    //$tip = getMessage(); //数据库 ### 表单中method=post 就是把值隐藏掉 =get 不会隐藏 比如说密码的输入显示和隐藏
    搜索">
    一般都用隐藏 if(isset){ //isset是看一个数组中有没有一个值,如果有返回true,否则返回false } ##### 截取 $path = explode('?',$_SERVER['REQUEST_URI'])[0]; $action = explode('/',$path)[2]; ###### 函数 function index(){} 用法和JS的函数用法一样,只是可以是可变函数 $fn = 'index'; $fn() ==> 相当于 index(); isset(变量) 检测这个变量是否存在 function_exists(函数) 检测这个函数是否存在 #### news_lest 源代码 /*$data = array( 0 => array( 'title' => '111', 'author' => 'a1', 'content' => '没有什么问题是火力覆盖解决不了的,如果有,那就问啊!', ), 1 => array( 'title' => '222', 'content' => '世界十大名枪之首:AK-47的魅力所在' ), 2 => array( 'title' => '333', 'content' => '解放军这款战机到底有多厉害?美国将其列为三' ), 3 => array( 'title' => '444', 'content' => '看武警汽车兵炫技,感受军营的速度与激情' ) );*/ ## ★★★★★★★★★★ 数据库 test phpMyadmin --> test --> news 5 --> id `类型选择` : INT / VARCHAR / text/mediumtext 字段长度不够 --》 保存 名字 类型 默认 排序 规则 content text utf8_general_ci ctime TIMESTAMP CURRENT_TIMESTAMP time:date 通用 utf8_general_ci 插入 --> 不用管id PDO中复制代码到 PHP代码 修改代码 dbname 'dbname' => 'test', 'username' => 'root', 'password' => '', $stmt = $pdo->query('select * from news'); 相当于JS $pdo.query() SELECT * FROM `news` WHERE 1 SELECT title,content FROM `news` SELECT * FROM `news` WHERE id = 1 SELECT * FROM `news` WHERE author = 'wo' ##### 把数据表中的title下的内容全改为titleUPDATE `advanture` SET `title`='真心话' ## ★★★★★★★★★★ 作业 ★★★★★★★★★★ 1.熟练掌握变换形式之后的代码 2.学会查询数据库 3.完成新闻列表 新闻详情页面 4.完成登录功能 5.让首页显示数据库中的最新添加的一条公告() ## ★★★★★★★★★ 数组的长度 echo count($arr); ## ★★★★★★★★★ 编码历史 ascII 编码 gbk2312 unicodeutf-8 优化过的,基础是unicode码的编码 byte 字节 bytes = 8个位 00010001 h l #### page.php下边的 include 'core/pdo.php'; global $pdo; ##### method_exists — 检查类的方法是否存在 bool method_exists ( mixed $object , string $method_name ) 检查类的方法是否存在于指定的 object中。 //方法二 if(isset($_SERVER['PATH_INFO'])){ //是否有fn $fn = substr($_SERVER['PATH_INFO'],1); }else{ $fn = 'index'; } if(method_exists('pages',$fn)){ //判断 $fn 这个函数是否存在 $pages->$fn(); }else{ include '../405.html'; } file_exists 判断有没这个文件 class_exists 检查类是否已定义 JSON.stringify(arr); //JS中转换为字符串 便于 php转换 json_decode(); //php中解码 json_encode(); //php中编码 JSON.parse(data); //JS中转换为数组 便于 php转换 ##### pring_r(111); PHP中需使用 pring_r(111); #### admin 数据库 `$stmt = $db->pdo->query('select * from risk order by id desc limit 3 offset '.($page - 1) * 3);//数据库 偏移,跳过9` ##### x的东西 function x(){ $page = $_REQUEST['page']; include 'core/Db.php'; $db = new Db(); $stmt = $db->pdo->query('select * from advanture order by id desc limit 3 offset 3 ');//数据库 偏移,跳过9// $stmt = $db->pdo->query('select * from advanture order by id desc limit 3 offset 3'.($page - 1) * 3);//数据库 偏移,跳过9// $stmt->bindValue(1,($page - 1) * 3); // $stmt->execute(); $data1 = $stmt->fetchAll(); $data = json_encode($data1); } ##### SQL ## index.php 中的 //以下为今天练习的 try { $pdo = new PDO('mysql:host=localhost;dbname=test;port=3306;charset=utf8','root',''); // $pdo = new PDO('mysql:host = localhost;dbname = test;port=3306,charset = utf8', 'root', ''); } catch (PDOException $e) { dump($e->getMessage()); } //增删改查 //$stmt = $pdo->query('select * from trues'); $data = $stmt->fetchAll(); print_r($data); ////问号用prepare $stmt = $pdo->prepare('insert into trues (id,name,age) values(?,?,?)'); // (id,name,age) 必须是 trues 表里有的 $stmt->bindValue(1, 18); $stmt->bindValue(2, 'asddsa'); $stmt->bindValue(3, 'hgfdsdgh'); $stmt->execute(); $id = $pdo->lastInsertId(); print_r($id); //删 一条 $stmt = $pdo->prepare('delete from trues where id = ?'); $stmt->bindValue(1, 1); $stmt->execute(); ////删多条 $stmt = $pdo->query('delete from trues where id in (9,8,7,6,5) '); $stmt->execute(); //执行准备好的Query //$stmt = $pdo->prepare('update trues set name = ?, age = ? where id = ?'); $stmt->bindValue(1, 'asddsaasd'); //问号的值 $stmt->bindValue(2, 'asddsa'); $stmt->bindValue(3, '4'); $stmt->execute(); ///////////////////////////////////////// $id = $db->pdo->lastInsertId(); ## database.sql 下边的 -- 这个文件我们不直接使用 -- 在该文件中定义整个应用到的数据库表 --删除 risk -- //注意最后一个是分号‘;’ DROP TABLE IF EXISTS trues; CREATE TABLE trues( id INT(12) PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), age VARCHAR(255) ) DEFAULT CHARSET = utf8; INSERT INTO trues (name,age) VALUES ('名字1','年龄1'), ('名字2','年龄2'), ('名字3','年龄3'), ('名字4','年龄4'), ('名字1','年龄1'), ('名字2','年龄2'), ('名字3','年龄3'), ('名字4','年龄4'), ('名字1','年龄1'), ('名字2','年龄2'), ('名字3','年龄3'), ('名字4','年龄4'); #### ajax ajaxStart ajaxSuccess $(document).ajaxComplete(function(){ $('.tip').css({background:'#00C853'}).stop().animate({width:'100%'}).queue(function(){ $('.tip').css({width:'5%',height:'0'}).dequeue(); }) }); ### php中让进程停顿 1sleep(1) #### ajax 传参 url: '/ktv/index.php/store_admin/delete_store', data: {id: id}, url: '/ktv/index.php/store_admin/delete_store' + id, #### ajax 浏览器中 newwork 的格式 ajax 请求中加入 dataType: 'json', 转成json格式 ajax请求的type xhr ##### 编程思想:数据驱动页面 ##### 编程方法:一言不合就重绘 ##### 让状态管理变得不再繁琐 百度云操作 ### 买机器 点住 选 休眠 应用引擎BAE --> 上传.jpg --> 下一步 上传之前 先跑这行代码 git config http.postBuffer 524288000 ## `git上传要写限制500M那个,要不页面不更新` 500M git 忽略文件: .创一个.gitignore文件 忽略某些 在里面写`.idea/` 和文件的名字 百度云上传出错,在更多操作中查看日志 重点对比路径上的大小写问题 core/Core git传代码 --新版 --快捷发布 404 not found--> 买数据库: test --> 导出 sql语句,在这边复制 sql的名字 链接地址 db中内容全要换 全文件搜索替换 git push 重新上传 #### 百度云上传的 bug 出不来页面: /view/ 改成APP/view/ 进了phpfunction index(){ 中,print_r(123); 看一下,能不能出来123.} 如果还是没有,看看 include 'APP/view/gameadmin.html'; 这几个字对了没,核对文件夹里, 是不是 gameadmin 写成 Gameadmin 了 。一般只有这个错误 如果出现404页面 是路径问题 大小写问题 ### 解决 bug //调试 : 到处 用 echo 查看,在 index.php 中,在 core 中,一步一步echo ,看看到哪一步没有的 //echo 123; ### 框架升级 # 1. 命名空间 namespace app; //namespace lib;//写所在文件夹的名字 //namespace core\c;//写所在文件夹的名字 在 core 文件夹下的c文件夹下的 `一旦加命名空间,用的时候就要注意,后边的后腰加那个命名空间了` #2. core 改造 autoload 方法 #3. index 定常量 define spl_autoload_register('core::autoload'); //new core 下边的autoload 文件 #4. new M方法 new db #5. db Db中操作 M('song')->fetchAll(); M('song')->fetch(); where $arr = Array( a=>1; b=>2; ) `被替换为` extract($arr); $a = 1$b = 2; core 修改 ### 制作博客: 数据库 创建内容和用户--sql header bootstrap 写样式 app 下新建homehtml 新建点赞数据库 视图 检索点赞数 点踩数 判断时候有某各类 点赞 ajax发出请求 M方法给默认值 pd方法默认值 // 每一根线 配图 a 链接 做页面,做后台 新框架 ## 添加图片 htmlform 要写一句 exp....

    你可能感兴趣的:(笔记)