调用新浪微薄接口

在调用新浪微薄api的时候参数传入不正确会返回一些代码,总结一下

http://t.sina.com.cn/person/aj_checknick.php?nickname=”.$strName.”& amp;rnd=”.$time这是直接用来请求验证昵称是否在新浪已用,返回的代码是(M01129=>昵称已用,A0006=>昵称可以用,MR0038=>含有非法字符,M0100=>昵称过长)

http://t.sina.com.cn/person/aj_checknick.php?nickname=”.$strName.”& amp;rnd=”.$time;这是直接调用url地址来验证用户邮箱是否在新浪注册的地址,(注意:新浪邮箱不用注册可以直接登录微薄,这个地方验证的时候也能通过,但在注册的时候会报该邮箱已注册)(R01008=>邮箱已存在,A00006=>邮箱可以用,)

有不足或错误的地方,希望大家帮忙指正。

php判断字符串是否全是中文或含有中文

一,判断全是中文

$str="'324是";
if(!eregi("[^\x80-\xff]","$str")){
      echo "全是中文";
}else{
      echo "不是";
}

二,判断含有中文

$str = "中文";
if (preg_match("/[\x7f-\xff]/", $str)) {
      echo "含有中文";
}else{
     echo "没有中文";
}$pattern = '/[^\x00-\x80]/'; 
if(preg_match($pattern,$str)){
	echo "含有中文";
}else{
	echo "没有中文";
}

我这几种方法都是在utf-8下面测试的,别的编码下没有测试过。

PHP与SQL注入攻击

SQL注入攻击是黑客攻击网站最常用的手段。如果你的站点没有使用严格的用户输入检验,那么常容易遭到SQL注入攻击。SQL注入攻击通常通过给站点数据库提交不良的数据或查询语句来实现,很可能使数据库中的纪录遭到暴露,更改或被删除。下面来谈谈SQL注入攻击是如何实现的,又如何防范。

 看这个例子:

// supposed input
$name = “ilia’; DELETE FROM users;”;
mysql_query(“SELECT * FROM users WHERE name=’{$name}’”);

 很明显最后数据库执行的命令是:

SELECT * FROM users WHERE name=ilia; DELETE FROM users

 这就给数据库带来了灾难性的后果–所有记录都被删除了。

 不过如果你使用的数据库是MySQL,那么还好,mysql_query()函数不允许直接执行这样的操作(不能单行进行多个语句操作),所以你可以放心。如果你使用的数据库是SQLite或者PostgreSQL,支持这样的语句,那么就将面临灭顶之灾了。

 上面提到,SQL注入主要是提交不安全的数据给数据库来达到攻击目的。为了防止SQL注入攻击,PHP自带一个功能可以对输入的字符串进行处理,可以在较底层对输入进行安全上的初步处理,也即Magic Quotes。(php.ini magic_quotes_gpc)。如果magic_quotes_gpc选项启用,那么输入的字符串中的单引号,双引号和其它一些字符前将会被自动加上反斜杠\。

 但Magic Quotes并不是一个很通用的解决方案,没能屏蔽所有有潜在危险的字符,并且在许多服务器上Magic Quotes并没有被启用。所以,我们还需要使用其它多种方法来防止SQL注入。

 许多数据库本身就提供这种输入数据处理功能。例如PHP的MySQL操作函数中有一个叫mysql_real_escape_string()的函数,可将特殊字符和可能引起数据库操作出错的字符转义。

 看这段代码:

//如果Magic Quotes功用启用
if (get_magic_quotes_gpc()) {
$name = stripslashes($name);
}else{
$name = mysql_real_escape_string($name);
}

mysql_query(“SELECT * FROM users WHERE name=’{$name}’”);

 注意,在我们使用数据库所带的功能之前要判断一下Magic Quotes是否打开,就像上例中那样,否则两次重复处理就会出错。如果MQ已启用,我们要把加上的\去掉才得到真实数据。

 除了对以上字符串形式的数据进行预处理之外,储存Binary数据到数据库中时,也要注意进行预处理。否则数据可能与数据库自身的存储格式相冲突,引起数据库崩溃,数据记录丢失,甚至丢失整个库的数据。有些数据库如 PostgreSQL,提供一个专门用来编码二进制数据的函数pg_escape_bytea(),它可以对数据进行类似于Base64那样的编码。

 如:

// for plain-text data use:
pg_escape_string($regular_strings);

// for binary data use:
pg_escape_bytea($binary_data);

 另一种情况下,我们也要采用这样的机制。那就是数据库系统本身不支持的多字节语言如中文,日语等。其中有些的ASCII范围和二进制数据的范围重叠。

 不过对数据进行编码将有可能导致像LIKE abc% 这样的查询语句失效。

java中求1到100之间的质数

import static java.lang.Math.*;
 
public class work {
    public static void main(String[] args) {
     // 用来标记哪个是质数
     boolean[] flag = new boolean[100];
     // 用来确定计算次数
     int n = 0;
     // 假定所有的数都是质数
     for (int i=0; i<100; i++) {
      flag[i] = true;
     }
     // 排除非质数
     for (int i=2; i<=sqrt(100); i++){
      if (flag[i]) {
          for (int j=i; j*i<100; j++) {
           flag[i*j] = false;
           n = n+1;
          } 
      }
     }
     // 显示计算次数
     System.out.println("共执行 " + n + " 次计算!");
     // 显示结果
     for (int i=1; i<100; i++) {
      if (flag[i] == true) {
       System.out.println(i);
      }
     }
    }
}

php去除重复的字

方法一:

 $text = '数组aabbccdd';
 $text_filter = '';
 $filter = array();
 $len = mb_strlen($text, 'utf-8');
 for ($i = 0; $i<$len; $i++) {
         $char = mb_substr($text, $i, 1, 'utf-8');
         if (!isset($filter[$char])) {
                 $text_filter .= $char;
                 $filter[$char] = $char;
         }
 }
 echo $text_filter;

方法二:

  $string= '数组aabbccdd';
  function str_split_utf8($str) {
  $split=1;
  $array = array();
  for ( $i=0; $i < strlen( $str ); ){
  $value = ord($str[$i]);
  if($value > 127){
  if($value >= 192 && $value <= 223)
  $split=2;
  elseif($value >= 224 && $value <= 239)
  $split=3;
  elseif($value >= 240 && $value <= 247)
  $split=4;
  }else{
  $split=1;
  }
  $key = NULL;
  for ( $j = 0; $j < $split; $j++, $i++ ) {
  $key .= $str[$i];
  }
  array_push( $array, $key );
  }
  return $array;
  }
  print_r(array_unique(str_split_utf8($string)));

方法三:

就是把每一个字分割在数组里再用array_unique()这个函数。

java数组初始化

数组初始化:
动态初始化:
数组定义与为数组元素分配空间和赋值的操作分开进行。
静态初始化:
在定义数组的同时就为数组元素分配空间并赋值。
数组元素的默认初始化:
数组是引用类型,它的元素相当于类的成员变量,因此数组分配空间后,每个元素也被按照成员变量的规则被隐式初始化。

public class TestArrayDynamic {
public static void main(String[] args) {
int[] a = new int[3];
a[0] = 1;
a[1] = 2;
a[2] = 3;//动态
int[] b= {1,2,3};//静态
}
}

Java基础学习一

以前在学校学习了一点点java, 几年都是没有见面了,现在看别人都在学,我也想学了,想想自己也不能只会php呀,也要多学点东西呀,今天我就开始认真的学习java;对了,高手和前辈也要帮忙的呀,首先在这里谢谢了。

1.Java语言的特点:面向对象,跨平台,多线程

2.数据类型:
Java编程语言定义了八个原始类型
- 逻辑类 boolean
- 文本类 char
- 整数类 byte, short, int, long
- 浮点类 double, float

3.面向对象:
封装:类 
继承:单一继承 
多态:重写(Overridding)与重载(Overloading)
在子类中,方法的参数个数和返回值都与父类相同,称为重写
在同一个类中,方法的参数不同,称为重载

4.作用域:
private 子类不能继承
default 如果不在同一包中,子类不能继承
protected
public

5.栈与堆:原始数据类型存放在栈里,对象数据类型存放在堆中,栈中存放堆中的地址。

6.变量比较:==比较的是栈,原始数据类型相同,但是引用类型值不等,equals比较的是堆,特例是string,java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。

7.变量复制:原始数据类型复制的是值,引用数据类型复制的是栈中的引用,所以当一个修改的时候,会影响另一个。对象复制:Object.clone()方法

8.引用传递和值传递:原始数据类型传递的是值,引用数据类型传递的是栈中的引用

9.异常:(Java.lang.Exception)检查时异常,(Java.lang.RuntimeException)运行时异常,((java.lang.Error)错误,检查时异常必须处理

2011年第一个工作日

今天是2011年第一个工作日,新的一年,新的开始。

希望自己工作顺顺利利,日子过的舒舒服服,心情天天开开心心。

祝家人在新的一年里身体健健康康,祝朋友们都能发大财。

最后祝我认识的人和认识我的人,在2011年都能一切顺到底,哈哈!!!

网站重定向详解

301重定向的好处
传递权重:举例子网页A用了301重定向到网页B,搜索引擎可以肯定网页A永久性改变地址,或者说实际上不存在了,搜索引擎就会把网页B当做唯一有效的地址。并且会把A积累的页面权重传递到网页B中。目前google会传递大部分权重,但不是百分之百。百度会传递所有权重。

以前认为301重定向不重要,跟URL转发差不多,但现在知道是错误的,当你在域名改变时,程序和内容不变,像这种情况就有必要用301重定向,301重定向并非单纯的网站跳转,还能把域名的权重很好的转移到新域名上,否则你就什么都没有了,又要从头再来。

1、linux的虚拟主机Apache的服务器,需要支持.htaccess 这个文件。如果支持,先将2个域名都解析到同一个IP,然后在.htaccess文件开始处加入一下规则:

    RewriteCond %{http_host} ^huaidong.net [NC]
    RewriteRule ^(.*)$ http://www.huaidong.net/$1[R=301,L]

2、window的虚拟主机IIS的服务器,需要有安装 ISAPI_Rewrite这个组件。如果支持,先将2个域名都解析到同一个IP,然后在httpd.ini文件开始处加入以下规则:

    RewriteCond Host: ^huaidong\.net$
    RewriteRule (.*) http\://www\.huaidong\.net$1 [R,I]

当然,如果以上两种方法都不能实施,那只能用URL转发来完成,在这里提醒大家,带www和不带www记得都要解析或者用以上方法做301重定向,因为从用户体验的角度考虑,有些人习惯输www,有些人不习惯输www。

Ajax常见问题有哪些?

今天我来说一下经常在使用js时遇到的三个问题,网友们也可以给我留言写上更多的常见问题。

一,js脚本缓存问题
答:这个问题是大家遇到最常见问题之一,因为修改了js内容调试的时候
并不能显示新写代码的结果,是因为js为了加速页面执行,当前页面会使用缓存保持
当前调用的相同连接。为了开发时调试方便可以在连接地址的后面增加一个随机函数。

如原地址:header.js 增加随机后 header.js?12581

二,本地调试js脚本不起作用
答:因为使用ajax传递参数的时候需要head支持,所以我们只有在站点下才可以
成功,比如我们放在Apache下面或者IIS下面进行调试。

三,调试代码查找错误困难
答:这是js调试存在已久的问题,简单点我们可以使用ie默认提示的错误框,还有就
是我们可以使用DW CS4提供的纠正错误,或者通过专业的插件如:firbug 等