一、PHP介绍
PHP主要用于做网站web开发,我们首先来了解一下网站是如何工作的。
客户端→HTTP协议→TCP/IP→服务器(此处了解HTTP与TCP/IP协议也很重要),网站的常见开发应用工具有Dw(用于编写html、div等客户端运行的静态工具,写页面代码)、eclipse(用于写PHP,也可以用于写java,写后台程序)。
软件:一系列按照特定顺序组织的计算机数据与指令的集合。
C/S软件(客户/服务器):下载后需要升级维护才能使用的软件。
B/S软件(浏览器/服务器):浏览器打开,程序员自己升级维护,常见的网站和在线服务系统都属于这一类。网站属于软件。
PHP:超文本预处理器,通用的开源脚本语言,是一种总称,包括HTML、JS、PHP、Mysql、apache等技术。PHP的 优势在于免费、开源。
Html、div css 用于做网页客户端前端,java常用于制作网页特效;PHP、mysql、apache用于做服务器端。
其他:smarly(提高工作效率)、ThinkPHP(基于MVC框架)、linux、Html5
二、PHP环境安装
按照学习编程语言的惯例,我们从写一个hello word 开始:
在这里需要安装wamp程序环境包,它提供我们写PHP、java与Mysql的运行环境,在安装wamp时,遇到“程序无法运行0xc000007b”的错误提示时,要检查自己是否已经安装好了Visual C++语言环境。
这里推荐一个可以检查并修复系统 dl l与 C++环境的程序:DirectX_Repair-V3_5
修复系统环境后,卸载并且重新安装wamp,此时wamp正常安装运行,图标显示为绿色。
若仍然显示为黄色图标,可以去cmd里用"netstat -ano"查看80端口是否被其他程序占用
//ins键可以切换输入状态“改写”与“插入”
安装wamp后,通过写www里的php文档,就可以在我们的http://localhost/里看到php运行出来的结果了。
在index.php中写代码如下运行显示出“hello word"
<?php
echo "hello word"; ?>
//也可以自己写一个text.php文件放到www目录里,然后访问 localhost/test.php 就可以了
//apache:Web服务器软件
三、PHP的循环
(1)for循环
<?php
echo"<br/>----------for---------<br/>"; //echo表示打印输出,<br/>与<img/>一样都是空标签,中间无内容
for($n=1;$n<=6;$n++){ //表示变量前全部要加"$"符号
echo $n."<br/>";
}
echo"<br/>----------for_2---------<br/>";
echo"<table border='1' align='center'>"; //borde(边框)定义表格线条粗细为1,align(排列)对齐方式为“中间对齐”
echo"<tr>"; //表格第一行距离边框一个空格——》若改为4个<tr>
for($m=1;$m<=4;$m++){
echo"<td>".$m."<td>";
}
echo"</tr>";//表格最后一行距离边框一个空格——》若改为8个<tr>则打印效果如下
echo"</table>"; //其中</table>为表格标签
打印结果为:(原结果) (更改<tr>数量后的结果)
echo"<br/>----------for_3 9*9---------<br/>";
for($i=1;$i<=9;$i++){
for($j=1;$j<=$i;$j++){
echo $i."*".$j."=".$i*$j." ";//nbsp表示空格占位
}
echo "<br/>";//<br/>表示换行
}
//试验过程中出现过一个错误是:Notice: Use of undefined constant i - assumed 'i'
//这是因为没有在 $j<=i 中的 i 前面加上$导致的,所以在PHP中,一定要注意变量前缀的书写
(2)while循环
起始条件
while(终止条件){
循环体;步长值;
}
echo"<br/>----------while---------<br/>";
$k=1;
while($k<=4){
echo $k."<br/>";
$k++; //不写步长,则while循环会变成死循环
}
(3)do while循环
起始条件
do{
循环体;步长值;
}while();
echo"<br/>----------do while()---------<br/>";
$s=1;
do{
echo $s."<br/>";
$s++;
}while($s<=5);
(4)break continue语句循环
echo"<br/>----------continue bresk---------<br/>";
for($a=1;$a<=5;$a++){
if($a==3){
continue;//当a==3时,直接结束当前循环体执行,跳到下一个循环
//break; 使用break,则当a==3时,终止整个循环
}
echo $a."<br/>";
}
四、安装PHP文件编写的工具 Zend studio
新建PHP project→添加WWW对应目录→新建PHP file
//按键ctrl+F10再右键选择show line num可以显示我们编写代码的行数123....
五、写PHP
.php可以包含html、div、css、php、mysql内容
1、PHP的定界符
(1)标准定界符
<?php
?>
(2)短标记
<?
?>
(3)其他
//asp
<%
%>
//script
<script language="php">
<script>
2、注释符写在php的定界符内
3、PHP变量赋值:
$ 变量名=值; //字母或者下划线开头
//驼峰命名:变量的第二个单词后首字母大写
PHP系统变量
(1)数据传递变量
$_GET(传递数据量小,不安全)、$_POST(数据量大,安全)、$_REQUST(效率低)、$_FILES(上传文件)
(2)会话变量
$_SESSION(服务器端保存数据)、 $_COOKIE (客户端保存数据)、$_SEVER(系统环境信息)
4、变量类型
常见变量类型、复合类型(array、object)、特殊类型(resourse、null)
//输出中文字符时如果出现乱码,加 header("content-type:text/html;charset=ytf-8"); 即可
//单双引号区别:双引号中的代码会执行;单引号中的代码不会执行,会直接按照普通字符输出
//转义符号可以在普通字符与控制字符间切换,普通转控制用:\n \r(回车) \t(水平制表) \f(换页)
//控制符转为普通字符:加\ (适用于 " ' < 等)
//PHP中布尔类型的 false 打印值为空(不为0)
//声明变量时( $a; ),其初始值为null,相当于unset($a) —— 释放变量
var_dump() 函数:结果返回变量的数据类型
//今天登陆mysql的时候出现了Access denied for user 'root'@'localhost' (using password: YES 错误,鼓捣了半天一直没弄好,后来突然重启了一下又好了.....先mark一个修改方法以备后患:
http://blog.csdn.net/lf478660175/article/details/50035467
5、数组
$arr = array("001" => "aaa","002"=>"二");//表示arr[001]=“一”
$arr2=array();
$arr2["name"]="lihua";//单独赋值
echo $arr["001"];
print_r($arr["001"]);
print_r($arr);
echo每次只能输出一个数组字符,可以用它来遍历数组输出全部字符;print_r可以一次输出全部数组。
这里因为“002”对应的是中文字符,所以输出时会乱码,在文件头添加:header("Content-type: text/html; charset=GBK");
就好,“GBK”是文件的编码方式,可以在zend->project->properties中查看与修改
六、实践
PHP中要换行需要使用:<br>
enctype 属性规定在将表单数据发送到服务器之前如何对其进行编码。
<input type="text" name="submit" value="确认"/> 其中,name中的名字是随便定义的,代表页面中有submit和submit1两个提交按钮,也可以定义为submit2、submit3; value="确认"是这个表格中的内容。
<input type="text" name="title" /></p>
</p>为格式控制,p是段落标签,对应于创建一个段落;</tr>对应创建表格中的一行;</from>对应与创建一个表单;<br>对应于创建一个换行。
<textarea> 标签用于定义多行的文本输入控件,使用例句:
<textarea name="" id="" cols="30" rows="10"></textarea></p>
其中,cols--多行输入域的列数,rows--多行输入域的行数,id-设置或返回某个 textarea 的 id,name--设置或返回 textarea 的名称。
【详情参考网址】HTML DOM Textarea 对象
//在写文本框时提示错误 unknown tag ,这是由于写错标签造成的警告,经查找发现是自己把 textarea 写错为 textare
七、留言本代码
1、inPut.html
<!DOCTYPE html>
<html>
<head>
<meta charset="GBK">
<title>Insert title here</title>
</head>
<body>
<form action="inPut.php" method="post" enctype="multipart/from-data">
<!-- 方法一
<input type="text" name="name"/><br/>
<input type="text" name="submit" value="上传"/>
-->
<p>文章标题:<input type="text" name="title" /></p>
<p>文章内容:<textarea name="content" id="" cols="30" rows="10" >一</textarea></p>
<p><input type="submit" value="确认"/></p>
</form>
</body>
</html>
2、inPut.php
<?php
header("Content-type: text/html; charset=GBK");
//print_r($_POST);
//fh是资源类型的变量
/*$fh=fopen("./message.txt","a");//用a作标记,以便下次打开文件时,继续往后写
fwrite($fh,"Aaaaa->text");
fclose($fh);
echo "ok";*/
$str=$_POST["title"].",".$_POST["content"]."\n";
$fh=fopen("./message.txt","a");
fwrite($fh,$str);
fclose($fh);
echo "ok";
?>
3、message.txt(服务器记录文本)
4、message.php
<?php
header("Content-type: text/html; charset=GBK");
$fh=fopen('./message.txt','r');
$i=1;
while( ($mes=fgetcsv($fh)) !=false){
echo "<li><a href='readme.php?tid= ",$i," '>",$mes[0],"</li>";//<li>可以加*标记
//!!!注意这里的单双引号
echo "<br>";
$i++;
}
//print_r($mes);
?>
5、readme.php
<?php
header("Content-type: text/html; charset=GBK");
$tid = $_GET["tid"];
echo "显示第",$tid,"行的信息<br>";
$fh=fopen('./message.txt','r');
//print_r(fgetcsv($fh));//读数据
$n=1;
//$mes= fgetcsv($fh);
while( ($mes=fgetcsv($fh)) !=false){ //?考虑在前后定义$mes的输出结果
if($n==$tid){
//print_r($mes);
echo '<h1>',$mes[0],'</h1>';
echo '<p>',$mes[1],'</p>';
}
$n++;//写n++后再用if判定,达到筛选打印出的行数的目的
}
?>