PHP题: 一次性上传 5 个 gif 图片到 upload 目录,每图片大小不能超过 100KB;
当其中任何一个图片不符合要求/已存在同名文件/复制图片出现错误时,
删除已复制的文件并给出错误提示。

 1<form action="test.php" enctype="multipart/form-data"method="POST">
 2    file1:<input type="file" name="gif1" value=""/><br />
 3    file2:<input type="file" name="gif2" value=""/><br />
 4    file3:<input type="file" name="gif3" value=""/><br />
 5    file4:<input type="file" name="gif4" value=""/><br />
 6    file5:<input type="file" name="gif5" value=""/><br />
 7    <input type="submit" name="submit" value="上传">
 8</form>
 9<?php
10define("FileDocument",'C:\wamp\www\test\upload\\');
11function upload($oFile)
12{
13    if(! is_dir(FileDocument))
14    mkdir(FileDocument);
15    $result = move_uploaded_file($oFile['tmp_name'],FileDocument.$oFile['name']);
16    if($result == 1)
17    echo $oFile['name']."上传成功。";
18    else
19    echo $oFile['name']."上传失败。";
20}
21function validateInfo($oFile)
22{
23    $info = "";
24    $mimeType ="image/pjpeg";
25    if($oFile['type'!= $mimeType)
26    {
27        if($oFile['type']!='')
28        {
29            $info .= "文件 ".$oFile['name']." 是".$oFile['type']."文件格式,而不是".$mimeType."格式文件。";
30        }
31        else 
32        {
33            $info .= "文件 ".$oFile['name']." 不是$mimeType格式文件。";
34        }
35    }
36    else
37    {
38        $filename = FileDocument.$oFile['name'];
39        if(file_exists($filename))
40        {
41            $info .= "文件 ".$oFile['name']."已存在。";
42        }
43        else
44        {
45            if($oFile['size'>= 102400)
46            {
47                $info .= "文件 ".$oFile['name']."大小超过100kb。";
48            }
49        }
50    }
51    return  $info;
52}
53
54function processUpload($oFile)
55{
56    if(isset($oFile))
57    {
58        if(is_uploaded_file($oFile['tmp_name']))
59        {
60            $info = validateInfo($oFile);
61            if($info =='')
62                upload($oFile);
63            else
64                echo $info;
65        }
66    }
67}
68
69processUpload($_FILES['gif1']);
70processUpload($_FILES['gif2']);
71processUpload($_FILES['gif3']);
72processUpload($_FILES['gif4']);
73processUpload($_FILES['gif5']);
74
75/*PHP题: 一次性上传 5 个 gif 图片到 upload 目录,每图片大小不能超过 100KB;
76当其中任何一个图片不符合要求/已存在同名文件/复制图片出现错误时,
77删除已复制的文件并给出错误提示。
78*/
79?>



PHP正则题: 用户用在线编辑器发布文章时,粘贴了多幅远程图片.
要求把找出远程图片的路径,把它保存到本站服务器,并把图片路径重写为本地服务器地址.

$content = '如图所示: <img src="
http://www.baidu.com/img/logo.gif" alt="图一" />';
找出图片 "
http://www.baidu.com/img/logo.gif" 保存为 attachment/1.gif 后,改写文章内容为
$content = '如图所示: <img src="attachment/1.gif" alt="图一" />';

 1<?php
 2define("FileDocument",'C:\wamp\www\test\\');
 3$content = <<< CONTENT
 4如图所示: <img src="http://www.gdut.edu.cn/newgdut/images/gdut_top-1.jpg" alt="图1" /><br />
 5如图所示: <img src="http://www.gdut.edu.cn/newgdut/tpxw/tp08/tpxw080504.gif" alt="图2" /><br />
 6如图所示: <img src="http://www.phpweblog.net/images/xml.gif" alt="图3" /><br />
 7CONTENT;
 8// 回调函数
 9function ChangeToLocal($matches)
10{
11    $path = $matches[4];//图片链接
12    $para = split("[\/]",$path);
13    $filename = end($para);
14    if(preg_match("/\.(gif|jpeg|jpg|png|bmp)$/i",$filename))
15    {
16        down($path,$filename);
17        return  ereg_replace($path,"./".$filename,$matches[0]);//$path;
18    }
19    return  "";
20}
21
22function down($url,$filename//下载图片
23{
24    if(!is_dir(FileDocument))
25    mkdir(FileDocument);
26    $localfile = FileDocument.$filename;
27    //设置获取基本变量
28    //打开远程文件
29    $fp = fopen($url, "rb");
30    if (!$fp){
31        exit();
32    }
33    //打开本地文件
34    $sp = fopen($localfile, "wb");
35    if (!$sp){
36        exit();
37    }
38    //下载远程文件
39    //echo "Downloading, please waiting\n\n";
40    while (!feof($fp)){
41        $tmpfile .= fread($fp, 1024);
42    }
43    //保存文件到本地
44    fwrite($sp, $tmpfile);
45    fclose($fp);
46    fclose($sp);
47    //echo "Download file ". $filename ." succeed!\n\n";
48}
49
50$content = preg_replace_callback("/(<img(.*)src=\s*)(\")(.*)(\")(.*)\/>/Ui","ChangeToLocal",$content);//用回调函数执行正则表达式的搜索和替换
51echo $content;
52?> 

 


MySQL 题:下面的语句用order by,要求先小写字母,再大写字母,后数字的升序排列:
CREATE TABLE `tjob` (
`title` VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
) ENGINE = MYISAM;

INSERT INTO `tjob` VALUES ("11"), ("22"), ("33"), ("aa"), ("bb"), ("cc"), ("AA"), ("BB"), ("CC");

SELECT * FROM `tjob`

提示: 正确的查询结果应为
aa
bb
cc
AA
BB
CC
11
22
33

SELECT * FROM `tjob` ORDER BY  `title` COLLATE   SQL_EBCDIC273_CP1_CS_AS 

(搜索出来的方法,还没测试成功。主要就是SQL_EBCDIC273_CP1_CS_AS   这个校对规则没有设置好。)


MySQL 题:
MySQL版本为 5.0;论坛默认是"显示30天前的帖子",其查询语句为:

$fromtime = time() - 86400*30; //30天前的当前时刻
mysql_query("select * from threads where forumid=1 and posttime>$fromtime ");

后来改为:

$day = getdate(time()-86400*30);
$fromtime = mktime(0,0,0,$day['mon'],$day['mday'],$day['year']); //30天前的 00:00:00
mysql_query("select * from threads where forumid=1 and posttime>$fromtime ");

请问:这样改有什么好处?请说明理由。
在对查询结果要求不高,两者均符合要求的情况下,有没有必要进行更改,为什么?

 答:改了之后,就可以查询到第三十天前的零时到现时的记录。改了比较好,更加符合默认设置。

JavaScript 题:
页面编码为utf-8,因数据库的限制,表单域 details 的输入长度不能超过 250 个字节。

编写 JavaScript 程序,用户在 details 中输入后提示所含的字节数为多少,若超过 250 个字节,则自动更改其内容为<=250个字节。

提示:
utf-8 编码中:
每个英文字母、数字所占的空间为1 字节;泛欧语系、斯拉夫语字母占2字节(如αβπ);汉字占3字节。
自动截短时,总字节数应为 248~250 个。

 


JavaScript 题:
循环输出 5 个输入框,初始值为空。
任何一个失去焦点(包括焦点移到另一个输入框)时,检查该控件的值,若为空或非数字,清空控件的值并把焦点重新置于该控件。
提示:注意不要造成死循环!

 

HTML 题:
我们有时要做下拉导航菜单,但浮动层常被页面的 SELECT 表单、Flash 等遮住。
请说下解决的思路。