标签 php 下的文章

静态属性

静态属性也就是说它的值保持其值,比如在类中实例化了N个对象,那么你可以在构造函数中定义一个静态属性来记住对象的个数。类中的静态属性和静态变量差不多,只不过在类中似乎又多了一个些使用上的限制罢了。让我们看看一般的变量吧:
[php]
<?php

function test() {

$n = 1;

echo "The number is:$n
";

$n++;

}

test();

test();

test();

test();

test();

test();

?&gt;
[/php]
[php]
<?php function test() { $n = 1; echo "The number is:$n<br ?-->"; $n++;}test();test();test();test();test();test();?&gt;
[/php]
很显然这个函数的结果如下:
[php]
The number is:1

The number is:1

The number is:1

The number is:1

The number is:1

The number is:1
[/php]
但是如果你的程序是这样:
[php]
<?php

function test() {

static $n = 1;

echo "The number is:$n
";

$n++;

}

test();

test();

test();

test();

test();

test();

?&gt;
<!php function <br ?--> test() { static $n = 1; echo "The number is:$n
"; $n++;}test();test();test();test();test();test();?&gt;
[/php]
我们只不过在变量名加了个static关键字而已,结果就大大的不同了:
[php]
The number is:1

The number is:2

The number is:3

The number is:4

The number is:5

The number is:6
[/php]
1.static关键字可以用来修饰变量、方法(静态方法)

2.不经过实例化,就可以直接访问类中static的属性和static的方法。

3.static 的属性和方法,只能访问static的属性和方法,不能访问非静态的属性和方法。因为静态属性和方法被创建时,可能还没有任何这个类的实例可以被调用。

4.在当前类中如果要访问静态成员可以使用self::关键字进行访问。

5.在类中我们不能使用this关键来访问静态属性,因为静态属性在对象可能还没有实例化之前已经存在。

6.在类中静态方法访问静态属性,使用类名::静态属性名即可调用类中的静态属性。

静态方法

在这个示例里我们看到,使用了两种方法来访问静态属性$money的值:一种是前面都提到的类名::属性值的形式,另外一种则是使用了self关键字。当然推荐使用self关键字这种方式,因为如果那天不高兴了,我们修改的类名,那么如果你使用了第一种方式,你是不是还得修改下调用它的方法呢,当然你得在同一个类中,如果你是在子类中想调用父类的静态属性和方法,那就得使用parent::的方式了。

再说一下

1:如果你想在静态方法中调用其它静态方法时,请使用方法是:类名::方法名的形式进行调用,还是那句,如果你在同一个类进行这样的调用,就使用selft关键字进行调用吧。要不然你得的程序可就得报错了。

2:php中静态方法不能调用非静态的属性和非静态方法,也不能使用类名::或者self::调用非静态属性。更不能使用$this->属性名来调用,总之在静态方法中只能调用静态属性或方法,非静态的无法调用。

1 安装Apache+php+Mysql  (来自jonelaw)

a、安装Apahce, PHP, Mysql, 以及php连接mysql库组件 yum -y install httpd php mysql mysql-server php-mysql

b、安装mysql扩展    yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
或一次性粘贴安装:yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql然后启动 mysql 服务启动 service mysqld start
停止:  service mysqld stop重启:  service mysqld restart

c、设置mysql数据库root帐号密码。
mysqladmin -u root password 'newpassword' [引号内填密码]e.g mysqladmin -u root password 123456
d、 让mysql数据库更安全
mysql -u root -p [此时会要求你输入刚刚设置的密码,输入后回车即可mysql> DROP DATABASE test; [删除test数据库]
mysql> DELETE FROM mysql.user WHERE user = ”; [删除匿名帐户]
mysql> FLUSH PRIVILEGES; [重载权限]e、 按照以上的安装方式, 配置出来的默认站点目录为/var/www/html/新建一个php脚本:记得的设置文件写入权限

chmod命令

将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt

参考地址 http://www.linuxso.com/command/chmod.html

<?php
phpinfo();
?>

2、//安装php的扩展

yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc3、//安装apache扩展yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql

4、 配置防火墙添加允许访问HTTP、FTP端口

iptables -I RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

iptables -I RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT

重启iptables: service iptables restart

5、 安装ftp

vsftpd作为FTP服务器,在Linux系统中是非常常用的。下面我们介绍如何在centos系统上安装vsftp。 (出自零度科技)

什么是vsftpd
vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

vsftpd 的名字代表”very secure FTP daemon”, 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。 内容来自零度科技

安装vsftpd
1、以管理员(root)身份执行以下命令

yum install vsftpd
2、设置开机启动vsftpd ftp服务 copyright www.00isp.com

chkconfig vsftpd on
3、启动vsftpd服务

service vsftpd start
管理vsftpd相关命令:

停止vsftpd:  service vsftpd stop

重启vsftpd:  service vsftpd restart

配置防火墙 (上面已经配置 如果没有请自行配置 )
打开/etc/sysconfig/iptables文件

vi /etc/sysconfig/iptables
在REJECT行之前添加如下代码

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
保存和关闭文件,重启防火墙 内容来自www.00isp.com

service iptables start
配置vsftpd服务器
默认的配置文件是/etc/vsftpd/vsftpd.conf,你可以用文本编辑器打开。 copyright www.00isp.com

vi /etc/vsftpd/vsftpd.conf
添加ftp用户
下面是添加ftpuser用户,设置根目录为/home/wwwroot/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。

1、修改/etc/vsftpd/vsftpd.conf 内容来自www.00isp.com

将底下三行

#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
改为
chroot_list_enable=YES
# (default follows)
chroot_list_file=/etc/vsftpd/chroot_list
3、增加用户ftpuser,指向目录/home/wwwroot/ftpuser,禁止登录SSH权限。

useradd -d /home/wwwroot/ftpuser -g ftp -s /sbin/nologin ftpuser
4、设置用户口令 零度科技

passwd ftpuser
5、编辑文件chroot_list:

vi /etc/vsftpd/chroot_list
内容为ftp用户名,每个用户占一行,如: 内容来自www.00isp.com

peter
john 内容来自www.00isp.com

6、重新启动vsftpd

service vsftpd restart
另外,如果觉得以后管理ftp用户名嫌麻烦,可以使用centos官方发布的脚本管理。地址如下:http://wiki.centos.org/HowTos/Chroot_Vsftpd_with_non-system_users

出现的错误
1、500 OOPS: cannot change directory
解决方法:http://www.centos.bz/2011/10/ftp-500-oops-cannot-change-directory/

自此PHP的编程环境基本安装完成 本人是菜菜菜鸟一枚 基本上都是百度来的 这是我的安装步骤 ftp还是有点麻烦 配置文件给搞毁了 哎
太菜了 难搞的很啊

还是研究中
对了 免费的vps 传送门  http://www.vpsjy.com/268.html

Hash passwords with salts
[php]
// Déclaration des constantes
define('PREFIX_SALT', 'bonjour');
define('SUFFIX_SALT', 'aurevoire');
$hashSecure = md5(PREFIX_SALT.'m0tDePasse'.SUFFIX_SALT);
[/php]
HP Database Config

[php]

$dbhost = '127.0.0.1';
$dbuser = 'root';
$dbpass = '';
$dbname = 'directory';

[/php]

Simple PHP Math Image Captcha

[php]
// captcha width
$captcha_w = 150;
// captcha height
$captcha_h = 50;
// minimum font size; each operation element changes size
$min_font_size = 12;
// maximum font size
$max_font_size = 18;
// rotation angle
$angle = 20;
// background grid size
$bg_size = 13;
// path to font - needed to display the operation elements
$font_path = 'fonts/courbd.ttf';
// array of possible operators
$operators=array('+','-','*');
// first number random value; keep it lower than $second_num
$first_num = rand(1,5);
// second number random value
$second_num = rand(6,11);
[/php]

ZIP File PHP code script

[php]
require ("incl/zipfile.inc.php");
$zipfile = new zipfile();
$filedata = implode("", file("incl/zipfile.inc.php"));
$zipfile->add_dir("incl/");
$zipfile->add_file($filedata, "incl/zipfile.inc.php");
header("Content-type: application/octet-stream");
header("Content-disposition: attachment; filename=zipfile.zip");
echo $zipfile->file();
?>
[/php]

Extracting Image With PHP

[php]
$contenttograbimagefrom = $youroriginalhtmlwithimage;
$firstImage = "";
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $contenttograbimagefrom, $ContentImages);
$firstImage = $ContentImages[1] [0]; // To grab the first image
echo $firstImage;
[/php]

A simple PHP Mysql Class

[php]
//Simply include this file on your page
require_once("DbConnect.class.php");

//Set up all yor paramaters for connection
$db = new DbConnect("localhost","user","password","database",$error_reporting=false,$persistent=false);

//Open the connection to your database
$db->open() or die($db->error());

//Query the database now the connection has been made
$db->query("SELECT * FROM....") or die($db->error());

//You have several options on ways of fetching the data
//as an example I shall use
while($row=$db->fetcharray()) {

//do some stuff

}

//close your connection
$db->close();

#################################################################
Class DbConnect {

var $host = '';
var $user = '';
var $password = '';
var $database = '';
var $persistent = false;

var $conn = NULL;

var $result= false;
var $error_reporting = false;

/*constructor function this will run when we call the class */

function DbConnect ($host, $user, $password, $database, $error_reporting=true, $persistent=false) {

$this->host = $host;
$this->user = $user;
$this->password = $password;
$this->database = $database;
$this->persistent = $persistent;
$this->error_reporting = $error_reporting;
}

function open() {

if ($this->persistent) {

$func = 'mysql_pconnect';

} else {

$func = 'mysql_connect';

}

/* Connect to the MySQl Server */

$this->conn = $func($this->host, $this->user, $this->password);

if (!$this->conn) {

return false;

}

/* Select the requested DB */

if (@!mysql_select_db($this->database, $this->conn)) {

return false;
}
return true;
}

/*close the connection */

function close() {

return (@mysql_close($this->conn));
}

/* report error if error_reporting set to true */

function error() {

if ($this->error_reporting) {

return (mysql_error()) ;
}

}

function query($sql) {

$this->result = @mysql_query($sql, $this->conn);

return($this->result != false);

}
function affectedrows() {

return(@mysql_affected_rows($this->conn));
}

function numrows() {

return(@mysql_num_rows($this->result));

}
function fetchobject() {

return(@mysql_fetch_object($this->result, MYSQL_ASSOC));

}
function fetcharray() {

return(mysql_fetch_array($this->result));

}

function fetchassoc() {

return(@mysql_fetch_assoc($this->result));
}

function freeresult() {

return(@mysql_free_result($this->result));

}

}
[/php]

从php5.1.0开始,php.ini里加入了date.timezone 这个选项,默认情况下是关闭的

也就是显示的时间都是格林威治标准时间

有以下两种方法可以显示正常的时间。

1. 在关于时间的初始化的语句的上面加上

date_default_timezone_set (XXX);

2. 修改php.ini查找date.timezone 去掉前面的分号
= 后面加XXX,重启http服务(如apache2或iis等)即可

关于XXX,大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi (依次为重庆,上海,乌鲁木齐)
港台地区可用:Asia/Macao ,Asia/Hong_Kong ,Asia/Taipei (依次为澳门,香港,台北)
还有新加坡:Asia/Singapore

其他可用的值是:Etc/GMT-8 ,Singapore ,Hongkong ,PRC

在页头使用date_default_timezone_set()设置默认时区为北京时间

date_default_timezone_set('PRC');
echo date('Y-m-d H:i:s');

date_default_timezone_set用法如下

date_default_timezone_set
(PHP 5 >= 5.1.0RC1)

date_default_timezone_set -- 设定用于一个脚本中所有日期时间函数的默认时区
说明

bool date_default_timezone_set ( string timezone_identifier )

date_default_timezone_set() 设定用于所有日期时间函数的默认时区。

注: 自 PHP 5.1.0 起(此版本日期时间函数被重写了),如果时区不合法则每个对日期时间函数的调用都会产生一条 E_NOTICE 级别的错误信息。

参数

timezone_identifier
时区标识符,例如 UTC 或 Europe/Lisbon

返回值

本函数永远返回 TRUE(即使 timezone_identifier 参数不合法)。

------------------------------------------------------------------------------------------

再附上时区标识符:

CET
CST6CDT
Cuba
EET
Egypt
Eire
EST
EST5EDT
Etc/GMT
Etc/GMT+0
Etc/GMT+1
Etc/GMT+10
Etc/GMT+11
Etc/GMT+12
Etc/GMT+2
Etc/GMT+3
Etc/GMT+4
Etc/GMT+5
Etc/GMT+6
Etc/GMT+7
Etc/GMT+8
Etc/GMT+9
Etc/GMT-0
Etc/GMT-1
Etc/GMT-10
Etc/GMT-11
Etc/GMT-12
Etc/GMT-13
Etc/GMT-14
Etc/GMT-2
Etc/GMT-3
Etc/GMT-4
Etc/GMT-5
Etc/GMT-6
Etc/GMT-7
Etc/GMT-8
Etc/GMT-9
Etc/GMT0
Etc/Greenwich
Etc/UCT
Etc/Universal
Etc/UTC
Etc/Zulu
Factory
GB
GB-Eire
GMT
GMT+0
GMT-0
GMT0
Greenwich
Hongkong
HST
Iceland
Iran
Israel
Jamaica
Japan
Kwajalein
Libya
MET
MST
MST7MDT
Navajo
NZ
NZ-CHAT
Poland
Portugal
PRC
PST8PDT
ROC
ROK
Singapore
Turkey
UCT
Universal
UTC
W-SU
WET