|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
现在,也有了从事软件工程的想法,在经过了一个月的PHP培训学习之后,发现其实软件工程并没有想像中的那么难。 综述:表单作为用户提交信息的一个关头路子,一向是PHP编程中的一个最根基的方面,也是入门者会碰到的一个大的重点与难点。咱们选择有关处置联系关系数、取得同名checkbox的拔取值、上传文件方面对照轻易令众猜疑的中央停止归
若何利用表单传递联系关系数组?
经由过程表单传递的联系关系数组能被 each()函数读取,法式以下:
//test1.php
<form action="test2.php" method=post>
<input type=hidden name="var[Address]" value="Beijing">
<input type=hidden name="var['age']" value="20">
<input type=submit value=submit>
这个名为var[Address]值为"Beijing"的元素递交到test2.php后,就成了一个联系关系数组,var["Address"]="Beijing":
//test2.php
<?
echo $var["Address"];
?>
输入了局为:Beijing
若何处置同名checkbox?
详细代码:
test1.php:
<FORM METHOD=POST ACTION="test2.php">
苹果<INPUT TYPE="checkbox" NAME="come[]" VALUE="苹果"><BR>
鸭梨<INPUT TYPE="checkbox" NAME="come[]" VALUE="鸭梨"><BR>
喷鼻蕉<INPUT TYPE="checkbox" NAME="come[]" VALUE="喷鼻蕉"><BR>
西瓜<INPUT TYPE="checkbox" NAME="come[]" VALUE="西瓜"><BR>
<INPUT TYPE="submit" VALUE="提交">
</FORM>
test2.php:
你的选择:<BR>
<?
for ($i=0;$i<sizeof($come);$i++) echo $come[$i],"<BR>";
?> 如许从test1.php提交过去的一切名为come[]的元素就构成了一个数组,如许咱们就能够很轻易地处置了.
如何才干观察提交的一切信息?
普通来讲,PHP引擎将每个表单域放到一个叫做$HTTP_POST_VARS的数组中,所以咱们可以经由过程读取这个数组就能够观察提交的一切信息:
<?
echo "POST 所送出的值为:<BR>";
while ( list( $key, $val ) = each( $HTTP_POST_VARS ) ) {
echo "$key => $val<BR>";
}
?>
若何同时上传多个文件?
咱们来看一个例子。
上面是上传文件的提交页面,使用该页面你不但可以生成 1000 个上传文件框(也能够是恣意多个 0~n ),并且可分离指出它们的保留途径。
提交页面的文件输出框为定名为: file0,file1,...file100,...fileN
提交页面的文件途径框为定名为: path0,path1,...path100,...pathN
因为页面的生成十分复杂,所以就不在此多注释了,用 javascript 界说了两个函数,check() 用于提交页面,create()用于生成文件上传框。
phpfileup.htm
--------------------------------------------------------
【文件php9.txt】
--------------------------------------------------------
文件提交页面既已生成,上面义务就很明白了:将提交的文件内容保留到办事器上。
咱们先界说一个文件保留函数 fup() 它有两个参数:
$filename: 文件内容
$fname: 文件名(包括途径)
剩下的就是写一个轮回将文件顺次写入办事器。
PHP 关于上传文件的处置是如许的:假如提交的文件框名为 file0, 那末提交给 PHP 的文件内容保留在变量 $file0 中,而文件名则保留在 $file0_name 中。如许在这个轮回中咱们要做的就是将提交页面提交的内容分化出来,完成进程请看上面的代码。
fileup.php
<<?
function fup($Local_file_name,$Remote_file_name) {
If($Local_file_name != "none") {
copy($Local_file_name,$Remote_file_name);
unlink($Local_file_name);
}
}
for($i=0;$i<$cnt;$i++) {
$ffnn="file".$i;
$ffnnname=$ffnn."_name";
$ffpath="path".$i;
//print $$ffnn;
print $$ffnnname;
print "<BR>";
fup($$ffnn,$$ffpath.$$ffnnname); //"../www/test/tmp/"
}
?> 若何对页面停止抓取和剖析? 起首,必需决意咱们将抓取的URL地址。可以经由过程在剧本中设定或经由过程$QUERY_STRING传递。为了复杂起见,让咱们将变量直接设在剧本中。
<?
$url = 'http://www.domain.com';
?>
第二步,咱们抓取指定文件,而且经由过程file()函数将它存在一个数组里。
<?
$url = 'http://www.domain.com';
$lines_array = file($url);
?>
好了,如今数组里已有了文件了。然而,咱们想剖析的文本能够不全在一行外面。为懂得决这个文件,咱们可以复杂地将数组$lines_array转化成一个字符串。咱们可使用implode(x,y)函数来完成它。假如在前面你想用explode(将字符串变量数组),将x设成"|"或"!"或其它相似的分隔符能够会更好。然而出于咱们的目标,最好将x设成空格。y是另外一个需要的参数,由于它是你想用implode()处置的数组。
<?
$url = 'http://www.domain.com';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
?>
如今,抓取任务就做完了,上面该停止剖析了。在这个例子中,咱们想失掉在<head>到</head>之间的一切器材。为了剖析出字符串,咱们还需求正轨表达式。
<?
$url = 'http://www.domain.com';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
eregi("<head>(.*)</head>", $lines_string, $head);
?>
在下面的代码中,eregi()函数按上面的格局履行:
eregi("<head>(.*)</head>", $lines_string, $head);
"(.*)"暗示一切器材,代表在<head>和</head>间的一切器材。
$lines_string是咱们正在剖析的字符串,$head是剖析后的了局寄存的数组。
最初,咱们可以输入数据。由于仅在<head>和</head>间存在一个实例,咱们可以平安的假定数组中仅存在着一个元素,并且就是咱们想要的。
<?
$url = 'http://www.domain.com';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
eregi("<head>(.*)</head>", $lines_string, $head);
echo $head[0];
?>
如果不会怎么办,我的视频教程里有个最简单的留言板 最开始离不开模仿, |
|