当前位置: 编程技术>php
本页文章导读:
▪PHP与MySQL开发中页面乱码的产生与解决
1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根.........
▪php中cookie的作用域
setcookie("cookie名","值","作用域") 作用域“/”表示COOKIE作用在根目录下所有文件 作用域“/ROOT/”表示COOKIE作用在根目录下ROOT目录下的所有文件
......
▪简单的PHP图片上传程序
第一种: php部分 代码如下:<?php if($_FILES['file']['error'] > 0){ echo '!problem:'; switch($_FILES['file']['error']) { case 1: echo '文件大小超过服务器限制'; .........
[1]PHP与MySQL开发中页面乱码的产生与解决
来源: 互联网 发布时间: 2013-11-30
1、文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的。记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题。而ZendStudio却不会自动识别编码,它只会根据首选项的配置固定以某种编码打开文件,如果工作时候一不注意,用错误编码打开文件,做了修改之后一保存,乱码就出现了(我深有体会)。
2、页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8两种编码。
3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。
知道了WEB开发中哪些地方涉及到了编码,也就知道了乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。下面是一些常见的错误情况与解决:
1、数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接Select数据出来的就是乱码,需要在查询前先使用:
mysql_query("SET NAMES GBK");
来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:
mysql_query("SET NAMES UTF8");
注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
注:事实上MYSQL的数据输入输出比上面讲的更复杂一些,MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default -character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。
2、页面申明编码与文件本身编码不一致,这种情况很少发生,因为如果编码不一致美工做页面时候在浏览器看到的就是乱码了。更多时候是发布以后修改一些小BUG,以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。
3、一些租用虚拟主机的朋友,明明上述3项编码都设置正确了还是有乱码。比方说网页是GB2312编码的,IE等浏览器打开却总是识别成UTF-8,网页HEAD里面已经申明是GB2312了,手动修改浏览器编码为GB2312后页面显示正常。产生原因是服务器Apache设定了服务器全局的默认编码,在httpd.conf里面加了AddDefaultCharset UTF-8。这时候服务器会首先发送HTTP头给浏览器,其优先级比页面里申明编码高,自然浏览器就识别错了。解决办法有2个,请管理员在配置文件自己的虚机里加上一条AddDefaultCharset GB2312来覆盖全局配置,或者在自己目录的.htaccess里配置。
2、页面申明编码:在HTML代码HEAD里面,可以用<meta http-equiv="Content-Type" content="text/html; charset="XXX" />来告诉浏览器网页采用了什么编码,目前中文网站开发中XXX主要用的是GB2312和UTF-8两种编码。
3、数据库连接编码:指的是进行数据库操作时候以哪种编码与数据库传输数据,这里需要注意的是不要与数据库本身的编码混淆,比如MySQL内部默认是latin1编码,也就是说Mysql是以latin1编码来存储数据,以其他编码传输给Mysql的数据会被转换成latin1编码。
知道了WEB开发中哪些地方涉及到了编码,也就知道了乱码产生的原因:上述3项编码设置不一致,由于各种编码绝大部分是兼容ASCII的,所以英文符号不会出现,中文就倒霉了。下面是一些常见的错误情况与解决:
1、数据库采用UTF8编码,而页面申明编码是GB2312,这是最常见的产生乱码的原因。这时候在PHP脚本里面直接Select数据出来的就是乱码,需要在查询前先使用:
mysql_query("SET NAMES GBK");
来设定MYSQL连接编码,保证页面申明编码与这里设定的连接编码一致(GBK是GB2312的扩展)。如果页面是UTF-8编码的话,可以用:
mysql_query("SET NAMES UTF8");
注意是UTF8而不是一般用的UTF-8。假如页面申明的编码与数据库内部编码一致可以不设定连接编码。
注:事实上MYSQL的数据输入输出比上面讲的更复杂一些,MYSQL配置文件my.ini中定义了2个默认编码,分别是[client]里的default -character-set和[mysqld]里的default-character-set来分别设定默认时候客户端连接和数据库内部所采用的编码。我们上面指定的编码其实是MYSQL客户端连接服务器时候的命令行参数character_set_client,来告诉MYSQL服务器接受到的客户端数据是什么编码的,而不是采用默认编码。
2、页面申明编码与文件本身编码不一致,这种情况很少发生,因为如果编码不一致美工做页面时候在浏览器看到的就是乱码了。更多时候是发布以后修改一些小BUG,以错误编码打开页面然后保存导致的。或者是用某些FTP软件直接在线修改文件,比如CuteFTP,由于软件编码配置错误而导致转换错了编码。
3、一些租用虚拟主机的朋友,明明上述3项编码都设置正确了还是有乱码。比方说网页是GB2312编码的,IE等浏览器打开却总是识别成UTF-8,网页HEAD里面已经申明是GB2312了,手动修改浏览器编码为GB2312后页面显示正常。产生原因是服务器Apache设定了服务器全局的默认编码,在httpd.conf里面加了AddDefaultCharset UTF-8。这时候服务器会首先发送HTTP头给浏览器,其优先级比页面里申明编码高,自然浏览器就识别错了。解决办法有2个,请管理员在配置文件自己的虚机里加上一条AddDefaultCharset GB2312来覆盖全局配置,或者在自己目录的.htaccess里配置。
[2]php中cookie的作用域
来源: 互联网 发布时间: 2013-11-30
setcookie("cookie名","值","作用域")
作用域“/”表示COOKIE作用在根目录下所有文件
作用域“/ROOT/”表示COOKIE作用在根目录下ROOT目录下的所有文件
[3]简单的PHP图片上传程序
来源: 互联网 发布时间: 2013-11-30
第一种:
php部分
<?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="/blog_article/</php $_SERVER[.html'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
}
?>
php部分
代码如下:
<?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="/blog_article/</php $_SERVER[.html'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
}
?>
最新技术文章: