php怎么获取表单,php使用curl发送json格式数据实例?
在使用curl的时候,实际上是组装了一段http报文进行传输,对于接受方(也就是服务器)来说,和普通的http请求,如get,表单,或者是ajax等请求没有任何的区别,所有的请求都是通过http报文进行传输的,也就是说,你只要使用正常的$_GET,$_POSt就能直接获取到了,不过不要忘了检测数据来源,保证安全性!
如何学习Web开发?
web framework层出不穷,特别是ruby/python,各有10+个,php/java也是一大堆 根据我自己的经验写了一个to do list,按照这个清单,一条一条的学习,事半功倍,很快就能掌握 一共25条,即便很磨蹭,2小时也能搞定一条,25*2=50。只需要50小时就能掌握任意一种web框架各类web框架大同小异:现代web开发框架的6大元素,把握主线,就不会迷路
建议把本文打印到一张A4纸,搞定一条打个勾
web框架学习列表 如何定义 url router如何组织 request handler 函数写一个最简单的request handler 函数如何从get/post请求中取出参数如何定义全局url 拦截函数如何获取/修改/存储 cookie,session数据如何修改/输出 http header 数据如何部部署app 程序服务器部署可以参考读python web 程序的9种部署方式如何配置开发环境如何配置静态文件访问如何访问数据库是否支持ORM支持orm如何维护表结构的变更如何定义/组织/初始化 数据表如何对接orm系统和现有的表结构掌握最基本的add/delete/按字段查询/count/slice/order by如何直接使用sql 访问数据库不支持orm (这样的web框架,不用也罢)如何使用模板系统如何组织/访问 模板文件的目录结构如何在模板中嵌入代码模板是否支持继承结构模板之间如何include如何自定义模板函数如何通过http get/post 获取远程数据如何parse json如何parse xml如何输出为 json如何处理状态码:404和50x如何处理文件上传可选的学习项目 发送emaillog图片处理误区 表单验证辅助函数,很多框架的表单验证部分实现的特别复杂,初学者完全不需要,手写代码处理就够用ORM中的hasone,manytomany,onetomany关系,概念很复杂,其实只是多写/少写一个查询字段的关系,学习成本太高,初学者完全不需要理会,直接跳过。
如何快速学习一个WEB开发框架http://www.pcpob.com/article/view/1939-how-to-study-a-web-framework
如果已经学会了一个PHP框架,再去学习其他php框架,那么会很容易上手。但是如果还没有php框架基础,想去学习php框架,往往是一头雾水,不知道从哪里下手,从我学习php框架的经验,给大家分享一下,如何快速的去学习并掌握一个框架。一,选择一个合适的php框架 在国内,使用zf,ci和tp框架的人比较多,新手可以从中选一个去学习,新手不建议一开始就去学习zf,功力还不够深,学习zf会让你更迷茫。如果php基础实在太差,学习ci和tp都觉得有点难度,那么建议去学习一下我做的框架--canphp框架(简称cp,qq群:74781204),cp=ci+tp的结晶,更为简单,更容易理解。二,选定一个php框架之后,如何去学习第一步,把下载回来的框架压缩包解压,然后把每个目录和文件名,大致的浏览一遍。这样可以大概看出,这个php框架中大致布局和具有哪些功能。第二步,学习输出hello world,hello world很简单,但是对于学习一门新的语言或框架,很重要。第三步,学习理解单一入口和网址解析(即网址路由),单一入口,对于新手来说,可能有点不太好理解。第四步,学习php框架的内置的模板操作,主要学习程序是怎么赋值给模板,怎么加载模板和常用的模板标签第五步,学习数据库的添加,修改,删除,查询,学会简单的数据库操作。第六步,学习php框架常用的函数和类库,php框架中一般会带一些常用的函数和类,可以稍微看一下,此时还没有必要深入研究,等用到的时候再详细的去看手册和样例。第七步,下载基于此框架开源的项目系统下来学习,了解了php框架的执行流程,模板操作,和数据库操作,下载一个开源的系统,下来去学习,学习别人的代码,学得更快。第八步,做项目学习,要熟练掌握一个的框架,需要大量的实践,通过做项目,去深入学习。第九步,阅读框架代码,了解其实现原理
第十步,到这一步,你已经学会了这个php框架。
在StackExchange上有人问了这样一个问题:What should every programmer know about web development?(关于Web开发,什么是所有程序员需要知道的?)里面给出的答案非常不错,所以,我翻译转载过来。 顺便说一下,StackExchange真是非常好,大家可以对同一个答案做贡献和修订,看看这个问题的修订过程你就知道了——专业的问答网站应该怎么去做。这就是我在这篇文章中也说过真正的用户体验是什么样的。
好了,下面是正文(我对原文做了一些批注,也许不对或有误导,请大家指正)
下面的这些东西可能对于大多数人并不陌生,但是可能会有些东西你以前并没有看过,或是没有完全搞懂,甚至都没有听说过。(陈皓注:我相信当你看完这个列表后,你会觉得对于我国的Web开发有点弱了,还是那句话,表面上的东西永远是肤浅的)
接口和用户体验
小心浏览器的实现标准上的不一致,确信让你的网站能够适当地跨浏览器。至少,你的网站需要测试一下下面的浏览器:最新的 Gecko 引擎 (Firefox),一个 Webkit 引擎 (Safari,Chrome, 或是其它的移动设备上的浏览器)IE 浏览器 (测试IE的兼容性你可以使用微软IE的Application Compatibility VPC Images)Opera 浏览器。最后,你可以使用一下这个工具 来看看你的网页在不同的浏览器下是怎么被显示出来的(陈皓注:这个工具就是以前本站介绍过的在不同浏览器和平台上检查你的网站的兼容性)
多考虑一下人们是怎么来访问你的网站而不是那些主流的浏览器:手机,读屏软件和搜索引擎,例如:一些Accessibility的东西: WAI 和 Section508, 移动设备开发:MobiForge.部署Staging:怎么部署网站的更新而不会影响用户的访问。 Ed Lucas的答案 可以让你了解一些(陈皓注:Ed说了一些如版本控制,自动化build,备份,回滚等机制)。千万不要直接给用户显示不友好的错误信息。千万不要把用户的邮件地址以明文显示出来,这样会被爬虫爬走并被让用户的邮箱被垃圾邮件搞死。为用户的链接加上 rel="nofollow" 的属性以 避免垃圾网站的干扰。(陈皓注:nofollow是HTML的一个属性,用于通知搜索引擎“这个链接所指向的网页非我所能控制,对其内容不予置评”,或者简单地说,该链接不是对目标网站或网页的“投票”,这样搜索引擎不会再访问这个链接。这个是用来减少一些特定垃圾页面对原网站的影响,从而可以改善搜索结果的质量,并且防止垃圾链接的蔓延。)为网站建立一些的限制 这个属于安全性的范畴。(陈皓注:比如你在Google注册邮箱时,你一口气注册超过两个以上的邮箱,gmail要求给你发短信或是给你打电话认证,比如Discuz论坛的会限制你发贴或是搜索的间隔时间等等,更多的网站会用CAPTCHA来确认是人为的操作。 这些限制都是为了防止垃圾和恶意攻击)学习如何做 Progressive Enhancement. (陈皓注:Progressive Enhancement是一个Web Design的理念,如:1)基础的内容和功能应该可以被所有的浏览器存取,2)页面布局的应该使用外部的CSS链接,3)Javascript也应该是外部链接还应该是unobtrusive 的,4)应该让用户可以设置他们的偏好)如果POST成功,要在POST方法后重定向网址,这样可以阻止用户通过刷新页面重复提交。严重关注Accessibility。因为这是法律上的需求(陈皓注:Section 508是美国的508法案,其是美国劳工复健法的改进,它是一部联邦法律,这个法律要求所有技术要考虑到残障人士的应用,如果某个大众信息传播网站,如果某些用户群体(如残疾人)浏览该网站获取信息时,如果他们无法正常获得所期望的信息(如无法正常浏览),那可以依据相关法规,可以对该网站依法起诉)。WAI-ARIA 为这方面的事提供很不错的资源.安全
在网上有很多关于安全的文章,但是 OWASP 开发指导 涵盖了几乎所有关于Web站点安全的东西。(陈皓注:OWASP(开放Web应用安全项目Open Web Application Security Project)是一个开放的非营利性组织,目前全球有130个分会近万名会员,其主要目标是研议协助解决Web软体安全之标准、工具与技术文件,长期 致力于协助政府或企业了解并改善网页应用程式与网页服务的安全性。OWASP被视为Web应用安全领域的权威参考。2009年下列发布的美国国家和国际立法、标准、准则、委员会和行业实务守则参考引用了OWASP。美国联邦贸易委员会(FTC)强烈建议所有企业需遵循OWASP十大WEB弱点防护守则)Java跟PHP选择哪个好些?
网站的全栈开发,个人建议使用Java会比较好点,我们来做个整体对比,题主可以自己去选择:
Java做全栈开发的优劣势优势
Java从开始火到现在已经这么多年了,从最开始就是用来做web应用程序的开发,到现在主要的功能还是做web应用程序的开。但是相对于以前来说已经有了很多技术跟新出来,特别是对于web应用程序来说多了很多很多的特别完整的解决方案。对于性能这块这么多年的积累也是有很多自己的解决方案,对于安全性来说那也绝对是其它从事web应用开发的语言是无法比拟的。并且到现在Java对于web应用程序的支持包括新的技术还在持续更新中,并且基本都还是开源的,这意味着对于很多程序员来说我们可以查看到别人更加优秀的代码来提升自己的能力。劣势随着python的火起来,对于很多做Java开发的程序员来说确实有所打击,甚至有了一句:"生命短暂,我用python"。确实对于程序员开发来说Java开发起来会稍微复杂许多,因为许多解决方案需要靠我们自己去处理里面的内容。也就是说我们要实现的功能需要用比较多的代码来完成。但是习惯就好。PHP做全栈开发的优劣势优势
同样的php是专为web应用程序而生的,它的产生只为做网站,但是国内一般常用php做小型电商以及社区类网站,也有一些大型的网站,但是近几年来确实越来越少了。php是解释性的脚本语言,对于一些并发效率上是有很大的优势。并且php也经历了很多个年头了,在解决方案的沉淀上也是有很多的。并且php学习起来要比其它语言简单,并且周期也不会很长。劣势因为php是解释性脚本语言所以对于安全性来说,肯定是有点问题的。并且php只专注于web程序所以对于所谓的跨平台等问题其实也是一个劣势。从成本角度来说确实如果在招聘网上去搜索Java和php,你们会发现Java开发的工资普遍来看肯定是高于php开发岗位的。但是就Java和php的市场招聘员工上来说是比php要便宜的,因为在中国市场Java的初级开发人员已经处于快饱和状态了。但是php因为只专注于一个领域,并且学习起来周期短,导致没有Java的发展前景要好,这也导致从事php开发的人员要比Java少很多,所以招聘一个合适的员工,可能Java还有得挑,但是php可能还要慢慢的找。
从程序的维护和开发角度来看,其实Java的成本也要比php低。大家想想的安全性相对于来说要Java低,那么对于我们来说如果出现安全性问题对一个程序来说是很致命的。再者Java的人员可能会多余php,那么懂php的稍微要少很多,做维护可以让Java开发去做,但是php人员本来就少,这样使用起来人力成本也会升高。
从技术角度来看在我们的刚开始接触Java就知道Java是一个跨平台语言,那么针对于跨平台来说php是很难做到的,对于不同的平台如果每个都需要开发一个对应的程序,说实话这个真的很不划算。在就是技术层面的受众上Java也是完全高于php,因为还是php只专注于一个领域。
相对于两个语言的细节比较,答主还是推荐使用Java,跨平台,安全性等问题来说确实会更加适合一点。
以上是答主自己的观点,如果有更好看法的小伙伴可以在下方评论区留言给我,或者点个赞,加个关注我们一起慢慢探讨探讨。
我们常见的提交方式有哪些?
WEB安全之SQL注入
引言:
在开发网站的时候,出于安全考虑,需要过滤从页面传递过来的字符。通常,用户可以通过以下接口调用数据库的内容:URL地址栏、登陆界面、留言板、搜索框等。这往往给骇客留下了可乘之机。轻则数据遭到泄露,重则服务器被拿下。
1、SQL注入步骤
a)寻找注入点,构造特殊的语句
传入SQL语句可控参数分为两类 1. 数字类型,参数不用被引号括起来,如 2. 其他类型,参数要被引号扩起来,如
b)用户构造SQL语句(如:'or 1=1#;admin'#(这个注入又称PHP的万能密码,是已知用户名的情况下,可绕过输入密码)以后再做解释)
c)将SQL语句发送给DBMS数据库
d)DBMS收到返回的结果,并将该请求解释成机器代码指令,执行必要得到操作
e)DBMS接受返回结果,处理后,返回给用户
因为用户构造了特殊的SQL语句,必定返回特殊的结果(只要你的SQL语句够灵活)
下面,我通过一个实例具体来演示下SQL注入 二、SQL注入实例详解(以上测试均假设服务器未开启magic_quote_gpc)
1) 前期准备工作 先来演示通过SQL注入漏洞,登入后台管理员界面 首先,创建一张试验用的数据表:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(64) NOT NULL, `password` varchar(64) NOT NULL, `email` varchar(64) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `username` (`username`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;添加一条记录用于测试:
INSERT INTO users (username,password,email)VALUES('MarcoFly',md5('test'),'marcofly@test.com');接下来,贴上登入界面的源代码
<html><head><title>Sql注入演示</title><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body ><form action="validate.php" method="post"><fieldset ><legend>Sql注入演示</legend><table><tr><td>用户名:</td><td><input type="text" name="username"></td></tr><tr><td>密 码:</td><td><input type="text" name="password"></td></tr><tr><td><input type="submit" value="提交"></td><td><input type="reset" value="重置"></td></tr></table></fieldset></form></body></html>附上效果图:
当用户点击提交按钮的时候,将会把表单数据提交给validate.php页面,validate.php页面用来判断用户输入的用户名和密码有没有都符合要求(这一步至关重要,也往往是SQL漏洞所在)
! <!--前台和后台对接--><html><head><title>登录验证</title><meta http-equiv="content-type" content="text/html;charset=utf-8"></head><body><?php $conn=@mysql_connect("localhost",'root','') or die("数据库连接失败!");; mysql_select_db("injection",$conn) or die("您要选择的数据库不存在"); $name=$_POST['username']; $pwd=$_POST['password']; $sql="select * from users where username='$name' and password='$pwd'"; $query=mysql_query($sql); $arr=mysql_fetch_array($query);if(is_array($arr)){ header("Location:manager.php"); }else{ echo "您的用户名或密码输入有误,<a href=\"Login.php\">请重新登录!</a>"; } ?></body></html>注意到了没有,我们直接将用户提交过来的数据(用户名和密码)直接拿去执行,并没有实现进行特殊字符过滤,待会你们将明白,这是致命的。 代码分析:如果,用户名和密码都匹配成功的话,将跳转到管理员操作界面(manager.php),不成功,则给出友好提示信息。 登录成功的界面:
登录失败的提示:
到这里,前期工作已经做好了,接下来将展开我们的重头戏:SQL注入
2) 构造SQL语句 填好正确的用户名(marcofly)和密码(test)后,点击提交,将会返回给我们“欢迎管理员”的界面。 因为根据我们提交的用户名和密码被合成到SQL查询语句当中之后是这样的: select * from users where username='marcofly' and password=md5('test') 很明显,用户名和密码都和我们之前给出的一样,肯定能够成功登陆。但是,如果我们输入一个错误的用户名或密码呢?很明显,肯定登入不了吧。恩,正常情况下是如此,但是对于有SQL注入漏洞的网站来说,只要构造个特殊的“字符串”,照样能够成功登录。
比如:在用户名输入框中输入:' or 1=1#,密码随便输入,这时候的合成后的SQL查询语句为: select * from users where username='' or 1=1#' and password=md5('') 语义分析:“#”在mysql中是注释符,这样井号后面的内容将被mysql视为注释内容,这样就不会去执行了,换句话说,以下的两句sql语句等价:
select * from users where username='' or 1=1#' and password=md5('')等价于
select* from users where usrername='' or 1=1因为1=1永远是都是成立的,即where子句总是为真,将该sql进一步简化之后,等价于如下select语句:
select * from users 没错,该sql语句的作用是检索users表中的所有字段
上面是一种输入方法,这里再介绍一种注入的方法,这个方法又称PHP的万能密码
我们再已知用户名的条件下,可以不能密码即可登入,假设用户名:admin
构造语句:
select * from users where username='admin'#' and password=md5('')等价于
select * from users where username='admin'这样即可不能输入密码登入上去的。
数据库就会错认为不用用户名既可以登入,绕过后台的验证,已到达注入的目的。
同样利用了SQL语法的漏洞。
看到了吧,一个经构造后的sql语句竟有如此可怕的破坏力,相信你看到这后,开始对sql注入有了一个理性的认识了吧~ 没错,SQL注入就是这么容易。但是,要根据实际情况构造灵活的sql语句却不是那么容易的。有了基础之后,自己再去慢慢摸索吧。 有没有想过,如果经由后台登录窗口提交的数据都被管理员过滤掉特殊字符之后呢?这样的话,我们的万能用户名' or 1=1#就无法使用了。但这并不是说我们就毫无对策,要知道用户和数据库打交道的途径不止这一条。
怎么搭建影视网站?
手把手教您使用飞飞影视导航系统搭建一个24小时自动更新的影视网站
第一步:购买域名与虚拟主机
不管搭建什么网站,第一步肯定是先要购买一个好记的域名与适合建站程序运行的空间或云服务器,推荐从(阿里云、百度云、华为云、腾讯云、乱七八糟的什么云都可以)购买一个域名与支持PHP5.2~PHP5.6的云虚拟主机(不是云服务器、也不是轻量服务器)。
我推荐买云虚拟主机主要是因为便宜,性价比高,完全适合新手搭建(有耐心的朋友也可以申请免费主机与免费域名)。如果您只是学习建站、不需要对外提供访问服务,主机与域名都可以省了,用自己10年前的win7电脑装一个“小皮面板”或者“宝塔面板”就可以了(这一块就是搭建网站环境的另一个基础技术了,这篇教程就不详解了)。
阿里云购买云虚拟主机与域名第二步:解析域名与绑定主机
将购买的域名解析到您刚才购买的云虚拟主机,别忘记了还要去云虚拟主机面板绑定您解析的域名,(解析域名与绑定域名是两个操作,一个都不能少)如果您不会解析或者不会绑定,可以直接联系刚才那些云主机的客服叫他们帮你操作,谁叫你是这些国内顶级互联网公司的客户呢?别看他们平常很牛的样子,这个时候对您客客气气的!
阿里云解析域名到主机第三步:下载与上传程序
下载最新版飞飞影视导航系统(www.feifeicms.org)到您的电脑C盘(D盘、E盘、F盘随便您放,只要您找得到),下载后通过FTP软件(用得比较多的是FlashFXP)将解压后的所有源代码上传到您刚才购买的云虚拟主机或者免费申请的虚拟主机根目录内。
下载与上传飞飞影视导航系统源码第四步:网站基本设置
参考飞飞影视导航系统的安装说明进入网站后台(您的域名/admin.php),用户名与初始密码是(admin与admin888),进入网站后台后可以看到有许多的功能模块,功能这么多,第一次使用也不知道哪些有用,哪些没用呀!所以我强烈建议,我们只需先将密码改掉,然后给自己的网站取个名字,最后再添加一部影片测试就可以了,其它那些功能等我们的网站正常运行后再一个一个详细了解。
使用飞飞影视导航系统添加一部影片第五步:搜索影视资源站
通过上一步的初步尝试,我们已经学会了怎么添加影片,一部一部添加太累了吧?所以我们就需要用到一个很重要的功能“一键采集”。一键采集就是通过采集影视资源站的API数据接口几分钟就可以采集到几千部影片。
一般的做法是通过搜索引擎搜索“电影资源站”,这些电影资源站一般都有提供API接口地址,这里我们以(api.php/provide/vod)为例,将API地址填到资源站地址的表单内并保存(名字随便取一个就可以了)?
搜索影视资源站第六步:采集影视数据
添加好影视资源站后,我们回到“视频资源站”找到您刚才添加的网址并点击进入,此时系统会自动分析出结果,在采集前需要将资源站的分类与自己的电影网站分类绑定后才可以采集。通过这个功能我们可以有选择性地采集一些类型影片,比如我只采集“韩剧、美剧、泰剧等”,同时有多个采集方案,第一次肯定是选择“采集所有”了,后期每天手动更新我们就选择“采集当天”。
采集前绑定分类第七步:24小时自动更新
24小时无人值守自动更新功能则需要使用到飞飞影视导航系统的定时采集功能,飞飞影视导航系统提供了两种定时采集功能,第一种挂机版就是需要打开电脑,执行定时采集任务后浏览器不能关掉;第二种就是通过(Windows、Linux)的计划任务来加载定时更新的专用网址(不管您用什么方法,只要定期去访问那个网址就行了,可以留言讨论您们都使用什么方法)。
飞飞影视导航系统定时采集之挂机版飞飞影视导航系统定时采集之计划任务版第八步:愉快的看电影吧
随便选择一部影片测试看看吧,飞飞影视导航系统的其它剧情介绍、影视资讯、明星资料、影视角色、台词等功能请小伙伴们自行体验,有好的建议与BUG也欢迎一起讨论,最后重点划一下,使用此方法搭建的网站请勿用作商业用途,仅作学习交流使用。
飞飞影视导航系统播放演示