预览模式: 普通 | 列表

php、asp以“流格式”下载服务器端文件

解决WORD,EXCEL,TXT,图片等文件类型直接在IE中被打开的问题

ASP/Visual Basic代码
  1. <%   
  2.     Function downFileFromServer(showFileName, downFilePath)   
  3.         response.Clear   
  4.         response.Buffer = true   
  5.         Set ads = Server.CreateObject("ADODB.Stream")   
  6.         ads.Type = 1   
  7.         ads.Mode = 3   
  8.         ads.Open   
  9.         ads.LoadFromFile downFilePath   
  10.         response.AddHeader("Content-Encoding""None")   
  11.         response.AddHeader("Cache-Control""Private")   
  12.         response.AddHeader("Content-Length", ads.Size)   
  13.         response.AddHeader("Content-Disposition""attachment; filename=" & showFileName)   
  14.         response.ContentType = "application/octet-stream"  
  15.         response.BinaryWrite(ads.Read(ads.Size))   
  16.         ads.Close   
  17.         Set ads = nothing   
  18.         response.Flush   
  19.         response.End  
  20.     End Function  
  21.   
  22.     Call downFileFromServer("abc.test", Server.MapPath("test.asp"))   
  23. %>   
  24.   

 

PHP代码
  1. <?php   
  2.     function downFileFromServer($showFileName$downFilePath)   
  3.     {   
  4.         if(file_exists($downFilePath))   
  5.         {   
  6.             if(is_readable($downFilePath))   
  7.             {   
  8.                 if(Trim($showFileName) == '')   
  9.                 {   
  10.                 $showFileName = 'undefined';   
  11.                 }   
  12.                 ob_start();   
  13.                 ob_clean();   
  14.                 $file_size = filesize($downFilePath);   
  15.                 header('Content-Encoding:none');   
  16.                 header('Cache-Control:private');   
  17.                 header('Content-Length:' . $file_size);   
  18.                 header('Content-Disposition:attachment; filename=' . $showFileName);   
  19.                 header('Content-Type:application/octet-stream');   
  20.                 readfile($downFilePath);   
  21.                 ob_flush();   
  22.             }   
  23.         }   
  24.     }   
  25.   
  26.     //Sample    
  27.     downFileFromServer('a.abc''test.php');   
  28. ?>   

查看更多...

Tags: asp php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1666

php遍历文件夹和文件

<?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) );
?>

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1628

PHP中的escape函数以及Jsonp实例

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.')';


 

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1715

PHP伪原创之随机段落

<?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]);
 }
?>

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2745

php随机位置向字符串插入关键字

<?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);

?>

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2531

php+socket 实例

客户端代码:

<?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";

查看更多...

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1852

PHP 二进制、十进制转换函数

bindec() -- 二进制转换为十进制
decbin() -- 十进制转换为二进制
dechex() -- 十进制转换为十六进制
decoct() -- 十进制转换为八进制
hexdec() -- 十六进制转换为十进制
octdec() -- 八进制转换为十进制
base_convert()-- 在任意进制之间转换数字

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1818

Asp字符串函数InStrRev

描述
返回某字符串在另一个字符串中最后出现的位置。
语法
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 函数的语法。

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1781

php替换内容页中的关键字

<?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);
 }
?>

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1864

asp字符串函数大全

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表示忽略大小写的文本比较)。

查看更多...

Tags: asp

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 1795

PHP提交email表单防注入

<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 验证电子邮件地址

Tags: php

分类:技术文章 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2722

  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%。压缩没压缩,可以到 这里 做下测试。

查看更多...

分类:业界文摘 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 2008

 广告位

↑返回顶部↑