实验综合成绩
            (百分制)     
实验评阅教师签名
其中
实验态度
及格
不及格
实验报告
及格
不及格
华北科技学院管理学院
实验报告

实验时间:2014 11 12 12
一、 实验运行环境
Windows 7计算机系统; php5.0apache2.2
二、实验目的
1、掌握正则表达式的使用方法
2、掌握php获取html表单数据的方法
3、掌握php中的文件处理的使用方法
4、掌握类的创建方法及应用
三、实验要求
按要求编写程序并运行,并分析程序运行过程,完成实验内容后撰写实验报告。
1、某表单及验证表单的程序如3-1文件夹,请运行该程序并理解check.js文件中的正则表达式。
正则表达式包括元字符和文本字符,放置在界定符“/”之间,规定表单填写的文本格式。如上图邮箱填写文本框,规定邮箱必须拥有“@”与“.”,否则提示错误。
2、使用正则表达式编写程序验证电话号码或url地址。
Js核心代码:
function checkregtels(regtels){
    var str=regtels;
    var Expression=/^(\d{3}-)(\d{8})$|^(\d{4}-)(\d{7})$|^(\d{4}-)(\d{8})$/;
    var objExp=new RegExp(Expression);
    st(str)==true){
        return true;
    }else{
        return false;
    }
}
function chkreg(form,label){
    if(label==1 || label=="all"){
        l.value==""){
              check_mtel.innerHTML="请输入电话号码!";
              return false;
            }else if(!l.value)){
js正则表达式验证数字和字母              check_mtel.innerHTML="电话号码的格式不正确!";
              return false;
            }else if(l.value)){
                  check_mtel.innerHTML="电话号由数字组成!";
              return false;
            }else{
                  check_mtel.innerHTML="";
                      }
      }
Index.php
<td height="30" align="right">固定电话:</td>
<td height="30" colspan="2" align="left"> <input type="text" name="gtel" size="20"  onBlur="chkreg(reg_check,6)">
<div id="check_gtel"></div></td>
<td height="30" align="right">移动电话:</td>
    <td height="30" colspan="2" align="left"> <input type="text" name="mtel" size="20"  onBlur="chkreg(reg_check,5)">
    <div id="check_mtel" ></div></td>
Index_ok.php核心代码:
<td height="22" align="right" class="style4" >手机:</td>
<td align="left" class="style4"> <?php echo $_POST[mtel];?></td>
<td height="22" align="right" class="style4" >电话:</td>
<td align="left" class="style4"> <?php echo $_POST[gtel];?><strong></strong></td>
3、字符串:$text = "华北科技学院电子商务B11-123班电子商务应用开发技术课程";
请编写程序截取该字符串的前16个字。
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<?php
$str = "华北科技学院电子商务B11-123班电子商务应用开发技术课程";
function msubstr($str, $start, $len) {
    $tmpstr = "";
    $strlen = $start + $len;
    for($i = 0; $i < $strlen; $i++) {
        if(ord(substr($str, $i, 1)) > 0xa0) {
            $tmpstr .= substr($str, $i, 2);
            $i++;
        } else
            $tmpstr .= substr($str, $i, 1);
    }
    return $tmpstr;
}
function  showShort($str,$len)   
{   
    $tempstr = msubstr($str,0,$len);   
    if ($str<>$tempstr)   
        $tempstr.=  "/"; 
    return  $tempstr;
    echo $tempstr;   
}
echo showShort($str,27);    ?>
4、某字符串:$pizza  = "a1 a2 a3 a4 a5 a6";  //通过空格分隔
请编写程序以空格作为分隔符分隔该字符串并分别输出。
<?php
$pizza  = "a1 a2 a3 a4 a5 a6";
$abc = explode(" ",$pizza,6);
print_r($abc);
?>
5、某表单如下,请编写获取表单的程序:
<?php
if (($_POST["submit"]=="提交")&&($_POST["fond"]!
=null)){
    echo "姓名:".$_POST["user"]."<br/>";
    echo "性别:".$_POST["sex"]."<br/>";
    echo "密码:".$_POST["pwd"]."<br/>";
    echo "学历:".$_POST["select"]."<br/>";
    echo "爱好:";
        for ($i=0;$i<count($_POST["fond"]);
$i++)
            echo $_POST["fond"]
[$i]."  ";
    echo"<br/>";
    echo "个人简介:".$_POST["intro"]."<br/>";
}
?>
6、利用ajaxJQuery实现表单验证。运行3-6文件夹中的程序并理解ajaxJQuery实现表单验证的方法。
7、编写程序利用copy 函数实现文件的上传。
test3.7.php
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<title>文件上传</title>
</head>
<body>
<?php
if($_POST['post_flag']==1)
{
$a=copy($myfile,"upload_file/".$myfile_name);
}
?>
<form enctype="multipart/form-data"
action="index2.php" method="post">
您的大名: <input type=text name=user><br>
文件名称: <input name="myfile" type="file"><br>
<input type="hidden" name="post_flag" value="1">
<input type="submit" value="提交">
</form>
</body>
</html>
Index2.php
<?php
    $myfile = $_FILES['myfile']['tmp_name'];
    if($myfile != "")
    {
        if(copy($myfile,$_FILES['myfile']['name']))
        {
            echo "上传成功";
        } else
        {
            echo "上传失败";
        }
        unlink($myfile);
    } else
    {
        echo "没有可上传的文件";
    }
?>
8、利用php中的文件处理技术编写程序如下:请运行该程序并理解。
<?php
$filename = '';
$somecontent = "我先被写入的!\r\n";
$somecontent1 = "我后被写入的!\r\n";
// 首先我们要确定文件存在并且可写
if (is_writable($filename)) {
    // 在这个例子里,将使用只写模式打开$filename
    // 文件指针将会在文件的开头,如果原来文件中有其他数据,则会被删除
      if (!$handle = fopen ($filename, "w")) {
        print "不能打开文件 $filename";
        exit;
    } // 将$somecontent写入到我们打开的文件中。
    if (!fwrite($handle, $somecontent)) {
        print "不能写入到文件 $filename";
        exit;
    }
    print "成功地将\" $somecontent \"写入到文件$filename<br>";
    fclose($handle);
    $handle = fopen ($filename, "w");  //再次打开
    //继续打开文件写入另外一个字符串,原来写入的数据则被清除
    fwrite($handle, $somecontent1); 
    fclose($handle);
    print "成功地将\" $somecontent1 \"写入到文件$filename";
} else {
    print "文件 $filename 不可写";
}?>
9、请编写程序实现动态页面转化为静态页面。
d.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>{title}</title>
</head>
<body>
    {file}
</body>
</html>
test3.9.php
<?php
$title = "标题";
$file = "文件";
$fp = fopen ("temp.html","r");
$content = fread ($fp,filesize ("d.html"));
$content = str_replace ("{file}",$file,$content);
$content = str_replace ("{title}",$title,$content);
$filename = "test.html";
$handle = fopen ($filename,"w"); if (!is_writable ($filename)){
die ("文件:".$filename."不可写,请检查其属性后重试!");
}
if (!fwrite ($handle,$content)){
die ("生成文件".$filename."失败!");
}
fclose ($handle); //关闭指针
die ("创建文件".$filename."成功!");
?>
10、使用类编写程序如下:请运行该程序并理解。
<?php
class Foo  //定义基类
{
    //使用static关键字定义变量
    public static $my_static = 'foo';
    public function staticValue() {
        return self::$my_static;
    }
}
class Bar extends Foo  //创建基类
{
    public function fooStatic() {
        return parent::$my_static;  //返回基类的变量$my_static
    }
}
//打印基类的$my_static变量
//虽然没有创建类实例,但是可以直接访问static变量
print 'Foo::$my_static结果为'.Foo::$my_static . "<br>";
$foo = new Foo();  //创建基类实例
print $foo->staticValue() . "<br>";  //通过方法放回static变量
print $foo->my_static . "<br>";      // $my_static 为未定义的属性,所以为空
//通过子类访问$my_static
print Bar::$my_static . "<br>";
$bar = new Bar();
print $bar->fooStatic() ;  //返回父类的static变量?>
11、利用类编写程序实现文件上传。
test3.11.php
<?php
$Submit = $_FILES['Submit']['tmp_name'];
if ($Submit != '')
{
$fileArr['file'] = $file;
$fileArr['name'] = $file_name;
$fileArr['size'] = $file_size;
$fileArr['type'] = $file_type;
$filetypes = array('gif','jpg','jpge','png','txt');
$savepath = "C:\AppServ\myphp\";
$maxsize = 0;
$overwrite = 0;
$upload = new upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize);
if (!$upload->run())
{
echo "上传失败".$upload->errmsg();
}}?>
12php显示中文时,经常出现乱码,请编写一个编码转换类,从而实现编码的自动转换。
<?php
class changecode{
    private $str;
    private $input;
    private $output;
    function __construct($input='',$output='gb2312'){
        $this->input = $input;
        $this->output = $output;
    }
    protected function chgcode($str){
        if($this->input != ''){
            $this->str = iconv($input,$output,$str);
        }else{
            $this->str = mb_convert_encoding($str,$output);
        }
    }
    function getStr($str){
        $this->chgcode($str);
        return $this->str;
    }
    function setInput($input){
        $this->input = $input;
    }
    function setOutput($output){
        $this->output = $output;
    }
    function getInput(){
        return $this->input;
    }
    function getOutput(){
        return $this->output;
    }
}
?>
13、做web开发时,需要对各种情况作出处理,并输出相应的处理。请编写一个输出类,根据不同的情况,输出不同的处理结果。
test3.13.php:
<table border="0" cellpadding="0" cellspacing="0">
<form method="post" action=" test3.13_2.php ">
    <tr>
        <td>请输入用户名称:</td>
        <td><input name="name" type="text" size="20" value="" /></td>
    </tr>
    <tr>
    <td><input type="submit" value="确认" /></td>
    </tr>
</form>
</table>
test3.13_2.php:
<?php
    include_once "function.php";
    if($_POST['name'] != "刘昊"){
        $tm -> refurbish('用户名错误');
    }else{
        $tm -> skipachange('登陆成功','main.php');
    }
?>
function.php
<?php
class TakeMsg{
    function __construct(){
    }
    function simpleMsg($mess){
        echo $mess;
    }   
    function skipachange($mess,$url=NULL){
        if(!is_null($url)){
            echo "<script>alert('".$mess."');location='".$url."';</script>";
        }else{
            echo "<script>alert('".$mess."');load;</script>";
        }
    }
    function refurbish($mess,$sec=3,$url=NULL){
        if(is_null($url)){
            $hr = $_SERVER['HTTP_REFERER'];
            echo $mess.'<br>';
            echo '页面将于'.$sec.'秒后跳转。如果没有跳转,请点击这里<a href="'.$hr.'">返回</a>';
            echo '<meta http-equiv="refresh" content="'.$sec.';url='.$hr.'"/>';
        }else{
            echo $mess.'<br>';
            echo '页面将于'.$sec.'秒后跳转。如果没有跳转,请点击这里<a href="'.$url.'">返回</a>';
            echo '<meta http-equiv="Refresh" content="'.$sec.';url='.$url.'">';
        }
    }
}
$tm = new TakeMsg();
?>
main.php
<?php
    include_once "function.php";
    $tm -> simpleMsg('欢迎光临');
?>
四、实验内容和步骤(续)
五、实验结果分析与总结
次实验我基本掌握了正则表达式的使用方法,也实现了利用正则表达式限定表单输入值,同时也学会了php获取html表单数据的方法,理解了php中的文件处理的使用方法和类的创建方法,在实验过程中对于函数的编写和调用还比较生疏,需要参考书本和实例来完成,而且对于类的创建和使用还需要多学习。