已经玩php一段时间了,基本是from0开始的,经常出现的问题也很多,慢慢的可以熟练的查询文档了,而且,经验也不是很多。
先lookhere。:
error_reporting(1048);//1,2,4,7,...,1048
ob_start();
session_start();
date_default_timezone_set('Asia/Shanghai');
php的递给调用会吃掉很多的内存。
一般的,不要太多的使用define。
在类的构造和属性器方面,5已经做了很多的工作,克服的bug就不说了,__系列的函数都有一些看点,也是支持static的。
按照我现在的写过的程序,很少用到框架页面的,我感觉在php里面速度不在是一个问题。
注意类的调用次序,特别是已经extends的,准确的释放掉内存。
@mysql_fetch_array($result,MYSQL_ASSOC);
这个注意使用乱用,MYSQL_ASSOC,MYSQL_NUM和MYSQL_BOTH是一个enum吧。默认的是MYSQL_BOTH.
mysql的语句,如果执行in的话不再支持limit。so...很麻烦。
支持distinct,group之,程序循环执行,md。
if(get_magic_quotes_gpc()){
$_GET= stripslashes_gpc($_GET);
$_POST= stripslashes_gpc($_POST);
$_COOKIE= stripslashes_gpc($_COOKIE);
}
set_magic_quotes_runtime(0);#magic_quotes_runtime
functionstripslashes_gpc($array){
while(list($key,$value)=each($array)){
if(is_string($value)){
$array[$key]=addslashes(stripslashes($value));
}elseif(is_array($value)) {
$array[$key]=stripslashes_gpc($value);
}
}
return$array;
}
/**
*处理程序中出现的错误
*@Date:2006-10-9-10:51
*@param (类型) (参数名) (描述)
*/
functionError_Handler($errno,$errstr,$errorfile,$errline,$errtext){
动态URL静态化的主要目的,其一是搜索引擎优化(SEO),其二是面向用户友好。动态URL静态化是把一个动态地址转化成一个静态地址。其实,这个静态地址的内容还是从动态地址来的,只是看起来,类似一个静态地址。例如,本站页面
http://www.xxx.cn/blog/read.php/416.htm
其真实地址是
http://www.xxx.cn/blog/read.php?416
采用一定的技术,把第一个地址指向第二个地址,也就实现了动态URL静态化的目的。
如 果进一步做到搜索引擎优化(SEO),可以尝试把地址修改成容易理解的文字,例如,416.htm可以修改为 child_kindergarten.html。这种做法在英文网站很流行,直接把标题作为连接就行了。中文网站实现比较困难。多数还是使用数字的。这 种做法主要针对Google,在目前的搜索引擎中,例如百度,MSN,Yahoo,没有谁比Google更重视url。
动态URL静态化 有两种办法,第一是使用Web服务器的,第二是编程实现。编程实现思路比较简单,这里暂时不多说。我们的网站 www.childhood.net.cn由于使用的是一个小型的虚拟主机,所以不支持地址转化,就只有使用php编程实现。当然,多数的程序已经包括了 这部分,不需要自己写程序了。我们使用的bo-blog也已经包括了编程动态URL静态化,尽管还不是很完全。
基于Web服务器的动态 URL静态化就简单的多。当然,这里面包括两个部分,第一是配置Web服务器。基本上,大家使用虚拟主机的比较多,不可能自己配置,提供商提供的空间支持 动态URL静态化就可以使用,不支持基本上也没有什么办法。对于自己架构服务器的人来说,这本身小才一碟,不许多说。所以,这里主要说如何进行转换。
首先,在服务器的根目录(例如public_html)建立一个文件名为.htaccess的文件。这个文件内容基本如下:
RewriteEngine on
RewriteBase /
RewriteRule ^post/([0-9]+).htm$ read.php?$1
RewriteRule ^post/([0-9]+)_([0-9]+).htm$ read.php?$1&page=$2
RewriteRule ^post/([0-9]+)_([0-9]+)_([0-9]+).htm$ read.php?$1&page=$2∂=$3
看懂了吧?如果懂正则表达式的人,马上明白怎么回事了。不懂得也没有关系,下面是一个常用正则表达式的列表,根据例子,稍微修改,就可以做到了。基本上,针对通常的连接转移,应该都可以很容易实现的。
function Uploadfile(){
//文件保存目录路径
$save_path = '../upload/';
//定义允许上传的文件扩展名
$ext_arr = array('rar','zip');
//最大文件大小
$max_size = 1000000;
//更改目录权限
@mkdir($save_path, 0777);
//有上传文件时
if (empty($_FILES) === false) {
//原文件名
$file_name = $_FILES['fileData']['name'];
//服务器上临时文件名
$tmp_name = $_FILES['fileData']['tmp_name'];
//文件大小
$file_size = $_FILES['fileData']['size'];
//检查目录
if (@is_dir($save_path) === false) {
alert("上传目录不存在。");
}
//检查目录写权限
if (@is_writable($save_path) === false) {
alert("上传目录没有写权限。");
}
//检查是否已上传
if (@is_uploaded_file($tmp_name) === false) {
alert("临时文件可能不是上传文件。");
}
//检查文件大小
if ($file_size > $max_size) {
alert("上传文件大小超过限制。");
}
//获得文件扩展名
$temp_arr = explode(".", $file_name);
$file_ext = array_pop($temp_arr);
$file_ext = trim($file_ext);
$file_ext = strtolower($file_ext);
//检查扩展名
if (in_array($file_ext, $ext_arr) === false) {
alert("上传文件扩展名是不允许的扩展名。");
}
//移动文件
if (move_uploaded_file($tmp_name, $file_path) === false) {
alert("上传文件失败。");
}
}
<?php
if($_FILES['file']['error'] > 0){
echo '!problem:';
switch($_FILES['file']['error'])
{
case 1: echo '文件大小超过服务器限制';
break;
case 2: echo '文件太大!';
break;
case 3: echo '文件只加载了一部分!';
break;
case 4: echo '文件加载失败!';
break;
}
exit;
}
if($_FILES['file']['size'] > 1000000){
echo '文件过大!';
exit;
}
if($_FILES['file']['type']!='image/jpeg' && $_FILES['file']['type']!='image/gif'){
echo '文件不是JPG或者GIF图片!';
exit;
}
$today = date("YmdHis");
$filetype = $_FILES['file']['type'];
if($filetype == 'image/jpeg'){
$type = '.jpg';
}
if($filetype == 'image/gif'){
$type = '.gif';
}
$upfile = 'upfile/' . $today . $type;
if(is_uploaded_file($_FILES['file']['tmp_name']))
{
if(!move_uploaded_file($_FILES['file']['tmp_name'], $upfile))
{
echo '移动文件失败!';
exit;
}
}
else
{
echo 'problem!';
exit;
}
echo '<h1>success!</h1><br>';
echo '文件大小:' . $_FILES['file']['size'] . '字节' . '<Br>';
echo '文件路径:' . $upfile;
echo '<hr with="100%" />' . '<p>';
$dirr = 'upfile/';
$dir = opendir($dirr);
echo $dirr . '--Listing:<ul>';
while($file = readdir($dir)){
echo "<li>$file</li>";
}
echo '</ul>';
closedir($dir);
?>
<?php
if(empty($_GET[submit]))
{
?>
<form enctype="multipart/form-data" action="<?php $_SERVER['PHP_SELF']?>?submit=1" method="post">
Send this file: <input name="filename" type="file">
<input type="submit" value="确定上传">
</form>
<?php
}else{
$path="uploadfiles/"; //上传路径
//echo $_FILES["filename"]["type"];
if(!file_exists($path))
{
//检查是否有该文件夹,如果没有就创建,并给予最高权限
mkdir("$path", 0700);
}//END IF
//允许上传的文件格式
$tp = array("image/gif","image/pjpeg","image/png");
//检查上传文件是否在允许上传的类型
if(!in_array($_FILES["filename"]["type"],$tp))
{
echo "格式不对";
exit;
}//END IF
if($_FILES["filename"]["name"])
{
$file1=$_FILES["filename"]["name"];
$file2 = $path.time().$file1;
$flag=1;
}//END IF
if($flag) $result=move_uploaded_file($_FILES["filename"]["tmp_name"],$file2);
//特别注意这里传递给move_uploaded_file的第一个参数为上传到服务器上的临时文件
if($result)
{
//echo "上传成功!".$file2;
echo "<script language='javascript'>";
echo "alert("上传成功!");";
echo " location='add_aaa.php?pname=$file2'";
echo "</script>";
}//END IF
}
?>