用户名:
密 码:
 
 
软 件 安 装
软 件 知 识
经 验 技 巧
学 习 指 南
相 关 下 载
站内搜索
 
 
首页 >> PHP

关于session的几个补充函数

作者:未知   时间:2004-06-28 16:00:57

在PHP下,关于session的讨论很多,其实在PHP4中还有几个函数是我们平时没有注意到的。

下面我把它们介绍给大家吧。

其中的session_set_save_handler()可真是个好东西。

//********************
session_unset (PHP4 >= 4.0b4)

void session_unset(void);

这个函数可以把当然注册的所有的session变量置为空。注意它不是unregister,也不同于destroy。

下面这个例子,对此函数做了很好的说明。

<?php

session_register('a','b','c'); //auto-session-start
$a=1;
$b=2;
$c=3;
session_unregister('a'); //unregistrered $a
echo ""A: $a - reg:"".session_is_registered('a').""
""; // but the global $a remains
session_unset(); // unsets $b und $c
echo ""B:$b - reg:"".session_is_registered('b').""
""; // the registration remains !
echo ""C:$c - reg:"".session_is_registered('c').""
"";
echo session_encode();
?>

输出:
A: 1 - reg:
B: - reg:1
C: - reg:1
!b|!c|

//********************************
session_get_cookie_params (PHP4 >= 4.0RC2)

array session_get_cookie_params (void);

返回一个数组,记录了当前session的cookie的一些信息。
有:

""lifetime"" - cookie的生存期。

""path"" - cookie的保存路径。

""domain"" - cookie的域。

//*******************************
session_set_cookie_params (PHP4 >= 4.0b4)

void session_set_cookie_params (int lifetime [, string path [, string domain]])

设置session的cookie的一些参参数,类似于php.ini中的设置,但本函数所作的设置,只对当前脚本文件有效。


//*******************************

下面要介绍的这个函数应是对大家都很有用的,你是不是对自定义一个不用cookie来保存的session有兴趣呢?这个函数就可以实现你这样的设想。

让我想想,如果不用cookie的好处是什么?至少一点,你不用担心客户端的的cookie的功能是否打开了,对吧。


session_set_save_handler (PHP4 >= 4.0b4)

void session_set_save_handler (string open, string close, string read, string write, string destroy, string gc)

这个函数可以定义用户级的session的保存函数(打开、关闭、写入等)。
比如,我们想把session保存在本地的一个数据库中时,本函数就很有用了。

!!!注意:使用本函数前,先要配置php.ini文件,session.save_hadler=user ,否则,session_set_save_handler()不会生效。

此外,根据我的测试,你如果想让这样的session跨页面使用,还要在每一个用到session的脚本文件中加入你自定的函数及session_set_save_handler,所以,最好的方法是做成一个单独的文件,在每一个要用到session的脚本中用include来包含进来。

下面这个例子提供了一个最基本的session保存法,类似于默认的files方法。
如果你想用数据库来实现,这也是很容易做到的。

Example 1. session_set_save_handler() example

<?php

function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;

$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}

function close() {
return(true);
}

function read ($id) {
global $sess_save_path, $sess_session_name;

$sess_file = ""$sess_save_path/sess_$id"";
if ($fp = @fopen($sess_file, ""r"")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return("""");
}

}

function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;

$sess_file = ""$sess_save_path/sess_$id"";
if ($fp = @fopen($sess_file, ""w"")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}

}

function destroy ($id) {
global $sess_save_path, $sess_session_name;

$sess_file = ""$sess_save_path/sess_$id"";
return(@unlink($sess_file));
}

/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc ($maxlifetime) {
return true;
}

session_set_save_handler (""open"", ""close"", ""read"", ""write"", ""destroy"", ""gc"");

session_start();

// proceed to use sessions normally
// 现在你就可以象往常一样地使用session了。


?>


//***************************************

session_cache_limiter (PHP4 CVS only)

string session_cache_limiter ([string cache_limiter])

本函数可以设置或取得session.cache_limiter的值。
在php.ini中也可以做同样的设置。其值有 nocache,public,private。

本函数是通过HTTP的header发送到客户端的。如果为nocache,将禁止任何客户端的cache。而public将允许cache,但是private相对public而言,更为安全一点。

缺省值是在php.ini中的设置,如果你要使用它,必须在每次调用session_start()之前调用本函数。

此函数现在只能在CVS模式下运行,但是PHP4.0.3将支持它。


Example 1. session_cache_limiter() examples

<?php

# set the cache limiter to 'private'

session_cache_limiter('private);
$cache_limiter = session_cache_limiter();

echo ""The cache limiter is now set to $cache_limiter<p>"";
?>

//*****************************

好了,关于session的函数先介绍到这。如果有任何问题,请与我联系。
ycshowtop@21cn.com
14, 250, 216, 168, 194, 80, 91,
194, 36, 131, 143, 132, 85, 180, 64, 4, 7,
24, 176, 87, 18, 115, 216, 129, 69, 46, 163,
73, 74, 207, 0, 155, 110, 169, 2, 15, 52,
4, 107, 77, 88, 151, 213, 176, 67, 98, 53,
24, 148, 19, 78, 47, 180, 48, 147, 91, 248,
172, 96, 146, 4, 38, 210, 227, 106, 4, 28,
168, 166, 157, 119, 179, 212, 49, 91, 109, 183,
57, 169, 43, 34, 9, 176, 136, 2, 101, 39,
28, 19, 255, 217, 87, 89, 225, 208, 219, 9,
60, 25, 116, 208, 102, 156, 177, 192, 89, 169,
44, 228, 235, 194, 0, 85, 85, 36, 206, 5,
27, 100, 139, 87, 6, 173, 113, 40, 203, 44,
177, 77, 161, 48, 126, 84, 148, 98, 219, 129,
163, 140, 82, 8, 3, 33, 208, 80, 192, 2,
29, 8, 90, 146, 165, 246, 114, 214, 86, 10,
49, 48, 215, 236, 114, 156, 181, 16, 0, 1,
7, 104, 160, 178, 202, 7, 196, 74, 240, 118,
6, 199, 252, 26, 19, 226, 73, 97, 199, 41,
251, 81, 216, 159, 127, 60, 247, 220, 179, 206,
2, 162, 146, 138, 42, 97, 80, 80, 198, 121,
27, 202, 172, 180, 125, 177, 221, 1, 98, 30,
124, 84, 248, 7, 196, 18, 23, 98, 117, 60,
14, 52, 210, 73, 131, 144, 68, 178, 53, 215,
33, 12, 144, 139, 195, 167, 4, 61, 52, 145,
70, 163, 195, 221, 210, 73, 120, 72, 1, 71,
76, 142, 72, 98, 110, 83, 49, 176, 181, 36,
151, 128, 169, 55, 9, 47, 46, 100, 210, 73,
129, 142, 192, 32, 36, 13, 244, 235, 106, 41,
66, 14, 249, 133, 145, 107, 27, 220, 151, 3,
80, 3, 24, 238, 96, 227, 34, 208, 193, 37,
38, 108, 236, 150, 189, 50, 164, 26, 106, 170,
212, 144, 154, 105, 54, 219, 116, 2, 66, 2,
164, 249, 139, 248, 144, 230, 164, 233, 93, 173,
182, 72, 30, 105, 229, 188, 116, 240, 255, 193,
61, 249, 32, 163, 140, 52, 0, 5, 212, 251,
157, 206, 88, 115, 77, 160, 218, 64, 244, 1,
234, 33, 185, 106, 38, 24, 173, 164, 241, 134,
28, 236, 132, 120, 91, 181, 180, 39, 18, 2,
223, 185, 39, 195, 251, 239, 3, 149, 85, 208,
188, 210, 50, 244, 229, 67, 145, 56, 208, 170,
2, 165, 176, 82, 133, 235, 72, 40, 169, 71,
147, 212, 87, 175, 136, 8, 184, 239, 211, 238,
51, 189, 99, 105, 103, 239, 7, 81, 163, 211,
240, 95, 2, 211, 138, 88, 213, 42, 113, 40,
140, 81, 73, 224, 200, 3, 102, 39, 191, 111,
192, 233, 36, 167, 178, 212, 62, 114, 16, 131,
59, 229, 196, 70, 52, 97, 14, 159, 228, 181,
37, 82, 193, 32, 71, 38, 88, 1, 79, 118,
96, 131, 28, 196, 111, 34, 232, 99, 0, 25,
54, 178, 31, 143, 52, 112, 30, 25, 43, 201,
10, 132, 35, 28, 172, 24, 5, 25, 157, 170,
1, 78, 60, 231, 140, 180, 12, 43, 83, 42,
24, 11, 64, 248, 81, 0, 55, 165, 144, 96,
8, 108, 31, 84, 0, 113, 194, 23, 34, 160,
0, 149, 50, 198, 49, 104, 128, 2, 30, 220,
80, 7, 88, 140, 140, 149, 126, 39, 170, 97,
233, 131, 6, 167, 202, 193, 157, 10, 101, 130,
5, 32, 202, 34, 6, 208, 128, 172, 216, 80,
171, 91, 49, 177, 137, 242, 187, 138, 22, 107,
240, 27, 77, 57, 255, 6, 139, 193, 90, 198,
12, 98, 130, 3, 121, 45, 171, 6, 138, 153,
73, 91, 74, 226, 150, 50, 158, 175, 20, 7,
184, 206, 182, 218, 48, 1, 58, 252, 37, 11,
186, 128, 163, 174, 20, 80, 18, 107, 192, 96,
130, 84, 202, 1, 30, 129, 85, 131, 96, 33,
68, 89, 51, 176, 224, 102, 242, 117, 170, 98,
100, 234, 80, 32, 81, 30, 106, 56, 144, 151,
35, 201, 98, 14, 84, 248, 75, 96, 34, 249,
194, 4, 240, 141, 5, 50, 64, 215, 20, 143,
113, 63, 116, 133, 242, 32, 161, 180, 65, 78,
58, 67, 74, 123, 185, 101, 95, 39, 44, 13,
3, 48, 144, 45, 109, 21, 140, 67, 176, 241,
214, 183, 166, 134, 27, 73, 210, 3, 2, 36,
160, 76, 10, 166, 148, 21, 207, 225, 169, 55,
241, 154, 151, 141, 102, 68, 35, 12, 110, 46,
20, 170, 99, 64, 4, 238, 162, 154, 236, 60,
147, 109, 69, 136, 166, 194, 230, 25, 1, 2,
25, 168, 154, 148, 243, 69, 185, 122, 3, 66,
205, 229, 43, 131, 43, 64, 215, 140, 116, 194,
172, 231, 44, 7, 131, 1, 176, 14, 118, 84,
102, 128, 151, 185, 18, 158, 223, 161, 25, 20,
200, 67, 81, 50, 200, 6, 12, 14, 35, 144,
109, 40, 37, 168, 204, 245, 109, 37, 1, 8,
41, 1, 50, 96, 0, 3, 180, 236, 164, 45,
43, 41, 193, 208, 0, 51, 136, 186, 244, 165,
255, 48, 141, 105, 76, 193, 227, 132, 132, 89,
1, 42, 66, 3, 154, 78, 129, 38, 180, 46,
148, 35, 67, 71, 99, 233, 67, 101, 170, 52,
137, 74, 225, 10, 57, 219, 153, 207, 252, 99,
182, 46, 104, 225, 1, 123, 136, 80, 132, 0,
52, 161, 166, 122, 161, 104, 65, 77, 26, 81,
35, 58, 7, 252, 56, 138, 66, 60, 139, 218,
128, 10, 116, 207, 136, 225, 179, 0, 2, 24,
193, 215, 184, 198, 181, 145, 144, 96, 28, 168,
160, 80, 79, 175, 218, 138, 39, 104, 117, 171,
70, 136, 166, 29, 158, 118, 139, 62, 204, 146,
68, 37, 178, 26, 69, 6, 176, 86, 72, 76,
226, 176, 136, 141, 4, 216, 6, 48, 10, 3,
253, 33, 174, 22, 82, 92, 93, 239, 42, 211,
110, 237, 53, 114, 21, 120, 192, 44, 171, 102,
205, 68, 56, 160, 3, 221, 16, 134, 37, 50,
49, 2, 48, 53, 228, 180, 95, 50, 222, 39,
6, 96, 8, 171, 9, 194, 97, 115, 93, 69,
218, 156, 247, 210, 190, 20, 0, 68, 124, 24,
81, 53, 221, 20, 12, 72, 172, 168, 163, 167,
61, 201, 103, 242, 101, 204, 124, 193, 128, 33,
165, 227, 17, 242, 18, 33, 138, 32, 165, 98,
21, 172, 112, 69, 227, 160, 217, 213, 219, 134,
40, 179, 147, 235, 236, 60, 42, 32, 9, 76,
128, 9, 70, 46, 146, 32, 5, 251, 129, 144,
231, 88, 35, 95, 200, 221, 255, 209, 7, 32,
240, 13, 81, 172, 110, 21, 97, 144, 46, 117,
105, 17, 187, 10, 232, 54, 159, 186, 74, 0,
4, 236, 1, 163, 236, 117, 106, 26, 161, 210,
210, 150, 170, 113, 141, 15, 134, 137, 65, 99,
154, 135, 50, 189, 80, 14, 35, 113, 11, 118,
76, 154, 158, 118, 67, 18, 12, 146, 228, 131,
155, 85, 250, 199, 239, 162, 49, 224, 243, 146,
110, 27, 198, 91, 174, 130, 149, 71, 142, 191,
56, 88, 22, 24, 136, 222, 30, 30, 32, 152,
9, 79, 37, 18, 196, 200, 199, 127, 183, 167,
191, 253, 161, 69, 85, 94, 2, 19, 136, 59,
81, 56, 165, 148, 201, 1, 204, 107, 222, 116,
143, 208, 200, 53, 73, 78, 92, 78, 60, 68,
8, 44, 204, 203, 251, 245, 49, 127, 4, 49,
203, 141, 55, 99, 146, 211, 22, 143, 19, 32,
112, 241, 33, 126, 60, 155, 11, 208, 150, 86,
24, 184, 237, 30, 26, 192, 192, 36, 31, 130,
126, 248, 152, 210, 150, 160, 241, 100, 40, 19,
196, 143, 128, 244, 210, 248, 74, 7, 130, 4,
147, 73, 28, 103, 42, 195, 144, 135, 64, 95,
61, 120, 68, 203, 79, 186, 94, 154, 169, 20,
42, 55, 119, 15, 120, 3, 166, 50, 241, 180,
193, 137, 30, 31, 82, 157, 99, 152, 213, 17,
40, 208, 0, 63, 47, 0, 208, 110, 138, 161,
140, 147, 21, 141, 58, 213, 88, 89, 49, 64,
75, 78, 255, 116, 98, 141, 160, 128, 176, 33,
194, 33, 129, 164, 82, 120, 64, 54, 88, 23,
126, 102, 238, 197, 3, 57, 182, 143, 29, 254,
18, 79, 214, 184, 73, 48, 49, 179, 195, 208,
201, 32, 27, 66, 209, 73, 13, 110, 224, 2,
76, 35, 64, 121, 43, 76, 32, 30, 200, 108,
236, 64, 147, 164, 99, 10, 129, 17, 13, 200,
130, 39, 197, 12, 37, 0, 32, 0, 128, 9,
88, 160, 107, 101, 17, 216, 192, 42, 144, 65,
40, 219, 101, 62, 68, 49, 229, 9, 27, 193,
131, 11, 99, 205, 139, 145, 128, 215, 5, 217,
246, 12, 12, 148, 177, 3, 100, 212, 64, 7,
156, 154, 129, 64, 228, 229, 71, 177, 228, 0,
27, 48, 106, 129, 75, 138, 130, 131, 164, 152,
155, 1, 78, 112, 245, 126, 152, 205, 110, 94,
64, 128, 24, 156, 139, 201, 10, 54, 197, 174,
100, 196, 68, 147, 235, 122, 198, 14, 133, 55,
19, 75, 137, 241, 37, 200, 64, 37, 153, 12,
212, 80, 73, 27, 129, 2, 101, 107, 83, 195,
17, 81, 129, 74, 5, 139, 6, 60, 168, 35,
14, 249, 97, 165, 0, 63, 3, 79, 247, 214,
7, 190, 79, 149, 239, 23, 224, 128, 7, 4,
164, 139, 69, 46, 16, 43, 147, 23, 225, 2,
5, 208, 2, 153, 115, 213, 112, 5, 72, 41,
50, 157, 68, 129, 24, 113, 64, 42, 117, 105,
145, 44, 221, 187, 177, 90, 216, 226, 255, 150,
23, 8, 51, 6, 52, 96, 0, 166, 175, 149,
29, 163, 19, 33, 73, 183, 90, 122, 179, 167,
34, 199, 110, 106, 74, 56, 157, 18, 11, 22,
153, 33, 196, 59, 113, 152, 26, 129, 180, 81,
166, 146, 5, 148, 7, 156, 241, 85, 215, 57,
192, 80, 149, 128, 118, 55, 50, 61, 214, 3,
80, 1, 212, 73, 85, 199, 95, 173, 139, 93,
48, 225, 244, 168, 113, 82, 35, 143, 1, 177,
45, 134, 188, 179, 10, 85, 211, 202, 61, 15,
65, 14, 72, 191, 2, 36, 15, 239, 196, 2,
160, 128, 5, 150, 156, 210, 88, 96, 146, 149,
80, 222, 96, 143, 57, 168, 6, 168, 149, 213,
130, 122, 213, 49, 124, 102, 244, 49, 41, 10,
16, 176, 13, 8, 126, 240, 121, 133, 229, 35,
113, 133, 95, 249, 217, 242, 146, 53, 208, 84,
13, 82, 160, 169, 199, 56, 31, 6, 232, 210,
161, 228, 119, 61, 74, 82, 194, 160, 45, 48,
8, 5, 10, 93, 37, 129, 85, 174, 6, 248,
109, 19, 190, 44, 37, 236, 68, 195, 132, 251,
5, 232, 114, 62, 100, 216, 245, 174, 95, 102,
198, 130, 181, 39, 46, 207, 221, 130, 130, 220,
183, 87, 28, 17, 216, 64, 106, 190, 15, 126,
70, 194, 114, 54, 55, 67, 126, 242, 131, 77,
37, 129, 46, 89, 132, 69, 158, 130, 3, 59,
208, 27, 252, 102, 119, 205, 226, 49, 245, 50,
67, 250, 34, 0, 255, 34, 134, 8, 64, 194,
0, 5, 112, 0, 251, 167, 70, 239, 68, 31,
239, 225, 85, 211, 148, 93, 180, 147, 0, 34,
96, 2, 218, 4, 25, 66, 20, 42, 239, 146,
25, 6, 241, 128, 52, 17, 28, 251, 160, 119,
150, 130, 2, 200, 3, 36, 165, 0, 43, 2,
227, 123, 45, 181, 52, 221, 34, 27, 33, 120,
79, 116, 243, 36, 11, 16, 2, 148, 65, 3,
184, 132, 73, 133, 210, 130, 232, 210, 39, 228,
68, 28, 207, 33, 28, 157, 17, 20, 18, 128,
127, 119, 177, 80, 218, 209, 127, 50, 35, 79,
243, 148, 31, 83, 3, 88, 65, 72, 15, 67,
216, 27, 217, 192, 49, 29, 51, 35, 43, 240,
46, 207, 209, 44, 207, 81, 80, 58, 17, 127,
38, 225, 2, 24, 160, 1, 216, 145, 29, 14,
229, 121, 48, 245, 30, 9, 179, 133, 13, 243,
48, 101, 21, 88, 87, 131, 8, 11, 48, 2,
39, 208, 2, 112, 146, 57, 196, 213, 22, 51,
52, 28, 103, 88, 2, 109, 232, 132, 6, 85,
121, 38, 147, 70, 120, 177, 50, 177, 178, 29,
118, 136, 87, 66, 32, 81, 121, 88, 81, 117,
112, 49, 26, 69, 86, 7, 130, 11, 6, 210,
0, 37, 232, 81, 248, 64, 134, 167, 2, 129,
156, 33, 82, 41, 67, 137, 41, 213, 80, 239,
209, 129, 152, 24, 11, 52, 53, 30, 156, 88,
30, 102, 0, 31, 186, 56, 1, 236, 81, 82,
30, 190, 248, 139, 42, 181, 82, 66, 133, 133,
179, 232, 129, 52, 85, 83, 230, 145, 140, 202,
184, 140, 230, 161, 139, 195, 120, 137, 108, 19,
4, 0, 59, 0 };

t;$last</td>
<td>$free</td>
</tr>"";

} // while循环结束
echo ""</table>"";
}
else
{
echo ""No data."";
} // if结束($result)
}
else
{
echo ""No UserName Entered. Please go back and reenter UserName"";
} // if结束($UserName)

echo ""<p></p>"";

include ('links.x');

?>

</body>
</html>--------------------------------------------------------------------------------
解释:

  这一部分包含两个主要部分。第一部分从前一个表单中得到数据,并将它们插入到数据库中。第二部分
从数据库中打印出表的内容。第二部分同我在查看数据库部分中所演示的一样。

  第一部分:

  首先我们象通常一样使用mysql_connect()来同数据库连接。

  然后我们使用下面查询:

$query = ""insert into tbl values ('$idx','$','$LastName','$FreeText')"";

  这个查询使用从前面表单传递过来的$idx,$UserName,$LastName和$FreeTExt变量,并将它们插入到
tbl表中。

  注意,我在脚本中所作的注释。使用一个注释可以用""//"",服务器将忽略此行的后面部分。

  简单,不是吗?

  从数据库中编辑一条记录:

  让我们假设一下,我们想修改数据库中存在的记录。在前面,我们看到有一个叫set的SQL命令用来设置
数据库中存在字段的值。我们将使用这个命令来修改数据库中的整条记录。

  考虑下面的脚本:
--------------------------------------------------------------------------------
edit.php3:

<html>
<head><title>Editing an entry from the database</title>
</head>

<body bgcolor=#ffffff>
<h1>Edit an entry</h1

<?

mysql_connect() or die (""Problem connecting to DataBase"");
$query = ""select * from tbl"";
$result = mysql_db_query(""example"", $query);

if ($result)
{
echo ""Found these entries in the database:<br>"";
echo ""<table width=90% align=center border=1><tr>
<td align=center bgcolor=#00ffff>idx</td>
<td align=center bgcolor=#00FFFF>User Name</td>
<td align=center bgcolor=#00FFFF>Last Name</td>
<td align=center bgcolor=#00FFFF>Free Text</td>
</tr>"";

while ($r = mysql_fetch_array($result))
{
$idx = $r[""idx""];
$user = $r[""UserName""];
$last = $r[""LastName""];
$text = $r[""FreeText""];

echo ""<tr>
<td align=center>
<a href=""editing.php3?idx=$idx&user=$user&last=$last&text=$text"">$idx</a></td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>"";

}
echo ""</table>"";
}
else
{
echo ""No data."";
}

mysql_free_result($result);
include ('links.x');

?>

</body>
</html>--------------------------------------------------------------------------------
  如你所见,这里的代码有些熟悉。第一部分只是打印出数据库中表的内容。注意,有一行不太一样:

<a href=""editing.php3?idx=$idx&user=$user&last=$last&text=$text"">$idx</a>

  这一行建立了一个到editing.php3的一个链接,并且给新的脚本传递了一些变量。同表单方式很象,只
是使用的是链接。我们将信息转换成:变量和值。注意,为了打印出 "" 符号,我们需要使用 ""否则服务器
将把它看成PHP脚本的一部分并且作为被打印的信息。

  我们想将数据库中的记录全部转换到过,这样我们就可以得到表中的确切的数据,以便我们修改它容易
一些。

--------------------------------------------------------------------------------
Editing.php3:

<html>
<head><title>Editing an entry</title>
</head>

<body bgcolor=#ffffff>
<h1>Editing an entry</h1>
<form method=""post"" action=""editdb.php3"">

<table width=90% align=center>

<tr><td>idx:</td><td><?php echo ""$idx"";?></td></tr>

<tr><td>UserName:</td><td><input type=text name=UserName size=40 maxlength=100
value=""<?php echo ""$user"";?>""></td></tr>

<tr><td>LastName:</td><td><input type=text name=LastName size=40 maxlength=100
value=""<?php echo ""$last"";?>""></td></tr>

<tr><td>Free Text:</td><td><input type=text name=FreeText size=40 maxlength=100
value=""<?php echo ""$text"";?>""></td></tr>

<tr><td></td><td><input type=submit value=""Edit it!""></td></tr></table>

<input type=hidden name=idx value=""<?php echo ""$idx"";?>"">

</form>

<?php include ('links.x');?>
</body>
</html>--------------------------------------------------------------------------------
  好,这个脚本很简单。我们要关心的是,当表单打印出来时,它记录了当前记录的数据,通过在 <input
type= > 命令中的value属性。这些数据是从前一个页面传递过来的。

  现在,如果我们不改变记录的信息,它将传回当前值,即缺省值。如果我们改变了字段的值,字段的值
将变成新的值。接着我们可以将新值传给另一个脚本,它将会改变MySQL表中的值。

--------------------------------------------------------------------------------
editdb.php3:

<?php

mysql_connect() or die (""Problem connecting to DataBase"");

$query = ""update tbl set
idx='$idx',UserName='$UserName',LastName='$LastName',FreeText='$FreeText' where
idx='$idx'"";

$result = mysql_db_query(""example"", $query);
$query = ""SELECT * FROM tbl"";
$result = mysql_db_query(""example"", $query);

if ($result)
{
echo ""Found these entries in the database:<br><p></p>"";
echo ""<table width=90% align=center border=1><tr>
<td align=center bgcolor=#00FFFF>idx</td>
<td align=center bgcolor=#00FFFF>User Name</td>
<td align=center bgcolor=#00FFFF>Last Name</td>
<td align=center bgcolor=#00FFFF>Free Text</td>
</tr>"";

while ($r = mysql_fetch_array($result))
{
$idx = $r[""idx""];
$user = $r[""UserName""];
$last = $r[""LastName""];
$text = $r[""FreeText""];

echo ""<tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>"";

}
echo ""</table>"";
}
else
{
echo ""No data."";
}

mysql_free_result($result);

include ('links.x');

?>--------------------------------------------------------------------------------
  基本上要关心的一件事情是下面一行:

$query = ""update tbl set idx='$idx',UserName='$UserName',LastName='$LastName',FreeText='$FreeText' where idx='$idx'"";

  注意,它与我们在前面MySQL部分解释的语法相同。另一件事,注意这个脚本改变的是idx=$idx的记录,
如果表中有多条idx等于$idx的记录,所以这些记录都将被改变。如果我们想更严格一些,我们可以象下面
改动一下where子句:

$query = ""update tbl set idx='$idx',UserName='$UserName', LastName='$LastName',FreeText='$FreeText' where idx='$idx' and UserName='$UserName' and LastName='$LastName' and FreeText='$FreeText'"";

  这个语法将检查所有的字段,而不仅仅是检查idx。

  从数据库中删除一条记录:

  好,删除很容易。我们仍然需要两个脚本:一个用来选择要删除的记录(基本上同上面选择要编辑的记
录一样),一个用来真正地进行删除和打印新的表格。

--------------------------------------------------------------------------------
del.php3:

<html>
<head><title>Deleting an entry from the database</title>
</head>

<body bgcolor=#ffffff>
<h1>Del an entry</h1>

<?

mysql_connect() or die (""Problem connecting to DataBase"");
$query = ""select * from tbl"";
$result = mysql_db_query(""example"", $query);

if ($result)
{
echo ""Found these entries in the database:<br><p></p>"";
echo ""<table width=90% align=center border=1><tr>
<td align=center bgcolor=#00ffff>idx</td>
<td align=center bgcolor=#00FFFF>User Name</td>
<td align=center bgcolor=#00FFFF>Last Name</td>
<td align=center bgcolor=#00FFFF>Free Text</td>
</tr>"";

while ($r = mysql_fetch_array($result))
{
$idx = $r[""idx""];
$user = $r[""UserName""];
$last = $r[""LastName""];
$text = $r[""FreeText""];

echo ""<tr>
<td align=center>
<a href=""dele.php3?
idx=$idx&UserName=$user&LastName=$last&FreeText=$text"">$idx</a></td>
<td>$user</td>
<td>$last</td>
<td>$dtext</td>
</tr>"";

}
echo ""</table>"";
}
else
{
echo ""No data."";
}

mysql_free_result($result);
include ('links.x');

?>

</body>
</html>
--------------------------------------------------------------------------------
  这个脚本与我们用过的编辑脚本很象,所以可以看一下那里的说明。

--------------------------------------------------------------------------------
dele.php3:

<?php

mysql_connect() or die (""Problem connecting to DataBase"");
$query = ""delete from tbl where idx='$idx' and UserName='$UserName' and
LastName='$LastName' and FreeText='$FreeText'"";

$result = mysql_db_query(""example"", $query);
$query = ""SELECT * FROM tbl"";
$result = mysql_db_query(""example"", $query);

if ($result)
{
echo ""Found these entries in the database:<br><p></p>"";
echo ""<table width=90% align=center border=1><tr>
<td align=center bgcolor=#00FFFF>idx</td>
<td align=center bgcolor=#00FFFF>User Name</td>
<td align=center bgcolor=#00FFFF>Last Name</td>
<td align=center bgcolor=#00FFFF>Free Text</td>
</tr>"";

while ($r = mysql_fetch_array($result))
{
$idx = $r[""idx""];
$user = $r[""UserName""];
$last = $r[""LastName""];
$text = $r[""FreeText""];

echo ""<tr>
<td>$idx</td>
<td>$user</td>
<td>$last</td>
<td>$text</td>
</tr>"";

}
echo ""</table>"";
}
else
{
echo ""No data."";
}

mysql_free_result($result);

include ('links.x');

?>--------------------------------------------------------------------------------
  这个脚本看上去很熟悉,唯一不同的就是删除查询的语法:

$query = ""delete from tbl where idx='$idx' and UserName='$UserName' and LastName='$LastName' and FreeText='$FreeText'"";

  这个查询将会删除所有与前面的脚本传递来的信息相配匹的记录。容易吧。

  好了,这就是全部内容了。

转自WeberDev.com

[ 责编:felixsun 点击: ]

浏览评论 | 发给好友 | 打印版本

 相关文章


Copyright © 2004 SunCN.Net All rights reserved. 阳光网络 版权所有 Power by iWPC