PHP的背景恐怕就不用赘言了,我相信大家选择一种语言,并不是看它的背景和悠久历史,更重要的是看它的实用性,华而不实的语言哪怕是再辉煌的历史,也毕将步向没落,可喜的是PHP经受住了考验,也所以呢,它确实是一种值得学习的语言.
一直是听从别人的经验长大的,也所以呢在前辈们的经验里让少走了许多的弯路,更快的步入了正规,在此向那些我至尽不知道其名字的前辈们道声谢谢,在的眼里, 帮助不分大小,只要是帮助,总会让的心里暖融融的,我想,前辈们帮助我,并不是为了得到我的一句谢谢,更多的是出于一种责任感和对的期望,所以我想,只有 学好PHP,才能对得起前辈们的汗水.
正如我所说的,也终于感觉到了一种责任感,不知道自己的经验到底能帮助新手多少,但是明白,现在到了履行责任的时候了,我有必要把自己的经验告诉给所有希望学好PHP的人,只有这样才能让中国的PHP不断的进步,不断的发展,在世界上占据一席之地.
学习PHP的这段期间,感觉国内的PHP环境越来越成熟,规范也在逐渐的健全,PHPCHINA的成立,标志着与官方直接挂钩的PHP机构在中国正式落户了,在此献上迟到的掌声!
好的,切入正题:
我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门.
我先把我自己学习PHP的过程做一下概括:
(1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度
我的这套线路可能跟许多学习PHP的爱好者不谋而合,这也算是一个循序渐进的学习过程,不过新手不要看到上面的概括就以为学习蛮简单的,在此不得不对您稍微泼一下冷水,任何东西其实都不简单,即使是小吃部的烧饼也不是一下子就会做成的.
我先解释一下我的学习思路.
首先,理解网站这一概念之后不难看出,任何网站都是由网页组成的,也就是说想完成网站,必须先学会做网页,所以呢必须要掌握了HTML,才能为今后制作网站打下基础.
在学习HTML中我想边学边做是最有效的方式,当然这一方式对于学习PHP同样是最有效的.
HTML中的任何元素都要亲自实践,只有明白了什么元素会起到什么效果之后,你才会记忆深刻,而一味的啃书,绝对是不行的,我想大部分新手之所以觉得概念难学,大部分是一个字"懒",懒是阻止进步的最大敌人,所以克服掉懒的习惯,才能更快的学好一样东西.
也许您在学习PHP的时候只想尽快的开发一个网站,也就会想我做网站,干嘛要学什么网页这些小儿科?不难看出,眼高手低的新手不在少数,这种思想无疑于建造空中楼阁,你不建地基,何来的房顶呢?
OK,掌握静态网页的制作技术是学习开发网站的先决条件,这一点就讲到这里,因为这篇文章不是教程文章,也就不对技术进行深入的刨析了.
我假设你目前已经可以完成一个静态页面了,当然,做的好看难看是另外一说,的第一个网页也没好看到哪去,但是"孩子"再丑,咱们做"爹妈"的也不能嫌弃不是?这毕竟是咱的成果.
那么咱们就开始学习动态语言的概念吧,刚一接触动态语言,可能很多人都会蒙了,怎么这乱七八糟的东西,在网页里显示的时候却是另外一码事?其实这并不算乱 七八糟,你写的HTML代码不也一样是一堆堆的字符吗?毕竟,代码并不是作为直接输出的,而是经过处理的,说白了,HTML是经过HTML解析器,而 PHP当然也就通过PHP解析器了,跟学习HTML一样的道理,想让任何的解析器完成操作,就必须使用它们专用的语法结构,所以PHP长相奇怪也就不足为 奇了.
对于PHP的理解是新手最难迈过的一道门槛,不过你应该感到幸运的是PHP已经最大极限的为了新手而努力了,如果你学过其他的语言,也许会觉得PHP的确相当的简单,但是如果你之前什么都没学过,那么阿弥陀佛,硬着头皮琢磨吧.
书过三遍自然熟,这个简单的道理告诉我们,即使你理解不了PHP,但是也必须先跟它混个脸熟,看,一遍遍的看,看的同时一边琢磨,一边按照它所教的打代码,即使你搞不清楚那些代码到底是干嘛的,但是起码你应该找找感觉.
在一段挣扎之后,聪明的你,显然已经逐渐的开悟了,慢慢的理解了编程的概念,那么祝贺你,你已经迈出了成功的第一步.
搞清楚HTML和PHP的概念,那么PHP和HTML混合编程应该不成问题,在这期间,你完全可以让PHP给你算算一加一等于几,然后在浏览器输出,不要 觉得幼稚,这的确是跟阿波罗登月一样,你打的是一小段代码,但是对于你的编程之路,可是迈出了一大步啊!兴奋吧?但是不得不再给你泼点冷水,您还是菜鸟一 个.
高兴一段时间就必须继续努力了,此时此刻呢就是学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩.
头晕归头晕,目眩归目眩,你不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志.
在一番搏斗之后,你终于理解了数据库的概念,而且让你兴奋不已的是你终于可以通过PHP来连接数据库了,这期间你是怎么学会的,我们不去考证了,但是事实证明,你已经可以了.
学会了PHP和数据库的你,无疑是左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!
等到你发奋努力的学会了用PHP成功的插入,删除,更新数据的时候,显然,你已经距离成功指日可待了.
这个时候的你也许是这种状态:
你会HTML吗?会,我能编好几个大表格排板的网页啦!
你会PHP吗?会,我会把一加一的运算写在函数里,然后调用啦!
你会MYSQL吗?会,我会把我的信息在数据库里插入删除啦
那,此时此刻呢你该怎么做呢?我觉得,小试一下身手,大概是没问题了,那么交给你个任务,做个留言本吧,这和HELLO WORLD有一比啊!^_^,同是新手面临的第一道关.
花了一段时间,你终于学会把表单的数据插入数据库,然后显示出来了,应该说一个程序的雏形已经诞生了.
但是,你可能瞅瞅东,看看西,人家这个编论坛,那个CMS,还有那啥CRM,我啥时候写一个呢?
巩固了自己的知识,熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-
这个时候,你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹 是写了一个动态网站程序了,放在自己的网站上耍耍吧,让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下.
几天之后你再打开留言本,哎?哇,一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!
你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错.
那么此时此刻呢,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?
恩,学!加紧学呀学,学会了这些之后,你又学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了....然后...
都说到这里了大家应该明白,你绝对不会发现你全部都学会了,一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!
我想通过我的一番YY,你也应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,不敢打包票^0^
学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭.
但是有一点我可以给你保证的就是,你学会了PHP,那么学其他的语言,肯定速成,反过来也一样,如果你之前学过其他的语言,那么学PHP肯定快.
不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋.然而借鉴别人成功的代码,绝对是有益无害,所以呢,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法.
讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果 自己想放弃,暴力一点的话,就自己抽自己一个嘴巴,然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,的确是电影看多了,抽嘴巴是会痛 的,各位其实明白这个道理了就行了)
另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说 JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学,也得学会了PHP.然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放 弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起,没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不 可靠,所以呢,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的.
需要了解的知识包括HTML、CSS、JavaScript,不需要深入地学习,有个概念性的理解即可.
知识学习有三个阶段:
PHP入门段
进步段
这时候需要PHP手册了,了解常用函数.学习MySQL( 数据库 ),了解PHP各大框架 --thinkPHP,Yii,Laravel等, 然后选一款框架尝试搭建一blog,实现常规登录、注册、文章发布和修改.
提高段
这一阶段的知识点主要包括:了解Linux ,在Linux下搭建 PHP环境(这时候要脱离 xamp,wamp等之流了);知道使用版本控制:git svn.
php
//验证密码
html
head
style type="text/css"
!--
body,td{
color: #000000;
}
a {
text-decoration: none;
a:hover {
text-decoration: underline;
--
/style
/head
body
form name="myform" method="post" action="zip.php"
if(!$_REQUEST["myaction"]):
table width="100%" border="0" cellspacing="0" cellpadding="0"
tr
td width="11%"验证密码: /td
(源文件中设定的密码) /td
/tr
tdinput name="myaction" type="hidden" id="myaction" value="dolist"/td
tdinput type="submit" name="Submit" value=" 进 入 "/td
/table
elseif($_REQUEST["myaction"]=="dolist"):
if($_REQUEST['password'] != $password) die("输入的密码不正确,请重新输入.");
echo "选择要压缩的文件或目录:br";
$fdir = opendir('./');
while($file=readdir($fdir)){
if($file=='.'|| $file=='..') continue;
echo "input name='dfile[]' type='checkbox' value='$file' ".($file==basename(__FILE__)?"":"checked")." ";
if(is_file($file)){
echo "文件: $filebr";
}else{
echo "目录: $filebr";
br
压缩文件保存到目录:
(留空为本目录,必须有写入权限)br
压缩文件名称:
(.zip)br
input name="password" type="hidden" id="password" value="?=$_POST['password'];?"
input name="myaction" type="hidden" id="myaction" value="dozip"
input type='button' value='反选' onclick='selrev();'
input type="submit" name="Submit" value=" 开始压缩 "
script language='javascript'
function selrev() {
with(document.myform) {
for(i=0;ielements.length;i◆◆) {
thiselm = elements[i];
if(thiselm.name.match(/dfile\[]/)) thiselm.checked = !thiselm.checked;
/script
elseif($_REQUEST["myaction"]=="dozip"):
set_time_limit(0);
class PHPzip{
var $file_count = 0 ;
var $datastr_len = 0;
var $dirstr_len = 0;
var $filedata = ''; //该变量只被类外部程序访问
var $gzfilename;
var $fp;
var $dirstr='';
/*
返回文件的修改时间格式.
只为本类内部函数调用.
*/
$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);
$timearray['mon'] = 1;
$timearray['mday'] = 1;
$timearray['hours'] = 0;
$timearray['minutes'] = 0;
$timearray['seconds'] = 0;
初始化文件,建立文件目录,
并返回文件的写入权限.
function startfile($path = 'shenbin.zip'){
$this-gzfilename=$path;
$mypathdir=array();
do{
$mypathdir[] = $path = dirname($path);
}while($path != '.');
@end($mypathdir);
$path = @current($mypathdir);
@mkdir($path);
}while(@prev($mypathdir));
if($this-fp=@fopen($this-gzfilename,"w")){
return true;
return false;
添加一个文件到 zip 压缩包中.
function addfile($data, $name){
$name = str_replace('\\', '/', $name);
if(strrchr($name,'/')=='/') return $this-adddir($name);
. '\x' . $dtime[0] . $dtime[1];
eval('$hexdtime = "' . $hexdtime . '";');
$unc_len = strlen($data);
$zdata = gzcompress($data);
$c_len = strlen($zdata);
//新添文件内容格式化:
$datastr .= "\x00\x00"; // gen purpose bit flag
$datastr .= $hexdtime; // last mod time and date
$datastr .= pack('V', $c_len); // compressed filesize
$datastr .= pack('V', $unc_len); // uncompressed filesize
$datastr .= pack('v', strlen($name)); // length of filename
$datastr .= pack('v', 0); // extra field length
$datastr .= $name;
$datastr .= $zdata;
$datastr .= pack('V', $c_len); // compressed filesize
$datastr .= pack('V', $unc_len); // uncompressed filesize
fwrite($this-fp,$datastr); //写入新的文件内容
$my_datastr_len = strlen($datastr);
unset($datastr);
//新添文件目录信息
$dirstr .= "\x00\x00"; // version made by
$dirstr .= "\x00\x00"; // gen purpose bit flag
$dirstr .= $hexdtime; // last mod time date
$dirstr .= pack('V', $c_len); // compressed filesize
$dirstr .= pack('V', $unc_len); // uncompressed filesize
$dirstr .= pack('v', strlen($name) ); // length of filename
$dirstr .= pack('v', 0 ); // extra field length
$dirstr .= pack('v', 0 ); // file comment length
$dirstr .= pack('v', 0 ); // disk number start
$dirstr .= pack('v', 0 ); // internal file attributes
$dirstr .= pack('V',$this-datastr_len ); // relative offset of local header
$dirstr .= $name;
$this-dirstr .= $dirstr; //目录信息
$this - file_count ◆◆;
$this - dirstr_len ◆= strlen($dirstr);
$this - datastr_len ◆= $my_datastr_len;
function adddir($name){
$name = str_replace("\\", "/", $name);
$datastr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
$datastr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0);
$dirstr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) );
$dirstr .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 );
function createfile(){
//压缩包结束信息,包括文件总数,目录信息读取指针位置等信息
pack('v', $this - file_count) .
pack('V', $this - dirstr_len) .
pack('V', $this - datastr_len) .
"\x00\x00";
fwrite($this-fp,$this-dirstr.$endstr);
fclose($this-fp);
if(!trim($_REQUEST[zipname])) $_REQUEST[zipname] = "shenbin.zip"; else $_REQUEST[zipname] = trim($_REQUEST[zipname]);
if(!strrchr(strtolower($_REQUEST[zipname]),'.')=='.zip') $_REQUEST[zipname] .= ".zip";
$_REQUEST[todir] = str_replace('\\','/',trim($_REQUEST[todir]));
if(!strrchr(strtolower($_REQUEST[todir]),'/')=='/') $_REQUEST[todir] .= "/";
if($_REQUEST[todir]=="/") $_REQUEST[todir] = "./";
function listfiles($dir="."){
global $faisunZIP;
$sub_file_num = 0;
if(is_file("$dir")){
if(realpath($faisunZIP -gzfilename)!=realpath("$dir")){
$faisunZIP - addfile(implode('',file("$dir")),"$dir");
return 1;
return 0;
$handle=opendir("$dir");
while ($file = readdir($handle)) {
if($file=="."||$file=="..")continue;
if(is_dir("$dir/$file")){
$sub_file_num ◆= listfiles("$dir/$file");
else {
if(realpath($faisunZIP -gzfilename)!=realpath("$dir/$file")){
$faisunZIP - addfile(implode('',file("$dir/$file")),"$dir/$file");
$sub_file_num ◆◆;
closedir($handle);
if(!$sub_file_num) $faisunZIP - addfile("","$dir/");
return $sub_file_num;
function num_bitunit($num){
$bitunit=array(' B',' KB',' MB',' GB');
for($key=0;$keycount($bitunit);$key◆◆){
return $num_bitunit_str;
if(is_array($_REQUEST[dfile])){
$faisunZIP = new PHPzip;
if($faisunZIP - startfile("$_REQUEST[todir]$_REQUEST[zipname]")){
echo "正在添加压缩文件...brbr";
$filenum = 0;
foreach($_REQUEST[dfile] as $file){
$filenum ◆= listfiles($file);
$faisunZIP - createfile();
echo "br压缩完成,共添加 $filenum 个文件.bra href='$_REQUEST[todir]$_REQUEST[zipname]'$_REQUEST[todir]$_REQUEST[zipname] (".num_bitunit(filesize("$_REQUEST[todir]$_REQUEST[zipname]")).")/a";
echo "$_REQUEST[todir]$_REQUEST[zipname] 不能写入,请检查路径或权限是否正确.br";
echo "没有选择的文件或目录.br";
endif;
/form
/body
/html
①.、打开电脑中的php开发工具Dreamweaver,新建一个PHP,保存为php格式.
以上就是土嘎嘎小编为大家整理的php手册复习整理第一章相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!