PHP实现DES加密,解决乱码

PHP要实现DES加密,大体上有2个思路。一是用扩展,一是原生PHP实现。

阅读详细 »

curl模拟浏览器,ip,来源,进行网站采集的实现方法

curl模拟浏览器,ip,来源,进行网站采集的实现方法

阅读详细 »

PHP设置页面限制ip和来源访问的方法

PHP设置页面限制ip和来源访问的方法

阅读详细 »

PHP采集器snoopy.class.php应用详解

Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单。

阅读详细 »

php下载文件时修改文件名

下载地址:

/download.php?controller=down_file&file=1.zip

然后在Controller里控制输出名就可以实现

$file = './路径/1.zip';
filename = '2.zip';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header("Content-type:text/html;charset=utf-8");
header('Content-Disposition: attachment; filename='. $filename);
header('Content-Transfer-Encoding: binary');
header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
readfile($file);
exit;

阅读详细 »

高性能apache服务器配置MPM模块

1.
启用MPM模块配置文件

我们需要在httpd.conf文件中启用该配置文件,如下所示:

# Server-pool management (MPM specific)Include conf/extra/httpd-mpm.conf (去掉该行前面的注释符号”#”)
阅读详细 »

一个websocket的聊天室程序(php server)

通过命令行执行php文件  
如:D:\wamp\bin\php\php5.5.12\php -q D:\wamp\www\127.0.0.2\websocket\server.php 

通过本地web服务器访问 http://127.0.0.1/websocket/index.html即可

notice: 
需要php5.3或以上的执行环境,和一个web服务器如apache
浏览器需支持html5 web socket
这里监听 socket端口 9505,如遇到端口被占用可能需要在这两个文件内修改端口或者杀死相应端口进程

阅读详细 »

php 静态方法为什么不能调用this

一般方法调用,都是使用$obj->method();
这里的method方法中 $this 很明显就是 $obj
但是静态方法调用,我们一般使用 
Object::method();
没有进行实例化,所以根本没有$this对象

thinphp5 用input()方法接受 get/post数组 报错问题

症状:

<form>
<input name="id[]" value="1"/>
    <input name="id[]" value="2"/>
    <input name="id[]" value="3"/>
    <input name="id[]" value="4"/>
<button type="submit">提交</button>
</form>

如上表单,提交的id PHP再用 $_POST[‘id’] 接收后,会得到一个数组。

再用tp5 的   input(‘id’); 接受的时候,会报错。

后来参看手册后,发现tp5  使用 input(‘id/a‘) ; 可解决。 阅读详细 »

php环境wamp2.5下载地址

php环境wamp2.5下载地址

https://sourceforge.net/projects/wampserver/files/WampServer%202/Wampserver%202.5/

WampServer 2.5 – 32 and 64 bits

Be sure that you have installed Visual C++ Redistributable for Visual Studio 2012 : VC11 vcredist_x64/86.exe
http://www.microsoft.com/en-us/download/details.aspx?id=30679

Don’t Use previous WampServer Extensions/Addons. 
There are no more compatible with the new wampserver version’s (VC11)

Apache     : 2.4.9
MySQL      : 5.6.17
PHP        : 5.5.12
PHPMyAdmin : 4.1.14
SqlBuddy   : 1.3.3
XDebug     : 2.2.5

Source: readme.txt, updated 2014-05-01

通过php下载文件并重命名

通过php下载文件并重命名

$filename = dirname(__FILE__) . '/oldfilename.jpg';
$out_filename = 'newfilename.jpg';
if( ! file_exists($filename)){
  echo 'Not Found' . $filename;
  exit;
} else {
  // We'll be outputting a file
  header('Accept-Ranges: bytes');
  header('Accept-Length: ' . filesize($filename));
  // It will be called
  header('Content-Transfer-Encoding: binary');
  header('Content-type: application/octet-stream');
  header('Content-Disposition: attachment; filename=' . $out_filename);
  header('Content-Type: application/octet-stream; name=' . $out_filename);
  // The source is in filename
   if(is_file($filename) && is_readable($filename)){
    $file = fopen($filename, "r");
    echo fread($file, filesize($filename));
    fclose($file);
   }
  exit;
}

Apache用.htaccess来实现强制https访问

首先需要帮保证Apache已经开启了  模块

查找 httpd.conf 文件

找到

#LoadModule rewrite_module modules/mod_rewrite.so

去掉前边的#号 ,重启Apache服务器。

———————————-

然后是关于.htaccess文件的设置。

用Apache的.htaccess的重定向规则来实现http强制跳转到https访问网站。
重要提示:必须将代码放到.htaccess文件内容的最前面,以保证重定向优先权。

代码如下:

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.domain.com/$1 [R,L]

或者

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.domain.com/$1 [R=301,L]

或者

RewriteEngine on
RewriteBase /
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

如果是在子目录,可以用
RewriteCond %{SERVER_PORT} 80RewriteRule ^(.*)$ https://www.domain.com/subfolder [R,L]

RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteCond %{REQUEST_URI} subfolder
RewriteRule ^(.*)$ https://www.domain.com/subfolder [R,L]

将以上代码复制到.htaccess中即可。

页面滚动到底部 ajax加载内容代码 示例代码

页面滚动到底部 ajax加载内容代码:

html结构:

    <div class="ipshowListA">
        <ul class="clearfix">
        <!--<li class="item">内容块</li>-->
        </ul>
    </div>
    
    <div class="pagesA">
        <div class="more" data-url = "jsonlist.php?page=1" >点击加载更多</div>
        <div class="loading"><!--数据加载中...--></div>
        <div class="nodata">没有更多数据了...</div>
    </div>

js代码:

// JavaScript Document
$(function(){
    
    var $btn_more    = $('.pagesA .more');//更多按钮
    var $btn_loading = $('.pagesA .loading');//载入中
    var $btn_nodata  = $('.pagesA .nodata');//没有数据了
    var $box         = $('.ipshowListA ul');//容器
    var lock = false;
    var nexturl =  $btn_more.data('url');//第一次url
    
    function _more(){
        $btn_more.show();
        $btn_loading.hide();
        $btn_nodata.hide();
    }
    function _loading(){
        $btn_more.hide();
        $btn_loading.show();
        $btn_nodata.hide();
    }
    function _nodata(){
        $btn_more.hide();
        $btn_loading.hide();
        $btn_nodata.show();
    }
    //点击触发 (ajax加载数据)
    $btn_more.on('click',function(){
        ajaxLoad();                       
    });
    //距离底部300触发  (ajax加载数据)
    $(window).on('scroll',function(){
        if( $(document).height() - $(window).scrollTop() - $(window).height() < 300 ){
            ajaxLoad(); 
        }                    
    })
    
    
    //ajax加载数据
    function ajaxLoad(){
        //锁
        if( lock ){return false; }else{ lock = true; }
        _loading();
        $.ajax({
            url:nexturl,
            type:'get',
            dataType:'json',
            success:function(d){
                //{"error":0 , "msg":"ok" , "html":"6666", "nexturl":"jsonlist.php?page=1"} 
                if(d.error == 0 ){
                    //加载成功
                    $box.append( d.html );
                    lock = false;
                    _more();
                    nexturl = d.nexturl; //更新下一页地址
                }else if(d.error == 1 ){
                    //没有数据了
                    _nodata();
                    
                }else{
                    //其他错误
                    alert( d.msg );
                    lock = false;
                }
                
            },
            error:function( a,b,c){
                console.log('ajax错误:', a,b,c );
            }
        })
        
    }
});

php代码:

<?php 
sleep(3);//模拟网络延时 3秒

//返回的 json数据结构
//{"error":0 , "msg":"ok" , "html":"6666", "nexturl":"jsonlist.php?page=1"} 


$page = $_GET['page'];



if( $page > 5 ){
    //没有数据了 
    //{"error":1 , "msg":"没有数据了" , "html":"", "nexturl":""} 
    $j = array();
    $j['error'] = 1;
    $j['msg'] = '没有数据了';
    $j['nexturl'] = '';
    $j['html'] = '';
    
    die( json_encode($j) ); 

}
/////////////////////////////////////////////////////////////////////////////


$page++;

$j = array();
$j['error'] = 0;
$j['msg'] = 'ok';
$j['nexturl'] = 'jsonlist.php?page=' . $page;
$j['html'] = '
    <li class="item">内容块</li>
    <li class="item">内容块</li>
    <li class="item">内容块</li>
    ...
';

die( json_encode($j) );

PHP怎么禁止代理访问

PHP禁止代理访问

if($_SERVER['HTTP_PROXY_CONNECTION'] || $_SERVER['HTTP_VIA'] || $_SERVER['HTTP_USER_AGENT_VIA'] || $_SERVER['HTTP_X_FORWARDED_FOR'] || $_SERVER['HTTP_PROXY_CONNECTION'] || $_SERVER['HTTP_CACHE_CONTROL'] || $_SERVER['HTTP_CACHE_INFO']) {
        die("请勿使用代理服务器访问, 谢谢");
}

header(“Content-type:text/html;charset=utf-8”);什么意思???

header("Content-type:text/html;charset=utf-8");

设置页面内容是html编码格式是utf-8

PHP Ajax 跨域问题最佳解决方案

本文通过设置Access-Control-Allow-Origin来实现跨域。
例如:客户端的域名是client.runoob.com,而请求的域名是server.runoob.com。
如果直接使用ajax访问,会有以下错误:
XMLHttpRequest cannot load http://server.runoob.com/server.php. No ‘Access-Control-Allow-Origin’ header is present on the requested resource.Origin ‘http://client.runoob.com’ is therefore not allowed access.

1、允许单个域名访问
指定某域名(http://client.runoob.com)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:
header(‘Access-Control-Allow-Origin:http://client.runoob.com’);

2、允许多个域名访问
指定多个域名(http://client1.runoob.com、http://client2.runoob.com等)跨域访问,则只需在http://server.runoob.com/server.php文件头部添加如下代码:
$origin = isset($_SERVER[‘HTTP_ORIGIN’])? $_SERVER[‘HTTP_ORIGIN’] : ”;  

  

$allow_origin = array(  

    ‘http://client1.runoob.com’,  

    ‘http://client2.runoob.com’  

);  

  

if(in_array($origin, $allow_origin)){  

    header(‘Access-Control-Allow-Origin:’.$origin);       

3、允许所有域名访问
允许所有域名访问则只需在http://server.runoob.com/server.php文件头部添加如下代码:
header(‘Access-Control-Allow-Origin:*’); 

支付宝支付有测试模式吗?支付宝支付测试模式。

支付宝支付测试模式。
支付宝沙箱环境:http://sandbox.alipaydev.com/index.htm

如何调试支付宝接口?https://cshall.alipay.com/enterprise/help_detail.htm?help_id=477446

不知道你说的插件是跟什么程序整合:支付宝有提供比较常用的集成SDK https://b.alipay.com/order/techService.htm

php 中奖概率算法

<?php
/**
 *php 中奖概率算法
 *
 */
function get_zj( $jp ,$glname = 'gl'){
	$sum = 0;
	foreach($jp as $k =>$v ){
		$sum += $v[$glname];
	}

	$R = rand(1,$sum);//获取随机数

	foreach( $jp as $k => $v){
		if( $R <= $v[$glname] ){
			return $v;
		}
		$R = $R - $v[$glname] ;
	}

}


//使用方法
//模拟一个从数据库中读取的 中奖配置   gl 为 中奖的概率 
//例如array( 'gl' => 10 , 'title' => '一等奖');的中奖概率  =  10 / (10+20+30+40)
$jp = array();
$jp[] = array( 'gl' => 10 , 'title' => '一等奖');
$jp[] = array( 'gl' => 20 , 'title' => '二等奖');
$jp[] = array( 'gl' => 30 , 'title' => '三等奖');
$jp[] = array( 'gl' => 40 , 'title' => '未中奖');


//调用 中奖概率函数  
//返回中奖 信息数组 例如:array( 'gl' => 10 , 'title' => '一等奖');
$zj = get_zj( $jp );

//输出数组
var_dump($zj);

php 路径中的”\”和”/”的区别

php 路径中的”\”和”/”的区别

php中路径的斜杠有的是”/”,有的是”\”
当用 echo $_SERVER[‘PHP_SELF’]; 时返回:/test/01.php
当用 echo __FILE__; 时返回:d:\wamp\www\test\01.php
很多同学这这里都会困惑 都是表示路径。
两种斜杠有什么区别呢?运用的时候需要注意什么?

这里给大家详细解释一下。

首先,先清除路径分类两类,
    第一类,是网络地址URL,指的是通过网络如何访问。
    第二类,是物理地址path,也称磁盘地址,是文件系统的地址,是指文件保存在磁盘的那个位置。

在网络地址URl中,目录中的间隔符是正斜线(/)。

在物理地址(磁盘地址)中,受到不同的操作系统影响。
在UNIX环境下,目录中的间隔符是正斜线(/)。
如果你使用的是WINDOWS平台,可以使用正斜线(/)或者反斜线(\)。

如果使用反斜线,就必须使用转义字符(escape,标注为一个特殊字符),要转义一个字符,只需简单地在其前面添加一个反斜线(\)。

如下代码所示:

$fp=fopen(” c:\\data\\info.txt” , ” r” );

建议使用正斜线(/),因为这意味着代码不需要任何修改就可以在Windows和UNIX机器上运行。而反斜线(\)意味着代码只能在Windows机器上运行。

如把$fp更改成$fp=fopen(” c:/data/info.txt” ,” r” );

这样这行代码就都可以在Windows和UNIX机器上运行了。

Kindeditor 远程图片本地化 PHP

首先KindEditor这个编辑器带有远程图片上传功能
 但是因为远程图片肯定会有失效的一天
所以我想能不能在提交的同时将KindEditor编辑框内的所有远程图片本地化在调用 而不是调用远程图片
设提交数据获取到 $htmlData = $_POST[“content1”];
则有

$htmlData = $_POST["content1"];
preg_match_all("/<.+?>/s", strip_tags($htmlData, "<img>"), $r); //获取全部 img 标记作为替换本地文件时的依据
foreach($r[0] as $i=>$f) {
  preg_match("/src="([^"]+)"/i", $f, $u); //获取远程图片的url
  $s = file_get_contents($u[0]); //读取远程图片
  $fn = "按你自己规则产生的文件名";
  file_put_contents($fn, $s); //写入本地
  $t[$i] = "配好的url的文件名";
}
$htmlData = str_replace($r[0], $t, $htmlData); //替换回文档