php、asp以“流格式”下载服务器端文件
作者:admin 日期:2012-04-10
解决WORD,EXCEL,TXT,图片等文件类型直接在IE中被打开的问题
- <%
- Function downFileFromServer(showFileName, downFilePath)
- response.Clear
- response.Buffer = true
- Set ads = Server.CreateObject("ADODB.Stream")
- ads.Type = 1
- ads.Mode = 3
- ads.Open
- ads.LoadFromFile downFilePath
- response.AddHeader("Content-Encoding", "None")
- response.AddHeader("Cache-Control", "Private")
- response.AddHeader("Content-Length", ads.Size)
- response.AddHeader("Content-Disposition", "attachment; filename=" & showFileName)
- response.ContentType = "application/octet-stream"
- response.BinaryWrite(ads.Read(ads.Size))
- ads.Close
- Set ads = nothing
- response.Flush
- response.End
- End Function
- Call downFileFromServer("abc.test", Server.MapPath("test.asp"))
- %>
- <?php
- function downFileFromServer($showFileName, $downFilePath)
- {
- if(file_exists($downFilePath))
- {
- if(is_readable($downFilePath))
- {
- if(Trim($showFileName) == '')
- {
- $showFileName = 'undefined';
- }
- ob_start();
- ob_clean();
- $file_size = filesize($downFilePath);
- header('Content-Encoding:none');
- header('Cache-Control:private');
- header('Content-Length:' . $file_size);
- header('Content-Disposition:attachment; filename=' . $showFileName);
- header('Content-Type:application/octet-stream');
- readfile($downFilePath);
- ob_flush();
- }
- }
- }
- //Sample
- downFileFromServer('a.abc', 'test.php');
- ?>
php遍历文件夹和文件
作者:admin 日期:2012-04-10
<?php
$path = 'UploadFile';
function getfiles($path)
{
if(!is_dir($path))
{
return;
}
$handle = opendir($path);
while( false !== ( $f = readdir( $handle ) ) )
{
if($f != '.' && $f != '..')
{
$path2 = $path . '/' . $f;
if( is_dir( $path2 ) )
{
echo "<br />" . $f;
getfiles( $path2 );
}
else
{
echo "<br />" . $f;
}
}
}
}
print_r( getfiles($path) );
?>
PHP中的escape函数以及Jsonp实例
作者:admin 日期:2012-04-10
function phpescape($str){
preg_match_all("/[\x80-\xff].|[\x01-\x7f]+/",$str,$newstr);
$ar = $newstr[0];
foreach($ar as $k=>$v){
if(ord($ar[$k])>=127){
$tmpString=bin2hex(iconv("GBK","ucs-2",$v));
if (!eregi("WIN",PHP_OS)){
$tmpString = substr($tmpString,2,2).substr($tmpString,0,2);
}
$reString.="%u".$tmpString;
} else {
$reString.= rawurlencode($v);
}
}
return $reString;
}
实例:
$xml = file_get_contents("index.xml");
$xml = phpescape($xml);
$jsondata = "{symbol:\"" . $xml . "\"}";
echo $_GET['callback'].'('.$jsondata.')';
PHP伪原创之随机段落
作者:admin 日期:2012-04-10
<?php
//原始字符串
$p = "<p>p0</p><p>p1</p><p>p2</p><p>p3</p>";
//处理完之后的字符串
$p = DoP($p);
//输出处理的结果
echo($p);
/*处理P标记**/
function DoP($content)
{
//正则提取P标记
$arr = GetField($content);
//将每个P标记都加上ID
$arrLen = count($arr);
for ( $i = 0; $i < $arrLen; $i ++ )
{
$arr[$i] = str_replace("<p", "<p id=\"p" . $i . "\"", $arr[$i]);
}
//对数组重新排序
shuffle($arr, SORT_NUMERIC);
//将数组组成字符串
$content = implode("", $arr);
return ($content);
}
/*正则表达式提取**/
function GetField($content)
{
$patrn = "/<p[\s\S]*?>[\s\S]*?<\/p>/i";
preg_match_all($patrn, $content, $matches);
return($matches[0]);
}
?>
php随机位置向字符串插入关键字
作者:admin 日期:2012-04-10
<?php
$times = 4; //关键字出现频率
$keyword = "【fuck】"; //要替换的关键字
$str = "阿克苏绝对法拉克世界疯了阿拉山口地方就看到las决哦iasfls.sdmflaskdf洛杉矶的法律卡死噢iuoi020990拉开时间的发生了疯狂";
$strlen = mb_strlen($str, "gb2312");
//随机生成插入位置,根据$times决定插入频率
for ( $i = 0; $i < $times; $i ++ )
{
$arr[] = mt_rand(0, $strlen);
}
$arr = array_unique($arr); //过滤数组重复元素
sort($arr); //对数组重新排序,按照值由小到大
//开始替换
$i = 0;
$str_new = "";
foreach( $arr as $v )
{
$str_new .= mb_substr($str, $i, $v - $i, "gb2312") . $keyword;
$i = $v;
}
$str_new .= mb_substr($str, $i, $strlen - $i, "gb2312");
echo($str_new);
?>
php+socket 实例
作者:admin 日期:2012-04-10
客户端代码:
<?php
// Client
// 设置错误处理
error_reporting (E_ALL);
// 设置处理时间
set_time_limit (0);
$ip = ""; // IP 地址
$port = 1000; // 端口号
$socket = socket_create (AF_INET, SOCK_STREAM, SOL_TCP); // 创建一个SOCKET
if ($socket)
echo "socket_create() 成功!<br>\n";
else
echo "socket_create() 失败:".socket_strerror ($socket)."<br>\n";
PHP 二进制、十进制转换函数
作者:admin 日期:2012-04-10
Asp字符串函数InStrRev
作者:admin 日期:2012-04-10
描述
返回某字符串在另一个字符串中最后出现的位置。
语法
InstrRev(string1, string2[, start[, compare]])
InstrRev 函数的语法有以下参数:
参数 描述
string1 必选。接受搜索的字符串表达式。
string2 必选。被搜索的字符串表达式。
start 可选。数值表达式,用于设置每次搜索的开始位置。如果省略,则默认值为 -1,表示从最后一个字符的位置开始搜索。如果 start 包含 Null,则出现错误。
compare 可选。在计算子字符串时,指示要使用的比较类型的数值。如果省略,将执行二进制比较。有关数值,请参阅“设置”部分。
设置
compare 参数可以有以下值:
常数 Value 描述
vbBinaryCompare 0 执行二进制比较。
vbTextCompare 1 执行文本比较。
vbDatabaseCompare 2 执行基于包含在数据库(在此数据库中执行比较)中的信息的比较。
返回值
InStrRev 返回以下值:
如果 InStrRev 返回
string1 为零长度 0
string1 为 Null Null
string2 为零长度 start
string2 为 Null Null
string2 没有找到 0
在 string1 中找到 string2 找到匹配字符串的位置
start > Len(string2) 0
说明
请注意 InstrRev 函数的语法不同于 Instr 函数的语法。
php替换内容页中的关键字
作者:admin 日期:2012-04-10
<?php
//现在有个需求:给文中的关键字加超链接
//如果有10个相同的关键字,只替换第一个
//如果某关键字A包含另外一个关键字B,则替换关键字B的时候不可替换A中的关键字B
$arrKeywords = array (
0 => array (
0 => '镀锌板卷',
1 => 'http://www.woosteel.com/block/duxinbanjuan'
),
1 => array (
0 => '锌',
1 => 'http://www.woosteel.com/block/xin'
),
2 => array (
0 => '上海',
1 => 'http://www.woosteel.com/shanghai'
),
3 => array (
0 => '叉烧包',
1 => 'http://www.woosteel.com/block/chashaobao'
)
);
$content = "2011年-上海-镀锌板卷-和-锌-的价格分别是多少?2011年-上海-镀锌板卷-和-锌-的价格分别是多少?2011年-上海-镀锌板卷-和-锌-的价格分别是多少?2011年-上海-镀锌板卷-和-锌-的价格分别是多少-叉烧包-?2011年-上海-镀锌板卷-和-锌-的价格分别是多少?2011年-上海-镀锌板卷-和-锌-的价格分别是多少-叉烧包-?";
$content = ReplaceKeywords($content);
echo($content);
/*内容关键字替换**/
function ReplaceKeywords($content)
{
global $arrKeywords;
if ( empty($content) )
{
return($content);
}
$i = 0;
foreach( $arrKeywords as $arr )//遍历关键字
{
if ( strpos($content, $arr[0]) > -1 )//如果找到,则替换为:[Keyword0]、[Keyword1]这种格式的数据,并将找到的关键字放入新的数组
{
$content = preg_replace("/" . $arr[0] . "/i", "[Keyword" . $i . "]", $content);
$arrTemp[] = $arr;
$i ++;
}
}
//die($content);//可以在这里先输出替换后的结果
//再将替换后的数据反替换
$arrLen = count($arrTemp);
for ( $i = 0; $i < $arrLen; $i ++ )//遍历找到的关键字,比如有10个[Keyword0],替换的时候第一个带链接,其余都不带。
{
$content = preg_replace("/\[Keyword" . $i . "\]/i", "<strong><a href=\"" . $arrTemp[$i][1] . "\" target=\"_blank\">" . $arrTemp[$i][0] . "</a></strong>", $content, 1);
$content = preg_replace("/\[Keyword" . $i . "\]/i", $arrTemp[$i][0], $content);
}
return ($content);
}
?>
asp字符串函数大全
作者:admin 日期:2012-04-10
Asc Asc函数提取字符串第一个字母的ANSI字符码。
用法为:result = Asc(string)
其中result是字符码,string是任意有效的字符串表达式。如果string为Empty,则产生一个实时错误。
AscB AscB函数提取字符串的第一个字节。
用法为:result = AscB(string)
其中result是Byte字类,string是任意有效的字符串表达式。如果string为Empty,则产生一个实时错误。
AscW AscW函数提取字符串第一个字母的Unicode字符码。
用法为:result = AscW(string)
其中result是Unicode,string是任意有效的字符串表达式。如果string为Empty,则产生一个实时错误。
InStr InStr函数识别某个记号在字符串中的首字母位置。
用法为:newstart = InStr([start, ]source, token[, compare])
其中newstart时记号在字符串中的位置(如果没有的话则为0),start是查找的起始位置,source是要查找的字符串,token是要定位的字符串,compare是比较类型(0表示二进制比较,1表示忽略大小写的文本比较)。
PHP提交email表单防注入
作者:admin 日期:2012-04-07
<html>
<body>
<?php
function spamcheck($field)
{
//filter_var() sanitizes the e-mail
//address using FILTER_SANITIZE_EMAIL
$field=filter_var($field, FILTER_SANITIZE_EMAIL
);
//filter_var() validates the e-mail
//address using FILTER_VALIDATE_EMAIL
if(filter_var($field, FILTER_VALIDATE_EMAIL
))
{
return TRUE;
}
else
{
return FALSE;
}
}
if (isset($_REQUEST['email']))
{//if "email" is filled out, proceed
//check if the email address is invalid
$mailcheck = spamcheck($_REQUEST['email']);
if ($mailcheck==FALSE)
{
echo "Invalid input";
}
else
{//send email
$email = $_REQUEST['email'] ;
$subject = $_REQUEST['subject'] ;
$message = $_REQUEST['message'] ;
mail("someone@example.com", "Subject: $subject",
$message, "From: $email" );
echo "Thank you for using our mail form";
}
}
else
{//if "email" is not filled out, display the form
echo "<form method='post' action='mailform.php'>
Email: <input name='email' type='text' /><br />
Subject: <input name='subject' type='text' /><br />
Message:<br />
<textarea name='message' rows='15' cols='40'>
</textarea><br />
<input type='submit' />
</form>";
}
?>
</body>
</html>
在上面的代码中,我们使用了 PHP 过滤器来对输入进行验证:
- FILTER_SANITIZE_EMAIL 从字符串中删除电子邮件的非法字符
- FILTER_VALIDATE_EMAIL 验证电子邮件地址
雅虎给出了优化网站加载速度的34条法则
作者:admin 日期:2012-04-07
1.Minimize HTTP Requests 减少HTTP请求
图片、css、script、flash等等这些都会增加http请求数,减少这些元素的数量就能减少响应时间。把多个JS、CSS在可能的情况下写进一个文件,页面里直接写入图片也是不好的做法,应该写进CSS里,利用 CSS sprites 将小图拼合后利用background来定位。
2.Use a Content Delivery Network 利用CDN技术
CDN 确实是好东西,8过服务器提供商的这项服务一般是要收费的,我以前买的国内空间是有这个的但是我当时根本不知道啥用,现在没了。。。
3.Add an Expires or a Cache-Control Header 设置头文件过期或者静态缓存
浏览器会用缓存来减少http请求数来加快页面加载的时间,如果页面头部加一个很长的过期时间,浏览器就会一直缓存页面里的元素。不过这样如果页面里的东西变动的话就要改名字了,否则用户端不会主动刷新,看自己衡量了~ 这项可以通过修改.htaccess文件来实现。
4.Gzip Components Gzip压缩
Gzip格式是一种很普遍的压缩技术,几乎所有的浏览器都有解压Gzip格式的能力,而且它可以压缩的比例非常大,一般压缩率为85%。压缩没压缩,可以到 这里 做下测试。
广告位