0%

前言:
继续学习php的高级基础
过程:

1.session:
session_start();(写在html标签之前)
set:$_SESSION[‘var_name’]=1;
get: echo $_SESSION[‘var_name’];
isset可以用来判断是否设置了这个session变量。
终结:unset($_SESSION[‘var_name’]); or session_destroy();

tips:在””里面也可以用变量,可以用\阻止。

2.mail:

mail(to,subject,message,headers,parameters)
to:收件人
subject:主题 Message:内容(LF or \n 换行)
headers:(可选)附加标题,(CRLF or \r\n 分隔)
parameters:(可选,额外参数)

FILTER_SANITIZE_EMAIL 从字符串中删除电子邮件的非法字符
FILTER_VALIDATE_EMAIL 验证电子邮件地址
filter_var(var_name, filter)通过指定的过滤器过滤变量。
如果成功,则返回已过滤的数据,如果失败,则返回 false。

3.错误处理:
die(“错误信息”);输出错误信息并终止脚本。
创建自定义错误处理器:
error_function(error_level, error_message, error_file, error_line, error_context);
set_error_handler(“错误处理器的function name”);
trigger_error(“错误提示”,”E_USER_ERROR/E_USER_WARNING/E_USER_NOTICE”)触发错误
error_log()

 

4.异常处理

try:
throw:规定如何触发异常(也就是抛出异常),每一个throw必须对应至少一个
catch
catch:捕获异常,并创建一个包含异常信息的对象

自定义异常:

 
class customException extends Exception { public function errorMessage() { //error message $errorMsg = 'Error on line '.$this->getLine().' in '.$this->getFile() .': **'.$this->getMessage().'** is not a valid E-Mail address'; return $errorMsg; } }

set_exception_handler() 函数可设置处理所有未捕获异常的用户定义函数。
简而言之:如果抛出了异常,就必须捕获它。

 

5.过滤器

用于验证和过滤来自非安全来源的数据。

filter_var() 过滤单一变量 ex:filter_val($int, FILTER_VALIDATE_INT)
filter_var_array() 通过多个过滤器过滤多个变量
filter_input 获取一个输入变量并过滤
filter_input_array 获取多个输入变量,并通过多个过滤器进行过滤

Validating和sanitizing
v:验证输入,有严格的格式规则,成功则返回预期的类型,否则返回false
(针对这个返回的事,我特意试了下,其实是如果符合格式,就返回那个值,如
果输出的话就输出那个值,如果不符合格式,返回的是false,但是输出这个返回值
,是不会输出的。)
s: 用于允许或禁止字符串中指定的字符。无数据格式规则,始终返回字符串。

 
`还是给出一些例子来看吧:
<?php
$var=300;

$int_options = array(
“options”=>array
(
“min_range”=>0,
“max_range”=>256
)
);

if(!filter_var($var, FILTER_VALIDATE_INT, $int_options))
{
echo(“Integer is not valid”);
}
else
{
echo(“Integer is valid”);
}
?>
`

`

<?php
if(!filter_has_var(INPUT_GET, “email”))
{
echo(“Input type does not exist”);
}
else
{
if (!filter_input(INPUT_GET, “email”, FILTER_VALIDATE_EMAIL))
{
echo “E-Mail is not valid”;
}
else
{
echo “E-Mail is valid”;
}
}
?>
`

`

<?php
if(!filter_has_var(INPUT_POST, “url”))
{
echo(“Input type does not exist”);
}
else
{
$url = filter_input(INPUT_POST,
“url”, FILTER_SANITIZE_URL);
}
?>
`

`

<?php
$filters = array
(
“name” => array
(
“filter”=>FILTER_SANITIZE_STRING
),
“age” => array
(
“filter”=>FILTER_VALIDATE_INT,
“options”=>array
(
“min_range”=>1,
“max_range”=>120
)
),
“email”=> FILTER_VALIDATE_EMAIL,
);

$result = filter_input_array(INPUT_GET, $filters);

if (!$result[“age”])
{
echo(“Age must be a number between 1 and 120.
“);
}
elseif(!$result[“email”])
{
echo(“E-Mail is not valid.
“);
}
else
{
echo(“User input is valid”);
}
?>
`

`

<?php
function convertSpace($string)
{
return str_replace(“_”, “ “, $string);
}

$string = “Peter_is_a_great_guy!”;

echo filter_var($string, FILTER_CALLBACK,
array(“options”=>”convertSpace”));
?>
`

前言:
学习php的高级基础,何为高级基础,w3school写php高级,我感觉还是基础,故曰高级基础。
目标:
进一步掌握php的基础。
过程:

1.日期:
格式:date(“Y/m/d”)和date(“Y/m/d”,时间戳)
支持/ . - 三种符号
mktime(hour,minute,second,month,day,year,is_dst)获得时间戳
注意month在day前面。 is_dst可选,已经被废弃了。

2.引用:
<?php include(“header.php”); ?> 引用错误仍继续执行其他的
<?php require(“header.php”); ?> 引用错误则中断。(推荐)

3.文件
fopen 打开
fclose 关闭
feof 判断是否到达文件末端
fgets 逐行读取文件
fgetc 逐字符读取文件

4.文件上传
表单:enctype=”multipart/form-data”

一个简单的处理文件上传的php代码:
`
<?php
//限制文件类型为图片,限制大小小于20kb
if ((($_FILES[“file”][“type”] == “image/gif”)
|| ($_FILES[“file”][“type”] == “image/jpeg”)
|| ($_FILES[“file”][“type”] == “image/pjpeg”))
&& ($_FILES[“file”][“size”] < 20000))
{
if ($_FILES[“file”][“error”] > 0)
{
echo “Return Code: “ . $_FILES[“file”][“error”] . “
“;
}
else
{
//输出文件名,类型,大小,临时存储的目录。
echo “Upload: “ . $_FILES[“file”][“name”] . “
“;
echo “Type: “ . $_FILES[“file”][“type”] . “
“;
echo “Size: “ . ($_FILES[“file”][“size”] / 1024) . “ Kb
“;
echo “Temp file: “ . $_FILES[“file”][“tmp_name”] . “
“;

//判断文件是否存在,不存在就把文件从临时目录移动过来。
if (file_exists(“upload/“ . $_FILES[“file”][“name”]))
{
echo $_FILES[“file”][“name”] . “ already exists. “;
}
else
{
move_uploaded_file($_FILES[“file”][“tmp_name”],
“upload/“ . $_FILES[“file”][“name”]);
echo “Stored in: “ . “upload/“ . $_FILES[“file”][“name”];
}
}
}
else
{
echo “Invalid file”;
}
?>
`

5.cookie
cookies:写到html标签前
设置:setcookie(name,value,expire,path,domain)
eg:setcookie(“user”, “Alex Porter”, time()+3600);
setrawcookie() 防止url编码
取回:$_COOKIE[“user”];
isset:判断是否设置了cookie. return true/false
删除cookie:设置过期日期为过去
setcookie(“user”, “”, time()-3600);
浏览器不支持cookie就用表单提交了。。。:

小结:php的函数很强大,封装这么深对程序员有利有弊。
高级基础得慢慢来,先把这当一小节吧。

今天做了一次面条,有必要介绍一下。

1.把剩菜热一下,放在碗里。
2.烧一锅水,烧到开为止。
3.把面条放到里面,有筷子一直搅。
4.待到面条中间有白线(砖家点评:面条本来是生的,是白色的,放锅里煮慢慢熟,就不会是白色,等到面条中间有一点点白的时候就快完全熟了,关火让面条自己完全熟。)
5.把面条盛到剩菜的碗里,可以放入自己想要的调料什么的,美味的面做好了:)

remark:没有拍图,可惜了…

前言:
今天学习php基础语法
目标:会php基础语法
过程:

1.php的语法:
<?php

?>
也可以<? ?>(不推荐)
echo:输出
2.声明变量:
$var_name = value;
不必声明数据类型

3.操作字符串:
. 连接字符串,如a.b结果为ab
strleng(“hello”) 计算字符串长度
strpos(“source”,”o”) 搜索第二个参数在第一个参数里面的index,未匹配返回false

4.运算符:
算数+-/% ++ –
赋值:= += -=
= /= .= %=(例:x.=y 意为x = x.y)
比较运算符:
== != > < >= <=
逻辑运算符:
&& || !

5.条件语句:
if else
switch

6.数组:

a.数值数组
带有数字 ID 键的数组:
$names = array(“Peter”,”Quagmire”,”Joe”);
b.关联数组
数组中的每个 ID 键关联一个值
$ages[‘Peter’] = “32”;
$ages[‘Quagmire’] = “30”;
$ages[‘Joe’] = “34”;
=>是键值映射的关系
$ages = array(“Peter”=>32, “Quagmire”=>30, “Joe”=>34);
c.多维数组
包含一个或多个数组的数组

7.循环
while, do while, for, foreach
foreach($arr_name as $value_name){
echo $value_name
}

8.函数:

9.表单:
$_GET 变量用于收集来自 method=”get” 的表单中的值。
$_GET[“age”]; 获取表单里面name为age的值
get最多100个字符

PHP 的 $_REQUEST 变量包含了 $_GET, $_POST 以及 $_COOKIE 的内容。
PHP 的 $_REQUEST 变量可用来取得通过 GET 和 POST 方法发送的表单数据的结果。
$_POST 变量用于收集来自 method=”post” 的表单中的值。

小结:w3schol尼玛太坑爹!
运算符,数组,有空复习一下。

前言:

从今天开始学php

目标:

先安装php和搭建环境,并写一个HelloWorld。

步骤:

1.下载php和apache,貌似有一些绿色版的,我没用过,先贴出大众的方法。

下载PHP5:    http://cn2.php.net/distributions/php-5.2.6-Win32.zip
下载apache: http://down.chinaz.com/soft/18000.htm

2.解压php到如d:/php,

3.找到php目录下的 php.ini-dist或 php.ini.recommended文件,重命名为 php.ini,

  并复制到系统盘的windows目录下(以c:\windows为例). 

4.再把php目录下的php5ts.dll,libmysql.dll复制到目录 c:\windows\system32下。

5.把php5\ext目录下的php_gd2.dll,php_mysql.dll,php_mbstring.dll文件复制到c:\windows\system32下。

6.安装apache

一直next,domain什么的就随便输入,mail写自己的也未尝不可。

设置/conf/httpd.conf:

查找DocumentRoot 设置为放网页文件的文件夹,不变也可以,

查找DirectoryIndex 在index.html后添加indexphp index.htm,多个用空格分隔。

7.

打开c:\windows\php.ini文件(关联到mysql)
设置扩展路径
查找 extension_dir 有这么一行extension_dir = “./“
将此行改成
extension_dir = “C:\php5\ext”
其中C:\php5是你安装php的路径。路径不正确将无法加载dll
(注意:有些php版本是 ;extension_dir = “./“ 要把前面的分号去掉)
查找 extension
extension=php_mbstring.dll
extension=php_gd2.dll
extension=php_mysql.dl
把上面3项前面的分号去掉。

将doc_root 改为apache里面放网页的目录,如 “d:\Program Files\Apache Software Foundation\Apache2.2\htdocs”;

找到 ;session.save_path = “/tmp” ,将’;’去掉,设置你保存session的目录,如session.save_path = “D:/php/session_temp”;

8.时差设置

查找date.timezone有这么一行
;date.timezone =
将;去掉,改成
date.timezone = PRC

9.php+apache的设置

设置httpd.conf,

 LoadModule php5_module “d:/php/php5apache2_2.dll”

(特别注意这一条,很多地方是调用php5apache2.dll,这样在运行PHP代码时会提示httpd.exe应用程序错误)
      AddType application/x-httpd-php .php
      AddType application/x-httpd-php .htm
      (.htm, .php为可执行php语言的扩展名,也可加html, php3, php4,甚至txt)

查找 AddType application/x-gzip .gz .tgz
在此行后加入一行
AddType application/x-httpd-php .php (记住:前边有一个空格哦!!!)
这样apache就可以解释php文件了

10.在web根目录(即apache_home/htdocs)新建test.php,内容如下

`

逐鹿IT,猛猛如玉


<?php
echo “hello world”;
phpinfo();
?>


`

 

 

重启apache服务,访问http://localhost/test.php

当出现hello world和php的一些信息的时候,说明成功了。有问题的话,请检查配置!

 

 

附测试连接mysql的代码:

 

<?php $link=mysql_connect("localhost","root","12345"); //12345改成你的mysql密码 if(!$link) echo "失败!"; else echo "成功!"; mysql_close(); ?>

 

参考资料:

http://zhidao.baidu.com/question/74350698.html

http://www.cnblogs.com/angelox/archive/2008/10/09/1306732.html

在eclipse里面开发java项目的时候,偶尔会遇到无法导包的问题,

如:

import com.sun.management.OperatingSystemMXBean;
无法导入。本来想导com.sun.management包内的,却只有java.lang包的这个类。
com.sun.management.OperatingSystemMXBean位于java lib的rt.jar,
在eclipse里面可以看到项目引用的JRE System Library里面有rt.jar,
并且可以打开看到也有com.sun.management这个包,里面也有OperatingSystemMXBean这个类,
但是为何总是无法导入呢。
偶然的发现一个解决办法:
在项目的java Build Path-Libraries里面,把JRE System Library Remove掉,然后再重新添加Library,
点击右边的Add Library-JRE System Library-就默认选择workspace default JRE-finish。
遇到这样奇葩的问题,就这样试试吧:)

每周一下午4点是固定的打篮球时间,

我本不是热爱篮球的人,但是因为这2个小时不必坐在办公室埋头苦干,能多呼吸一点外面虽然不新鲜的空气,所以每周一都是很积极着跟着同事去打篮球。
每次打球,无论是抢篮板数还是命中数,都是我最低,不是因为我最不会打,而是我最懒,相比别人不停的奔跑着抢篮板,我更多的是站在那里或者做着小弧度的移动,盯着球,等待着抢篮板的机会。除了偶然的守株待兔捡来个球,我始终是一个围观者。虽然我也告诉自己要动起来,不要怕累,不要怕出汗,不要怕被球砸伤被人碰伤,但身体始终无法执行大脑发的指令。

这让我想起了打魔兽,我最热爱的游戏,很久以前我是一个小小菜鸟,当然现在也仍然是一个菜鸟。打魔兽的时候,我也是喜欢盯,盯着建筑里面出兵,等待着兵出来我操作;盯着打怪,等待怪被打死然后收宝;盯着部队交战,等待敌人落荒而逃或者自己丢盔弃甲…后来知道了APM这个概念后,我发现我需要动起来,我不能让我的手停下来,一停下来我就会习惯了停,习惯了等待。之后,我的apm由开始的50,在我每打完一局就打开w3gmaster看自己的apm,100,150,200…此时再玩起魔兽,我已然有了一种满满的感觉,再快的节奏,再多的队伍,再复杂的操作也能轻松完成。

我在想,打球是不是也这样,如果我可以动起来,不停的奔跑,不停的追逐,哪怕累一点,哪怕很多时候抢不到球,我仍然可以比之前更出色。
那么,生活也是同理了,如果我不这么懒,我动起来,我的生活也会出色!
如果是这样,那么从这个blog开始,start here!

Start here