您的位置:

php手册复习整理第一章,php手册菜鸟教程

本文目录一览:

php新手如何入门

PHP的背景恐怕就不用赘言了,我相信大家选择一种语言,并不是看它的背景和悠久历史,更重要的是看它的实用性,华而不实的语言哪怕是再辉煌的历史,也毕将步向没落,可喜的是PHP经受住了考验,也因此,它确实是一种值得学习的语言。

一直是听从别人的经验长大的,也因此在前辈们的经验里让少走了许多的弯路,更快的步入了正规,在此向那些我至尽不知道其名字的前辈们道声谢谢,在的眼里, 帮助不分大小,只要是帮助,总会让的心里暖融融的,我想,前辈们帮助我,并不是为了得到我的一句谢谢,更多的是出于一种责任感和对的期望,所以我想,只有 学好PHP,才能对得起前辈们的汗水。

正如我所说的,也终于感觉到了一种责任感,不知道自己的经验到底能帮助新手多少,但是明白,现在到了履行责任的时候了,我有必要把自己的经验告诉给所有希望学好PHP的人,只有这样才能让中国的PHP不断的进步,不断的发展,在世界上占据一席之地。

学习PHP的这段期间,感觉国内的PHP环境越来越成熟,规范也在逐渐的健全,PHPCHINA的成立,标志着与官方直接挂钩的PHP机构在中国正式落户了,在此献上迟到的掌声!

好的,切入正题:

我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:

的文章不会对您的学习起到实质性的作用,您能否成功,还得靠自己的,坚持,坚持,再坚持,就是步入成功的不二法门。

我先把我自己学习PHP的过程做一下概括:

(1)熟悉HTML/CSS/JS等网页基本元素,完成阶段可自行制作完整的网页,对元素属性达到熟悉程度

(2)理解动态语言的概念,运做机制,熟悉PHP语法

(3)学习如何将PHP与HTML结合起来完成简单动态页面

(4)接触MYSQL,开始设计数据库程序

(5)不断巩固,摸透大部分PHP常用函数,并可理解OOP,MYSQL优化,以及模板

(6)完成一个功能齐全的动态站点

我的这套线路可能跟许多学习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手册在身上,时不时的摸出来看看,记得,去WC也不能放过(^2^)。

再有条件的话,买本书看看吧,《PHP+MYSQL WEB开发(第三版)》号称圣经级,(也许是个不错的选择(声明:作者没给我啥好处费,我也不是书托,隔着大老远,我连他老兄的面都没见过的说-_-)

巩固了自己的知识,熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-

这个时候,你的留言本应该加入注册以及分页功能了,而如果你更强的话,UI(用户界面)也可以加强,完成之后,感觉是不是特有成就感?不管怎么样,咱好歹 是写了一个动态网站程序了,放在自己的网站上耍耍吧,让好朋友来看看,嘿,看咱写的多棒,然后再在网上宣传一下。

几天之后你再打开留言本,哎?哇,一下弹出N多页面!很明显,你的留言本并没有做好安全防范,被人用JS代码小小的耍了一下,我很同情你这个时候的感受,但是没有别的办法了,继续努力吧!

你发奋努力,熟悉了安全方面的问题,然后又设计了一些程序,感觉还不错。

那么接下来,这就算学会啦?NO,NO,NO,还早呢,你至尽还没碰过OOP之类的吧?模板呢?

恩,学!加紧学呀学,学会了这些之后,你又学会了生成静态网页,现在你应该接触一下XML了,恩,XML也了解了,那么AJAX你也得接触接触吧?AJAX完了….然后…

总而言之,你绝对不会发现你全部都学会了,一些真正的强人总会搞出新玩意来丢给你,你不学就落后了,也印证了前人的经验,果然是学无止境啊!

我想通过我的一番YY,你也应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,不敢打包票^0^

看完之后你发现,罗嗦这么多,对我一点用处没有啊,我知道该怎么学,但是我想如何才能更快的学,一周速成,啊不,24小时速成那种,你有没?

我…….我没有,但是2分钟之内把你扁进医院里,我倒是有把握-_-

学东西,永远不要妄想有速成这一说,告诉你了一个方式,但是缺少努力这一环节,那也是白搭。

但是有一点我可以给你保证的就是,你学会了PHP,那么学其他的语言,肯定速成,反过来也一样,如果你之前学过其他的语言,那么学PHP肯定快。

不过语法好学,但是怎么用语法来实现每个人都有每个人的方式,几乎是各有千秋。然而借鉴别人成功的代码,绝对是有益无害,因此,多看那些经过千锤百炼凝出来的经典代码,是进阶的最好方法。

讲了这么多,无非是想说:学习PHP不仅要掌握方法,更多的是付出汗水,我不希望看到中途放弃的人,相信自己,相信自己的选择,更要相信自己的能力,如果 自己想放弃,暴力一点的话,就自己抽自己一个嘴巴,然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,的确是电影看多了,抽嘴巴是会痛 的,各位其实明白这个道理了就行了)

另外要叮嘱各位的是,抵御诱惑,ASP/PHP/JSP/.NET的对比也许会让你无所适从,你也许学了一半PHP,又开始打C#的主意,或者有人说 JAVA很强,这个时候的你绝对不能动摇,哪怕你真想学,也得学会了PHP。然后再学,见异思迁是最不可取的,狗熊掰玉米就是这个道理,如果经常中途放 弃,只能是一无所获,还浪费了N多的时间和经历,得不偿失,最重要的是,你会被别人瞧不起,没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不 可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。

php要学哪些内容?

需要了解的知识包括HTML、CSS、JavaScript,不需要深入地学习,有个概念性的理解即可。

知识学习有三个阶段:

PHP入门段

可以在网上找到各类PHP热门视频,基本上这些视频里面都会讲到如何使用编辑,配置环境等一系列基础教程。能撸出一个个人站点/ 企业小站 就可以进入下一步了这样可以先对编程有一个初步的认识,如果没有任何电脑基础不推荐直接看书。

进步段

这时候需要PHP手册了,了解常用函数。学习MySQL( 数据库 ),了解PHP各大框架 --thinkPHP,Yii,Laravel等, 然后选一款框架尝试搭建一blog,实现常规登录、注册、文章发布和修改。

提高段

这一阶段的知识点主要包括:了解Linux ,在Linux下搭建 PHP环境(这时候要脱离 xamp,wamp等之流了);知道使用版本控制:git svn。

会PHP的进来

在线打包程序,将此文件上传到你需要下载的目录,然后运行此程序,打包过后再下载不就是源码了吗?

?php

//验证密码

$password = "19820129";

?

html

head

meta http-equiv="Content-Type" content="text/html; charset=gb2312"

style type="text/css"

!--

body,td{

font-size: 14px;

color: #000000;

}

a {

color: #000066;

text-decoration: none;

}

a:hover {

color: #FF6600;

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 width="89%"input name="password" type="password" id="password" size="15"

(源文件中设定的密码) /td

/tr

tr

tdinput name="myaction" type="hidden" id="myaction" value="dolist"/td

tdinput type="submit" name="Submit" value=" 进 入 "/td

/tr

/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

压缩文件保存到目录:

input name="todir" type="text" id="todir" value="__zipfiles__" size="15"

(留空为本目录,必须有写入权限)br

压缩文件名称:

input name="zipname" type="text" id="zipname" value="shenbin.zip" size="15"

(.zip)br

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='';

/*

返回文件的修改时间格式.

只为本类内部函数调用.

*/

function unix2DosTime($unixtime = 0) {

$timearray = ($unixtime == 0) ? getdate() : getdate($unixtime);

if ($timearray['year'] 1980) {

$timearray['year'] = 1980;

$timearray['mon'] = 1;

$timearray['mday'] = 1;

$timearray['hours'] = 0;

$timearray['minutes'] = 0;

$timearray['seconds'] = 0;

}

return (($timearray['year'] - 1980) 25) | ($timearray['mon'] 21) | ($timearray['mday'] 16) |

($timearray['hours'] 11) | ($timearray['minutes'] 5) | ($timearray['seconds'] 1);

}

/*

初始化文件,建立文件目录,

并返回文件的写入权限.

*/

function startfile($path = 'shenbin.zip'){

$this-gzfilename=$path;

$mypathdir=array();

do{

$mypathdir[] = $path = dirname($path);

}while($path != '.');

@end($mypathdir);

do{

$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);

$dtime = dechex($this-unix2DosTime());

$hexdtime = '\x' . $dtime[6] . $dtime[7]

. '\x' . $dtime[4] . $dtime[5]

. '\x' . $dtime[2] . $dtime[3]

. '\x' . $dtime[0] . $dtime[1];

eval('$hexdtime = "' . $hexdtime . '";');

$unc_len = strlen($data);

$crc = crc32($data);

$zdata = gzcompress($data);

$c_len = strlen($zdata);

$zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2);

//新添文件内容格式化:

$datastr = "\x50\x4b\x03\x04";

$datastr .= "\x14\x00"; // ver needed to extract

$datastr .= "\x00\x00"; // gen purpose bit flag

$datastr .= "\x08\x00"; // compression method

$datastr .= $hexdtime; // last mod time and date

$datastr .= pack('V', $crc); // crc32

$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', $crc); // crc32

$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 = "\x50\x4b\x01\x02";

$dirstr .= "\x00\x00"; // version made by

$dirstr .= "\x14\x00"; // version needed to extract

$dirstr .= "\x00\x00"; // gen purpose bit flag

$dirstr .= "\x08\x00"; // compression method

$dirstr .= $hexdtime; // last mod time date

$dirstr .= pack('V', $crc); // crc32

$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', 32 ); // external file attributes - 'archive' bit set

$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 = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";

$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);

fwrite($this-fp,$datastr); //写入新的文件内容

$my_datastr_len = strlen($datastr);

unset($datastr);

$dirstr = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00";

$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 );

$dirstr .= pack("V", 16 ).pack("V",$this-datastr_len).$name;

$this-dirstr .= $dirstr; //目录信息

$this - file_count ++;

$this - dirstr_len += strlen($dirstr);

$this - datastr_len += $my_datastr_len;

}

function createfile(){

//压缩包结束信息,包括文件总数,目录信息读取指针位置等信息

$endstr = "\x50\x4b\x05\x06\x00\x00\x00\x00" .

pack('v', $this - file_count) .

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++){

if($num=pow(2,10*$key)-1){ //1023B 会显示为 1KB

$num_bitunit_str=(ceil($num/pow(2,10*$key)*100)/100)." $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){

if(is_file($file)){

echo "文件: $filebr";

}else{

echo "目录: $filebr";

}

$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";

}else{

echo "$_REQUEST[todir]$_REQUEST[zipname] 不能写入,请检查路径或权限是否正确.br";

}

}else{

echo "没有选择的文件或目录.br";

}

endif;

?

/form

/body

/html

php教程 php的入门教程

1、打开电脑中的php开发工具Dreamweaver,新建一个PHP,保存为php格式。

2、打开浏览器搜索PHP教程,下载PHP手册或者在线学习。

3、在Dreamweaver中书写一段简单的代码。

4、保存(crtl+s)运行(F12),出现一个“是否立即指定服务器”的提示框,点击确定。进入“站点设置对象”。

5、站点设置对象:设置本地站点名称和本地站点文件夹,然后确定会弹出一个对话框,点击确认即可。进入“web页面的承载服务器”和“版本控制”等,然后确定即可。