2017年6月

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本,说白了就是不同域名之间的相互访问。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

所谓同源是指,域名,协议,端口均相同,比如:

http://www.123.com/index.html 调用 http://www.123.com/server.PHP (非跨域)

http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)

http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)

http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)

请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

解决办法:

1、JSONP:

使用方式参考下面网址,但是要注意JSONP只支持GET请求,不支持POST请求。
http://www.cnblogs.com/2050/p/3191744.html(这篇文章总结的挺到位)
http://blog.csdn.net/joyhen/article/details/21631833(两篇足够了解)
2、代理:

例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php(例如在你的www.123.com/server.php中写一个curl),由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。

3、PHP端修改header(XHR2方式)

在php接口脚本中加入以下两句即可:

header('Access-Control-Allow-Origin:*');//允许所有来源访问

header('Access-Control-Allow-Method:POST,GET');//允许访问的方式

//把字符串 "Hello world!" 中的字符 "world" 替换为 "Shanghai":
str_replace("world","Shanghai","Hello world!");

//判断某字符串中是否包含某字符串的方法
if(strpos('www.idc-gz.com','idc-gz') !== false){echo '包含';}

去空格或或其他字符:
▶trim() 删除字符串两端的空格或其他预定义字符
"$str = ""\r\nHello World!\r\n"";
echo trim($str);"
目标字串 清除后的字符串
▶rtrim() 删除字符串右边的空格或其他预定义字符
"$str = ""Hello World!\n\n"";
echo rtrim($str);"
▶chop() rtrim()的别名
▶ltrim() 删除字符串左边的空格或其他预定义字符
"$str = ""\r\nHello World!"";
echo ltrim($str);"
▶dirname() 返回路径中的目录部分
echo dirname("c:/testweb/home.php");
一个包含路径的字符串 返回文件路径的目录部分//c:/testweb
字符串生成与转化:
▶str_pad() 把字符串填充为指定的长度
"$str = ""Hello World"";
echo str_pad($str,20,""."");"
要填充的字符串|新字符串的长度|供填充使用的字符串,默认是空白 完成后的字符串
▶str_repeat() 重复使用指定字符串
echo str_repeat(".",13);
要重复的字符串|字符串将被重复的次数 13个点
▶str_split() 把字符串分割到数组中
print_r(str_split("Hello"));
要分割的字符串|每个数组元素的长度,默认1 拆分后的字符串数组
▶strrev() 反转字符串
echo strrev("Hello World!");
目标字符串 颠倒顺序后的字符串!dlroW olleH
▶wordwrap() 按照指定长度对字符串进行折行处理
"$str = ""An example on a long word is: Supercalifragulistic"";
echo wordwrap($str,15);"
目标字符串|最大宽数 折行后的新字符串
▶str_shuffle() 随机地打乱字符串中所有字符
echo str_shuffle("Hello World");
目标字符串 顺序打乱后的字符串
▶parse_str() 将字符串解析成变量
"parse_str(""id=23&name=John%20Adams"",$myArray);
print_r($myArray);"
要解析的字符串|存储变量的数组名称
"返回Array(
[id] => 23
[name] => John Adams)"
▶number_format() 通过千位分组来格式化数字
"echo number_format(""1000000"");
echo number_format(""1000000"",2);
echo number_format(""1000000"",2,"","",""."");"
要格式化的数字|规定多少个小数|规定用作小数点的字符串|规定用作千位分隔符的字符串"
1,000,000
1,000,000.00
1.000.000,00"
大小写转换:
▶strtolower() 字符串转为小写
echo strtolower("Hello WORLD!");
目标字符串 小写字符串
▶strtoupper() 字符串转为大写
echo strtoupper("Hello WORLD!");
大写字符串
▶ucfirst() 字符串首字母大写
echo ucfirst("hello world");
Hello world
▶ucwords() 字符串每个单词首字符转为大写
echo ucwords("hello world");
Hello World
html标签关联:
▶htmlentities() 把字符转为HTML实体
"$str = ""John & 'Adams'"";
echo htmlentities($str, ENT_COMPAT);"
John & 'Adams'
▶htmlspecialchars() 预定义字符转html编码
▶nl2br() \n转义为
标签
echo nl2br("One line.\nAnother line.");
处理后的字符串
▶strip_tags() 剥去 HTML、XML 以及 PHP 的标签
echo strip_tags("Hello world!");
▶addcslashes() 在指定的字符前添加反斜线转义字符串中字符
"$str = ""Hello, my name is John Adams."";
echo $str;
echo addcslashes($str,'m');"
目标字符串|指定的特定字符或字符范围
▶stripcslashes() 删除由addcslashes()添加的反斜线
echo stripcslashes("Hello, \my na\me is Kai Ji\m."); 目标字符串
Hello, my name is Kai Jim.
▶addslashes() 指定预定义字符前添加反斜线
$str = "Who's John Adams?";echo addslashes($str);
把目标串中的' " \和null进行转义处理
▶stripslashes() 删除由addslashes()添加的转义字符
echo stripslashes("Who\'s John Adams?");
清除转义符号Who's John Adams?
▶quotemeta() 在字符串中某些预定义的字符前添加反斜线
"$str = ""Hello world. (can you hear me?)"";
echo quotemeta($str);"
Hello world. (can you hear me?) ". \ + * ? [] ^ $ () "
▶chr() 从指定的 ASCII 值返回字符
echo chr(052);
ASCII 值 返回对应的字符//*
▶ord() 返回字符串第一个字符的 ASCII 值
echo ord("hello");
字符串 第一个字符的 ASCII 值
字符串比较:
▶strcasecmp() 不区分大小写比较两字符串
echo strcasecmp("Hello world!","HELLO WORLD!");
两个目标字符串 大1|等0|小-1
▶strcmp() 区分大小写比较两字符串
▶strncmp() 比较字符串前n个字符,区分大小写
int strncmp ( string $str1 , string $str2 , int $len )
▶strncasecmp() 比较字符串前n个字符,不区分大小写
int strncasecmp ( string $str1 , string $str2 , int $len )
▶strnatcmp() 自然顺序法比较字符串长度,区分大小写
int strnatcmp ( string $str1 , string $str2 ) 目标字符串
▶strnatcasecmp() 自然顺序法比较字符串长度,不区分大小写
int strnatcasecmp ( string $str1 , string $str2 )
字符串切割与拼接:
▶chunk_split() 将字符串分成小块
str chunk_split(str $body[,int $len[,str $end]])
$body目标字串,$len长度,$str插入结束符 分割后的字符串
▶strtok() 切开字符串
str strtok(str $str,str $token)
目标字符串$str,以$token为标志切割 返回切割后的字符串
▶explode() 使用一个字符串为标志分割另一个字符串
array explode(str $sep,str $str[,int $limit])
$sep为分割符,$str目标字符串,$limit返回数组最多包含元素数 字符串被分割后形成的数组
▶implode() 同join,将数组值用预订字符连接成字符串
string implode ( string $glue提供一个连接字符或者字符串 , array $pieces被连接的数组 )
$glue默认,用''则直接相连
▶substr() 截取字符串
string substr ( string $string , int $start [, int $length ] )
字符串查找替换:
▶str_replace() 字符串替换操作,区分大小写
mix str_replace(mix $search,,mix $replace,mix $subject[,int &$num])
$search查找的字符串,$replace替换的字符串,$subject被查找字串,&$num 返回替换后的结果
▶str_ireplace() 字符串替换操作,不区分大小写
mix str_ireplace ( mix $search , mix $replace , mix $subject [, int &$count ] )
$search查找的字符串,$replace替换的字符串,$subject被查找字串,&$num 返回替换后的结果
▶substr_count() 统计一个字符串,在另一个字符串中出现次数
"int substr_count ( string $haystack , string $needle [, int $offset = 0 [, int $length ]] )
"
▶substr_replace() 替换字符串中某串为另一个字符串
mixed substr_replace ( mixed $string , string $replacement , int $start [, int $length ] )
▶similar_text() 返回两字符串相同字符的数量
int similar_text(str $str1,str $str2)
两个比较的字符串 整形,相同字符数量
▶strrchr() 返回一个字符串在另一个字符串中最后一次出现位置开始到末尾的字符串
string strrchr ( string $haystack , mixed $needle 搜索字符串)
▶strstr() 返回一个字符串在另一个字符串中开始位置到结束的字符串
string strstr ( string $str被搜索的字符串, string $needle搜索字符串 , bool $before_needle )
▶strchr() strstr()的别名,返回一个字符串在另一个字符串中首次出现的位置开始到末尾的字符串
string strstr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
▶stristr() 返回一个字符串在另一个字符串中开始位置到结束的字符串,不区分大小写
string stristr ( string $haystack , mixed $needle [, bool $before_needle = false ] )
▶strtr() 转换字符串中的某些字符
string strtr ( string $str , string $from , string $to )
▶strpos() 寻找字符串中某字符最先出现的位置
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )
▶stripos() 寻找字符串中某字符最先出现的位置,不区分大小写
int stripos ( string $haystack , string $needle [, int $offset ] )
▶strrpos() 寻找某字符串中某字符最后出现的位置
int strrpos ( string $haystack , string $needle [, int $offset = 0 ] )
▶strripos() 寻找某字符串中某字符最后出现的位置,不区分大小写
int strripos ( string $haystack , string $needle [, int $offset ] )
▶strspn() 返回字符串中首次符合mask的子字符串长度
int strspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
▶strcspn() 返回字符串中不符合mask的字符串的长度
int strcspn ( string $str1 , string $str2 [, int $start [, int $length ]] )
$str1被查询,$str2查询字符串,$start开始查询的字符,$length查询长度 返回从开始到第几个字符
字符串统计:
▶str_word_count() 统计字符串含有的单词数
mix str_word_count(str $str,[])
目标字符串 统计处的数量
▶strlen() 统计字符串长度
int strlen(str $str)
目标字符串 整型长度
▶count_chars() 统计字符串中所有字母出现次数(0..255)
mixed count_chars ( string $string [, int $mode ] )
字符串编码:
▶md5() 字符串md5编码 "$str = ""Hello"";
echo md5($str);
"

问题描述:用的好好的,突然断了,重启一下MySQL(service mysql restart),问题得到暂时解决,不到半天又崩了。。。
解决方法:(问题不一定一样)我的查看MySQL错误日志(我的在var/log/mysql/error.log)发现有十多张表is marked as crashed and should be repaired(表损坏,需要修复)
首先找到你的数据库文件(在数据库中执行 show variables like '%datadir%';就会显示数据库文件的路径),看看出问题的表在哪个数据库中,然后进入到这个数据库,比如我的:myisamchk -f /var/lib/mysql/we7/*.MYI,即可;
第二种(我的是微擎报的这个错):
进入到命令行界面输入sql:repair table your_table_name USE_FRM;即可修复
修复哪张表就换成哪个表名

//输出的文件类型为excel  
    header("Content-type:application/vnd.ms-excel");  
    //提示下载  
    header("Content-Disposition:attachement;filename=Report_".date("Ymd").".xls");  
  
    //报表数据  
    $ReportArr = array(    array(1,2,3,4,5),  
                        array('A','B','C','D','E'),  
                        array('up','down','left','right','center'),  
                        array('欢','迎','光','临','我','的','百','度','空','间')  
                    );  
    $ReportContent = '';  
    $num1 = count($ReportArr);  
    for($i=0;$i<$num1;$i++){  
        $num2 = count($ReportArr[$i]);  
        for($j=0;$j<$num2;$j++){  
            //ecxel都是一格一格的,用\t将每一行的数据连接起来  
            $ReportContent .= '"'.$ReportArr[$i][$j].'"'."\t";  
        }  
        //最后连接\n 表示换行  
        $ReportContent .= "\n";  
    }  
    //用的utf-8 最后转换一个编码为gb  
    $ReportContent = mb_convert_encoding($ReportContent,"gb2312","utf-8");  
    //输出即提示下载  
    echo $ReportContent;

第二种参考(选自微擎投票:自己参考用的)
//生成excel表格

protected function exportexcel($data=array(),$title=array(),$filename='report'){
    header("Content-type:application/octet-stream");
    header("Accept-Ranges:bytes");
    header("Content-type:application/vnd.ms-excel");  
    header("Content-Disposition:attachment;filename=".$filename.".xls");
    header("Pragma: no-cache");
    header("Expires: 0");
    //导出xls 开始
    if (!empty($title)){
        foreach ($title as $k => $v) {
            $title[$k]=iconv("UTF-8", "GB2312",$v);
        }
        $title= implode("\t", $title);
        echo "$title\n";
    }
    if (!empty($data)){
        foreach($data as $key=>$val){
            foreach ($val as $ck => $cv) {
                $data[$key][$ck]=iconv("UTF-8", "GB2312", $cv);
            }
            $data[$key]=implode("\t", $data[$key]);
            
        }
        echo implode("\n",$data);
    }
}