1、布尔值:false(0,空白,null); true(-1,非0值);
2、echo '$s'输出内容是 $s; 如果""里面包含了$s或者{$s},那么将显示的变量的值。推荐使用{$s}的方式。 使用""时候,如果在""里面还要使用"",就必须用\来转义,例如: echo "<font>\"sss\"</font>";
3、字符串连接:使用标点"."进行字符串连接。
4、访问字符串中的字符:通过在字符串之后用花括号指定所要字符从零开始的偏移量来访问。 strlen($str) 函数可以获取字符串长度。 $str[0] 获取字符串$str的第一个字符。 substr('123456',5,1) 从第5个字符开始获取一个字符,结果是“6”. 5、strval($s)将$s的值转换成字符串,intval($s)将$s的值转换成int整型数值。 双引号里面使用双引号:" a\"b "=a"b ;
6、数组: (array 括号,逗号,=>) 数组排序:sort($arr); 定义:$arr=array(1=>'11','foo'=>'fffooo', 'info'=>array(2=>22,'ghost'=>'host') ); 引用:$arr[1] $arr['foo'] $arr['info'][2] $arr['info']['ghost'] count($arr) 获取数组元素数量 遍历数组:$arr=array(1=>'111',2=>'222',3=>'333'); foreach($arr as $k=>$v) echo "{$k}_{$v}<br>"; //输出:1_111 2_222 3_333
7、对象
<?php class foo { var $a='s';//类的变量!!
function init() //类的函数 { echo "Doing foo."; echo $this->a; //引用类的变量!! } }
$bar = new foo; $bar->init(); ?> 8、变量 isset($s)检查变量是否已经设置,如果还没有设置就引用$s将导致php提示: Undefined variable。 默认情况下变量之间赋值是不会互相影响的(传值赋值模式); 如果是 $a="a"; $b=&$a 这种情况下,$a和$b中任一个变量的值改动了,另外一个变量的值也随之变化(传地址赋值模式)。 PHP5的预定义变量: $_SERVER["REMOTE_ADDR"] //获取ip地址 $_REQUEST[],$_GET[],$_POST[] //获取提交的参数的值 $_SESSION[],$_COOKIE[] $_FILE[] $_ENV[]
9、常量 <?php define("CONSTANT", "Hello world."); echo CONSTANT; // outputs "Hello world." ?>
10、运算符号
/ 取商,结果为float型,通过(int)($a/$b)得到整型商 % 取余,结果为整型 == 是否恒等 != <> 不等于 and && 与 or || 或 !非 round($a) 四舍五入取$a的值 floor($a) 舍去$a小数点后内容取整 ceil($a) 进一法取整,返回不小于$a的下一个整数
11、流程控制 if() {do it} elseif(){do it} else {do it} for($i=0;$i<$b;$++) swtich($a){ case '1': do it;break; case '2': do it;break; default: do it; }
12、函数 function_exists(function name) 指定的函数是否存在; 函数内引用全局变量: global $a; 静态变量:static $a只在函数内部编号; function show() { static $a=0;$a++;echo $a;} $a=10 show(); show(); echo $a 输出结果:1,2,10
13、类与对象
14、图像处理(需要GD库支持)
检查是否启动了GD库支持:if( function_exists(gd_info) ) gd_info()返回值是一个数组; 检查GD库版本:$ver=gd_info(); echo $k['GD Version'];
在x,y坐标处新建图像:$img=imagecrete(x,y)
为图像分配颜色:$color=imagecolorallocate($img,R,G,B)
发送图片给浏览器;header("content-type;image/gif") 或者image/jgeg,image/png
显示图片;imagegif($img) imagejpeg($img) imagepng($img) imagewbmp($img)
释放内存: imagedestroy($img)
显示文字; imagestring($img,int font,x,y,$str,$color) 如果 font 是 1,2,3,4 或 5,则使用内置字体。 划线:imageline($img,x1,y1,x2,y2,$color);
15、SESSION
session_start() 建立会话 $_SESSION['var']='kkk' 建立var会话变量并赋值 session_unset() 注销已注册session变量 session_unregister('var') 注销session变量var
PHP后退页面过期或不存在问题的解决:
post后或使用了使用了session都有可能引起这种情况
解决办法,在开头加入如下代码即可:
header("Cache-control: private");
1、最好是用include_once()而不要用include()函数; require_once()遇见错误则停止执行,include_once()提示后继续执行;
2、empty($str)如果$str是0或者为空都会返回true,所以$str最好不要有0
3、---------页面转向-------------------- "<scrīpt language=javascrīpt>alert('成功注销会员')</scrīpt> <meta http-equiv='refresh' content='0;url=searchMember.php'>"; 当然header('location:URL')也可以实现但是效果没有上面的好!! 但是要特别注意:header这个函数所在的页面上在调用此函数前,不能有任何输出!! -----------------------------
4、php代码里面嵌套html或者js代码时候,最好用单引号而不要用双引号!!
5、获取页面提交的参数:$_SERVER['REMOTE_ADDR'].$_SERVER[REQUEST_URI]
6、显示本区时间:date_default_timezone_set('PRC');echo date("H:i:s");这样才是服务器的时间,如果不设置时区PHP5版本后显示的时间就不是本地时间!! date("Ymd His") 显示年月日时分秒
10、细线表格设计:单元格间距=1;表格背景色=你想要看见最终显示出来的表格边框色;单元格背景色=白色或者很浅的色系。 竖线:表格列填充黑色,列宽度=1 字体:14像素+宋体 style="width:80"
12、关于使用$_GET[]和$_POST[]获取页面变量:action='1.php?action=add'中应该用$_GET['action']来获取action提交的值!!
处理radio单选组:由于radio单选组的name都是一样的,所以使用$_REQUEST["name"]就可以获取到单选的那个项的值value。 处理select下拉框(单选):由于select单选组的name都是一样的,所以使用$_REQUEST["name"]就可以获取到选择的下拉项的值value。 处理select下拉框(多选):select下拉框命名必须为name[]形式; $arr=$_REQUEST["name"]; for($i=0;$i<count($arr);$i++) echo "{$arr[$i]}"; 处理checkbox多选组(多选):checkbox多选组必须命名为checkbox[]形式; $arr=$_REQUEST["checkbox"]; for($i=0;$i<count($arr);$i++) echo "{$arr[$i]}";
14、变量的引用, (condition)?action1:action2相当于if(condition) action1 else action2. funciton msg($j=0,$k=1,$l=3) 预定义参数值,如果参数不指定则用默认值,如果指定了就用指定值。
17、htmlentities($_POST['$S'])将$S的内容中所有的特殊字符转换成HTML表示方式。 所有会引起浏览器进行特殊处理的字符在进行了转换后,就能确保显示出来的是原来录入的内容。
18、-----------------页面和代码分离的一种模板(分htm和php)------------------
第一、php文件处理完所有的业务(control和model),查询结果一般放到数组,然后htm文件里面可以直接调用数组变量。 php文件末尾必须include_once(htm文件)!! $query=mysql_query($sql); while($rs=mysql_fetch_array($query)) { $catedb[]=$rs; }
第二、htm文件只管显示(view),写代码时候,使用 print <<<EOT 与 EOT; 搭配, EOT;的前面一定不能留空格,必须顶格,切记切记。 例如:
<!-- if(!empty($catedb)) //$catedb是sql查询的结果集 { foreach($catedb as $key=>$value) { print <<<EOT --> <ul><li> <a href="admin.php?job=sort&do=editwin&id={$key}#分类编辑"><b>{$value['name']}</b></a> <span class="smalltxt"> - 显示顺序: <input type="text" name="{$value['sid']}" value="{$value['vieworder']}" size="1"> - <a href="admin.php?job=sort&do=editwin&id={$key}#分类编辑">[编辑]</a> <a href="admin.php?job=sort&do=del&id={$value['sid']}">[删除]</a> </span></li> </ul> <!-- EOT;(必须顶格) } } print <<<EOT -->
第三、<!-- -->中,<?php ?>必须写在最前面和最后面。 例如: <!-- <?php print <<<EOT --> html代码 html代码 <!-- EOT; php代码 print <<<EOT --> html代码 html代码 <!-- EOT; ?> -->
//------------------------------------------------
19、数据库操作
//连接数据库 $link=@mysql_connect(host,usr,name) or die("erro message!!"); @mysql_close($link);
//选择数据库 $db=@mysql_select_db("db_name") or die("err:3");
//查询 $sql="select * from db"; $result=@mysql_query($sql) or die("erro message!!");
//显示查询结果集 $result=@mysql_query("SELECT id, name FROM mytable"); while ( $row = @mysql_fetch_array($result) ) { printf ("ID: %s Name: %s", $row[0], $row["name"]); }
//获取查询包含的记录总数 mysql_num_rows($result) 返回select语句查询结果的记录总数。 mysql_affected_rows() 返回insert,delete,update等sql语句更新的记录总数,注意此函数没有参数!!。 mysql_num_fields($query) 返回select语句查询结果的列(字段)总数。
//释放查询占用的内存 mysql_free_result($result)
//事务操作
//修改记录
mysql_array_rows($)和mysql_affected_rows()返回值必须>0才算操作成功, mysql_affected_rows())返回值可能是-x负数,此时用if(mysql_affected_rows()))判断也是返回true!!!
//------------------------------------------------
20、javascrīpt学习:
(1)、获取表单的元素个数: form.elements.length (2)、表单第(I-1)个元素的类型: form.elements[i].type="button" (3)、表单元素的值:form.elements.value=""; (4)、复选框标记已经勾选:document.form.checkbox.checked=true (5)、单选按钮:document.form.radio.checked (6)、Select的索引值:document.form.select.selectIndex (7)、select的属性:document.form.select.options[i].text; document.form.select.options[i].value; (8)、当前select的值:document.form.select.options[document.form.select.selectIndex].value;
//------------------------------------------------ 21、数组
$arr=array(1,2,3,4,5); foreach($arr as $i=>$value) echo $arr[$i];
//打印数组详细内容 print_r($array) <?php $a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z')); print_r ($a); ?>
count($arr) 返回数组$arr的列的数目。
//-----------------文件操作---------------------------- <form enctype="multipart/form-data" action="" method="POST"> Send this file: <input name="myfile" type="file">
form必须有参数说明enctype="multipart/form-data"才能有文件上传功能。 设置了文件上传功能后,php自动建立了全局变量$_FILES;
$_FILES['myfile']['name'] 客户端机器文件的原名称。
$_FILES['myfile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如“image/gif”。 if( $_FILES['fl']['type']=='image/jpeg' ) 只能上传JPEG类型文件
$_FILES['myfile']['size'] 已上传文件的大小,单位为字节。(不可靠的数据) 判断上传文件大小 if(filesize($_FILES['attachment']['tmp_name'])>1024000) (这样判断才可靠)
$_FILES['myfile']['tmp_name'] 文件被上传后在服务端储存的临时文件名。
$_FILES['myfile']['error'] 和该文件上传相关的错误代码。
php文件上传时候,windows系统下的文件路径必须是用\\来做转义表示\,例如'c:\\windows\\'而不是'c:\windows\',;
php处理文件上传做法:文件被上传结束后,默认地被存储在了临时目录中,这时您必须将它从临时目录中删除或移动到其它地方, 如果没有,则会被删除。也就是不管是否上传成功,脚本执行完后临时目录里的文件肯定会被删除。 所以在删除之前要将它复制到其它位置,此时,才算完成了我们的上传文件过程。
$file=$_FILES['fl']['name']; $tmp=$_FILES['fl']['tmp_name']; if(move_uploaded_file($tmp,'c:\\apache\\htdocs\\'.$file)) echo 'upload file ok'; else echo 'upload file failse';
上传多个文件:有了上面的认识,同时上传多个文件也就不难做了。上传多个文件是从PHP3.0.10版本开始被支持。 要完成它,只需文件名以数组形式表示即可: <form action="file-upload.php" method="post" enctype="multipart/form-data"> <input name="myFile[]" type="file"><br> <input name="myFile[]" type="file"><br> <input type="submit" value="上传多个文件"> </form> 假如我们上传了两个文件:first.txt 和 second.gif。表单被提交后, $_FILES["myFile"]["name"][0]、$_FILES["myFile"]["size"][0]分别指first.txt文件的名字和大小, $_FILES["myFile"]["name"][1]、$_FILES["myFile"]["size"][1]分别指 second.gif 的文件名字和大小。 当然,$_FILES["myFile"]["tmp_name"]、$_FILES["myFile"]["type"]也同样会产生。
bool is_uploaded_file ( string filename ) 说明:如果 filename 所给出的文件是通过 HTTP POST 上传的则返回 TRUE。这可以用来确保恶意的用户 无法欺骗脚本去访问本不能访问的文件,例如 /etc/passwd。这种检查显得格外重要,如果上传的文件有 可能会造成对用户或本系统的其他用户显示其内容的话。为了能使 is_uploaded_file() 函数正常工作, 必段指定类似于 $_FILES['userfile']['tmp_name'] 的变量,而在从客户端上传的 文件名 $_FILES['userfile']['name'] 不能正常运作。
<?php $old_filename = $_FILES['attachment']['tmp_name'];//获得上传到服务器临时目录得文件的名称; $new_filename = '/path/to/'.$_FILES['attachment']['name']; if (move_uploaded_file($old_filename, $new_filename))//移动上传临时文件到制定目录 { /* $old_filename is an uploaded file, and the move was successful. */ } ?>
遍历$mydir目录下的文件和文件夹: if($dirhandle=opendir($mydir)) while( false!==($fi=readdir($dirhandle)) ) echo $fi.'<br>'; closedir($dirhandle);
22、数学函数 $a / $b 如果除不尽,结果是浮点数。 $a % $b 取商; ceil($a) 四舍五入取值$a; floor($a) 只取$a的整数部分;
----------------------------------------------------------------------------------------------- 23、php与OOP
--------------------class.php------------------------------------ class database { public $num,$result; public function query($sql) { $this->result=@mysql_query($sql) or die("err code 3: sql query fail") ; return $this->result; //返回查询结果集 @mysql_free_result($result) or die("err code 5: mysql_free_result() fail"); } public function num_rows($sql) { $this->result=$this->query($sql); //通过$this->query引用query函数. $this->result引用成员变量result!! $this->num=@mysql_num_rows($result) or die("err code 4: mysql_num_rows() fail"); return $this->num; //此函数返回查询的结果数。 }
} --------------------test.php------------------------------------ <?php include_once("class.php"); $conn=new database;
$sql="select * from user order by userAge";
echo $conn->num_rows($sql)."<br>"; ?>
//-------------------php与Ajax------------------------------------ 由于jsvascrīpt采用UTF8编码,在windows下采用ajax回送服务器的返回信息就会出现乱码, 因此在windows下应用时,php处理页面ajax请求的页面必须包含: header('Content-Type:text/html;charset=GB2312');这句话,否则php获取的中文数据返回到 ajax的html界面将显示乱码。
//输出xml
<? require_once("conn.php"); header("Conten-Type:text/xml"); echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>"; echo "<menuitems>"; $result = mysql_db_query("myly","select * from myTable"); while($row = mysql_fetch_object($result)) { echo "<item><species>".$row->name."</species>"; echo "<location><![CDATA[".$row->location."]]></location></item>"; } echo "</menuitems>"; mysql_free_result($result); mysql_close(); ?>
//输出xml------------------------------------------------------------------
<?php header("Conten-Type:text/xml"); echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>"; echo "<user><row>"; for($i=0;$i<5;$i++) { $str="<col{$i}>{$i}</col{$i}>"; echo $str; } echo "</row></user>"; ?>
|
请发表评论