可爱熊个人博客

Archive for 八月, 2012

PHP获得数组的交集与差集

数组的交集 array_intersect()

array_intersect()函数返回一个保留了键的数组,这个数组只由第一个数组中出现的且在其他每个输入数组中都出现的值组成。其形式如下:

1 array array_intersect(array array1,array array2[,arrayN…])

下面这个例子将返回在$fruit1数组中出现的且在$fruit2和$fruit3中也出现的所有的水果:

01 <?php
02 $fruit1 = array("Apple","Banana","Orange");
03 $fruit2 = array("Pear","Apple","Grape");
04 $fruit3 = array("Watermelon","Orange","Apple");
05 $intersection = array_intersect($fruit1, $fruit2, $fruit3);
06 print_r($intersection);
07
08 // output
09 // Array ( [0] => Apple )
10 ?>

只有在两个元素相等且具有相同的数据类型时,array_intersect()函数才会认为它们是相同的。 Read More…

Linux下安装DedeCMS及安全设置

这里我们发现几个目录没有可写入权限,我们需要给这个目录分为权限。
首先需要给站点目录绑定apache服务的用户,使用命令行:
sudo chown -R www-data /var/dedecms/
这样给站点目录指定权限用户为www-data
我们这里需要给几个无需写入权限的目录去除写入权限,分别输入:
sudo chmod -R 755 /var/dedecms/data/
sudo chmod -R 755 /var/dedecms/html/
sudo chmod -R 755 /var/dedecms/uploads/
sudo chmod -R 555 /var/dedecms/include/
sudo chmod -R 555 /var/dedecms/install/
sudo chmod -R 555 /var/dedecms/dede/
sudo chmod -R 555 /var/dedecms/plus/
sudo chmod -R 555 /var/dedecms/images/
sudo chmod -R 555 /var/dedecms/member/
sudo chmod -R 555 /var/dedecms/special/
sudo chmod -R 555 /var/dedecms/templets/
sudo chmod 555 /var/dedecms/index.php
sudo chmod 555 /var/dedecms/tags.php

设定执行权限

我们可以给DedeCMS几个目录关闭可执行权限,这里的可执行是指在Apache中无法运行php脚本,那我们则可以在Apache目录配置中做如下的设置(虚拟机可设置.htaccess)
<VirtualHost *:80>
<Directory /var/dedecms/uploads/>
php_admin_flag engine off
</Directory>
<Directory /var/dedecms/data/>
php_admin_flag engine off
</Directory>
<Directory /var/dedecms/html/>
php_admin_flag engine off
</Directory>
<Directory /var/dedecms/templets/>
php_admin_flag engine off
</Directory>
<Directory /var/dedecms/images/>
php_admin_flag engine off
</Directory>
</VirtualHost>
因为我们这里是PHP5,所以可以按照上面的方法设置。如果是老版本的PHP,那就只能通过:
<Directory “/var/dedecms/uploads/”>
<Files ~ “.php”>
Order allow,deny
Deny from all
</Files>
</Directory>
来设定。

linux 下 apache启动、停止、重启命令

基本的操作方法:
本文假设你的apahce安装目录为/usr/local/apache2,这些方法适合任何情况

apahce启动命令:
推荐/usr/local/apache2/bin/apachectl start apaceh启动

apache停止命令
/usr/local/apache2/bin/apachectl stop   停止

apache重新启动命令:
/usr/local/apache2/bin/apachectl restart 重启

要在重启 Apache 服务器时不中断当前的连接,则应运行:

/usr/local/sbin/apachectl graceful

如果apache安装成为linux的服务的话,可以用以下命令操作:

service httpd start 启动

service httpd restart 重新启动

service httpd stop 停止服务

SQL Server2008 乱码问题

SQL_Latin1_General_CP1_CI_AS,

只需要将它改为 Chinese_PRC_CI_AS就OK了。

 

方式2:

 

发现能正常显示的字段在表中类型为nvarchar,不能的是varchar,试着将其该成nvarchar,问题解决。

nvarchar表示以Unicode格式存储可变长度的 数据,所以能显示中文,而varchar是用非unicode存储数据,所以乱码。

新浪微博OAuth2.0授权出现error:redirect_uri_mismatch解决方法

新浪微博OAuth2.0授权的回调地址,需要在微博开放平台那里设置与应用配置config.php中一致,否则就会提示error:redirect_uri_mismatch

一、SAE平台微博OAuth2.0应用配置config.php

<?php
header('Content-Type: text/html; charset=UTF-8');
define( "WB_AKEY" , 'xxxxxxxxxx' ); //APP_Key
define( "WB_SKEY" , 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' ); //APP_Secret
define( "WB_CALLBACK_URL" , 'http://'.$_SERVER["HTTP_APPVERSION"].'.'.$_SERVER["HTTP_APPNAME"].'.sinaapp.com/callback.php' );
//$_SERVER["HTTP_APPVERSION"] 版本号,可以不加
//$_SERVER["HTTP_APPNAME"] 应用名
?>

二、微博开放平台那里设置
 在微博开放平台那里“应用信息”–“高级信息”–设置“应用回调页”为 http://***.sinaapp.com/callback.php

msxml3.dll 错误 80070005 拒绝访问。解决方法

动网论坛 首页调用无法修改出现下面错误:

msxml3.dll 错误 80070005 拒绝访问。 /bbs/admin/ForumNewsSetting.asp,行 137

msxml3.dll (0x80070005) 拒绝访问

解决方法:

给文件夹Dv_ForumNews给于IUSR_xxxx的写入权限。

PHP获取远程图片并保存到本地

<?

function GrabImage($url, $filename = “”) {
if ($url == “”):return false;
endif;//如果$url地址为空,直接退出
if ($filename == “”) {//如果没有指定新的文件名
$ext = strrchr($url, “.”);//得到$url的图片格式
if ($ext != “.gif” && $ext != “.jpg”):return false;
endif;//如果图片格式不为.gif或者.jpg,直接退出
$filename = date(“dMYHis”) . $ext;//用天月面时分秒来命名新的文件名
}
ob_start();//打开输出
readfile($url);//输出图片文件
$img = ob_get_contents();//得到浏览器输出
ob_end_clean();//清除输出并关闭
$size = strlen($img);//得到图片大小
$fp2 = @fopen($filename, “a”);
fwrite($fp2, $img);//向当前目录写入图片文件,并重新命名
fclose($fp2);
return $filename;//返回新的文件名
}
$img = GrabImage(“http://imgsrc.baidu.com/baike/abpic/item/6648d73db0edd1e89f3d62f7.jpg“, “”);
if ($img):echo ‘<pre><img src=”‘ . $img . ‘”></pre>’;//如果返回值为真,这显示已经采集到服务器上的图片
else:echo “false”;
endif;//否则,输出采集失败

?>