PHP函数生成随机数

通常情况下,当我们要生成一个随机字符串时,总是先创建一个字符池,然后用一个循环和mt_rand()或rand()生成php随机数,从字符池中随机选取字符,最后拼凑出需要的长度,代码如下:

1
2
3
4
5
6
7
8
9
10
11
<?php  
function randomkeys($length){
$pattern='1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ,./<>?;#:@~[]{}-_=+)(*&^%___FCKpd___0pound;"!'; //字符池
$key='';
for($i=0;$i<$length;$i++){
$key.=$pattern{mt_rand(0,35)};//生成php随机数
}
return $key;
}
echo randomkeys(8);
?>

Read More

PHP获取当前url路径的函数及服务器变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
/**
__FILE__ ,
getcwd(),
$_SERVER["REQUEST_URI"],
$_SERVER["SCRIPT_NAME"],
$_SERVER["PHP_SELF"],
$_SERVER["SCRIPT_FILENAME"],

来观察一下这些变量或函数的异同.
假设有一个请求地址为: http://localhost:8080/test.php/age=20
而test.php 的完整路径是: D:/server/www/example/test.php
1) getcwd()
将得到浏览器请求的页面文件所在的目录. 即test.php 文件所在的目录: D:/server/www/example/ ,
如果在test.php 执行了 require 或 include 语句, 比如 inculde("test_dir/test2.php"),
那么在 test2.php 里 getcwd()函数 返回的也将是 test.php 所在的目录.
2) __FILE__
一个魔术变量, 用它将得到 __FILE__ 变量所在文件的完整路径,
比如: test.php 里 __FILE__ 将得到 D:/server/www/example/test.php ,
test_dir/test2.php 里的 __FILE__ 将得到 D:/server/www/example/test_dir/test2.php

3) $_SERVER["SCRIPT_FILENAME"]
将得到浏览器请求的页面文件的完整路径.
test.php 和 test_dir/test2.php 里用 $_SERVER["SCRIPT_NAME"] 都将得到 D:/server/www/example/test.php.

4) $_SERVER["SCRIPT_NAME"]
将得到浏览器请求的页面文件的文件名,注意: 与 $_SERVER["SCRIPT_NAME"] 不同, 此变量只得到文件名而不包含路径,
在test.php 与 test_dir/test2.php 用$_SERVER["SCRIPT_NAME"] 得到的都将是 test.php.
当然, 在test.php 与 test_dir/test2.php 执行 basename($_SERVER["SCRIPT_FILENAME"]) 与 $_SERVER["SCRIPT_NAME"] 相同.
执行 在test.php 与 test_dir/test2.php 执行 realpath("test.php") 得到的结果与 $_SERVER["SCRIPT_FILENAME"] 相同.

5) $_SERVER["PHP_SELF"]
将得到浏览器请求页面的文件名, 并剥掉问号 ? 后的内容, 注意:不包含路径,
比如在客户端里请求 http://localhost:8080/test.php?age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都将得到 "test.php"。"age=20&name=Tom"被剥掉。
而如果客户端里请求 http://localhost:8080/test.php/age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["PHP_SELF"] 都将得到 "test.php/age=20&name=Tom"。

6) $_SERVER["REQUEST_URI"]
将得到浏览器请求页面的文件名, 以及文件名之后的所有内容(注意: 井号 # 之后的内容将被略去),
比如在客户端里请求 http://localhost:8080/test.php?age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REUEST_URI"] 都将得到 "test.php"。"age=20&name=Tom"被剥掉。
而如果客户端里请求 http://localhost:8080/test.php/age=20&name=Tom,
那么test.php 和 test_dir/test2.php 的 $_SERVER["REQUEST_URI"] 都将得到 "test.php/age=20&name=Tom"。
*/

// test.php:
echo "test1.php variables <br />"; //test1.php variables
echo "getcwd: ", getcwd(), "<br />"; //getcwd: E:\wamp\www\test
echo "__FILE__: ", __FILE__, "<br />"; //__FILE__: E:\wamp\www\test\test.php
echo "dirname: ", dirname(__FILE__), "<br />"; //dirname: E:\wamp\www\test
echo "REQUEST_URI: ", $_SERVER["REQUEST_URI"], "<br />"; //REQUEST_URI: /test/test.php
echo "SCRIPT_NAME: ", $_SERVER["SCRIPT_NAME"], "<br />"; //SCRIPT_NAME: /test/test.php
echo "PHP_SELF: ", $_SERVER["PHP_SELF"], "<br />"; //PHP_SELF: /test/test.php
echo "SCRIPT_FILENAME:", $_SERVER["SCRIPT_FILENAME"] , "<br />"; //SCRIPT_FILENAME: E:/wamp/www/test/test.php
echo "DOCUMENT_ROOT: ", $_SERVER['DOCUMENT_ROOT'], "<br />"; //DOCUMENT_ROOT: E:/wamp/www/

// 把 test2.php 包含进来, 在 test2.php 里输出上面的变量,看有什么不同:
include_once("test2/test2.php");

?>

利用securecrt在linux与windows之间传输文件

SecureCRT这款SSH客户端软件同时具备了终端仿真器和文件传输功能。比ftp命令方便多了,而且服务器不用再开FTP服务了。rz,sz是便是Linux/Unix同Windows进行ZModem文件传输的命令行工具。

windows端需要支持ZModem的telnet/ssh客户端,SecureCRT就可以用SecureCRT登陆到Unix/Linux主机(telnet或ssh均可)。

上传文件只需在shell终端仿真器中输入命令“rz”,即可从弹出的对话框中选择本地磁盘上的文件,利用Zmodem上传到服务器。下载文件只需在shell终端仿真器中输入命令“sz 文件名”,即可利用Zmodem将文件下载到“路径/SecureCRT-5.1.3/download/”目录下。通过“File Transfer”可以修改上传和下载的默认路径。设置默认目录:options–>session options–>file transfer。

Read More

vi命令使用

在vi下如何显示行号?

按Esc切换到命令行模式,输入:
:set nu

如果您想每次进入vi都标出行号,编辑~/.vimrc文件。也就是在用户的主目录下,编辑存档.vimrc文件。里边写一行: set nu。这样,该用户登录以后,只要进入vi,就有行号。如果想取消只要删除set nu这一行或用”注释掉即可。

Read More

解决Linux下SSH等终端乱码问题

1.vi /etc/sysconfig/i18n

Centos5.5原来内容是:

//LANG=”en_US.UTF-8”
//SYSFONT=”latarcyrheb-sun16”

将内容改为
LANG=”zh_CN.GB18030”
LANGUAGE=”zh_CN.GB18030:zh_CN.GB2312:zh_CN”
SUPPORTED=”zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en”
SYSFONT=”lat0-sun16”

Read More