系统功能:学生在线上传作业;
共有两个文件:stu_submit.php   stu_submit_result.php
代码如下:stu_submit.php   <?php
if($submit=="提交"){ require_once('common.php'); // 引入公共文件,其中实现了SQL注入漏没检查的代码 // trim()函数可以截去头尾的空白字符
$title = trim($_POST['title']);
$weburl = trim($_POST['weburl']);
$file = $_POST['file'];
$path = './upfiles/'. $_FILES['file']['name'];
$memo = trim($_POST['memo']);
$datetime = time(); if (!empty($title)) { // 用户填写了数据才执行数据库操作
//---------------------------------------------------------
// 数据验证, empty()函数判断变量内容是否为空
if (empty($title) || empty($weburl)||empty($file)) {
echo '数据输入不完整';
exit;
}
    
//---------------------------------------------------------    // 调用mysqli的构造函数建立连接,同时选择使用数据库'homework'
$db = @new mysqli("127.0.0.1", "root", "see2006", "homework");
// 检查数据库连接
if (mysqli_connect_errno()) {
echo "数据库连接失败!<br>\n";
echo mysqli_connect_error();
exit;   // 退出程序,后面的所有语句将不再执行
}

if (move_uploaded_file($_FILES['file']['tmp_name'],$path)) { 
// 将提交的作业信息插入数据库的t_student_work表

$sql = "INSERT INTO t_student_work (f_title, f_weburl,f_memo,f_,f_datetime) VALUES";
$sql .= "('$title','$weburl','$memo','0','$datetime')";
$rs = $db->query($sql);


if($rs=true){ 
echo "作业上传成功!!";
echo "<meta http-equiv=\"Refresh\" content=\"5;url=stu_submit_result.php?lmbs=文件上传\">5秒后转入提交作业结果查询页面"; 
}
else{echo "作业上传失败!!";
          echo "<meta http-equiv=\"Refresh\" content=\"5;url=stu_submit_result.php?lmbs=文件上传\">5秒后转入提交作业结果查询页面";}
}

//echo "<font color='red' size='5'>您已注册成功!</font><br />\n";
        //header("Location: stu_submit_result.php?uid=$studentid");
// // 关闭数据库连接
$db->close();
}
}
?><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Registering form</title><link href="style/basic.css" rel="stylesheet" type="text/css" />
<link href="style/index.css" rel="stylesheet" type="text/css" /><script language='javascript'>
<!--
// 验证表单数据有效性的函数
// 当函数返回true时,说明验证成功,表单数据正常提交
// 当函数返回false时,说明验证失败,表单数据被终止提交
function doCheck()
{
         var title         = document.frmRegister.title.value;
var weburl       = document.frmRegister.weburl.value;
var file      = document.frmRegister.file.value;
var memo          = document.frmRegister.memo.value;
var           = document.frmRegister..value;
var datetime      = document.frmRegister.datetime.value;
    
    if (title == '') {
        alert('请输入作业标题名称!'); return false;
    }
if (weburl == '') {
        alert('请输入作业网页地址!'); return false;
    }
if (file == '') {
        alert('请上传作业!'); return false;
    }
    
    return true;
}
-->
</script>
</head><body><div id="head_block"></div><div id="container"><!--顶部-->
<div id="top"><div id="logo">
<h1>网上作业提交系统</h1>
</div>
<div id="lead">
    <ul id="leader">
    <li><a href="/index.php">首 页</a></li>
    <li><a href="/help.php">帮 助</a></li>
<li><a href="/index.php">退出</a></li>
    </ul>
</div>
<div class="clear"></div>
<div style="background:url(/img/line.jpg) repeat-x; height:5px; margin:0 auto; width:950px;"></div></div>
<!--中间-->
<div id="middle"> <div id="middle_left">
<p><b>请认真填写 以下均为作业提交内容</b></p>
<form id="form2 name="frmRegister" method="post" action="stu_submit.php" enctype="multipart/form-data" onsubmit="return doCheck();"> <table style="display:block; margin-left:60px; text-align:left;" >
<tr>
<td>作业标题名称</td>
<td><input name="title" type="text" id="title"></td>
</tr>
<tr>
<td width="40%">作业网页地址</td>
<td><input name="weburl" type="text" id="weburl"> </td>
</tr>
<tr>
<td>上传作业文件</td>
<td><input name="file" type="file" id="file"></td>
</tr>
<tr>
<td>作业备注说明</td>
<td><textarea name="memo" cols="25" rows="5" id="memo">请在这里填入关于作业的备注说明</textarea></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit" value="提交">
<input type="reset" name="reset" value="重置"></td>
</tr>
</table> </form>
</div>
<div id="middle_right">
     <img src="image/zhengmen.jpg" />
    </div></div><!--底部-->
<div id="bottom"></div></div></body>
</html>
问题:文件上传不上去,提交后\upfiles里没有文件,文件信息也没有写入数据库

解决方案 »

  1.   

    stu_submit.php   <?php
    if($submit=="提交"){
    require_once('common.php'); // 引入公共文件,其中实现了SQL注入漏没检查的代码// trim()函数可以截去头尾的空白字符
    $title = trim($_POST['title']);
    $weburl = trim($_POST['weburl']);
    $file = $_POST['file'];$path = './upfiles/'. $_FILES['file']['name'];
    $memo = trim($_POST['memo']);
    $datetime = time();if (!empty($title)) { // 用户填写了数据才执行数据库操作
    //---------------------------------------------------------
    // 数据验证, empty()函数判断变量内容是否为空
    if (empty($title) || empty($weburl)||empty($file)) {
    echo '数据输入不完整';
    exit;
    }
        
    //---------------------------------------------------------   // 调用mysqli的构造函数建立连接,同时选择使用数据库'homework'
    $db = @new mysqli("127.0.0.1", "root", "see2006", "homework");
    // 检查数据库连接
    if (mysqli_connect_errno()) {
    echo "数据库连接失败!<br>\n";
    echo mysqli_connect_error();
    exit; // 退出程序,后面的所有语句将不再执行
    }if (move_uploaded_file($_FILES['file']['tmp_name'],$path)) {  
    // 将提交的作业信息插入数据库的t_student_work表$sql = "INSERT INTO t_student_work (f_title, f_weburl,f_memo,f_,f_datetime) VALUES";
    $sql .= "('$title','$weburl','$memo','0','$datetime')";
    $rs = $db->query($sql);

    if($rs=true){  
    echo "作业上传成功!!";
    echo "<meta http-equiv=\"Refresh\" content=\"5;url=stu_submit_result.php?lmbs=文件上传\">5秒后转入提交作业结果查询页面";  
    }
    else{echo "作业上传失败!!";
      echo "<meta http-equiv=\"Refresh\" content=\"5;url=stu_submit_result.php?lmbs=文件上传\">5秒后转入提交作业结果查询页面";}
    } //echo "<font color='red' size='5'>您已注册成功!</font><br />\n";
      //header("Location: stu_submit_result.php?uid=$studentid");
    //// 关闭数据库连接
    $db->close();
    }
    }
    ?><html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>Registering form</title><link href="style/basic.css" rel="stylesheet" type="text/css" />
    <link href="style/index.css" rel="stylesheet" type="text/css" /><script language='javascript'>
    <!--
    // 验证表单数据有效性的函数
    // 当函数返回true时,说明验证成功,表单数据正常提交
    // 当函数返回false时,说明验证失败,表单数据被终止提交
    function doCheck()
    {
      var title = document.frmRegister.title.value;
    var weburl = document.frmRegister.weburl.value;
    var file = document.frmRegister.file.value;
    var memo = document.frmRegister.memo.value;
    var  = document.frmRegister..value;
    var datetime = document.frmRegister.datetime.value;
        
      if (title == '') {
      alert('请输入作业标题名称!'); return false;
      }
    if (weburl == '') {
      alert('请输入作业网页地址!'); return false;
      }
    if (file == '') {
      alert('请上传作业!'); return false;
      }
        
      return true;
    }
    -->
    </script>
    </head><body><div id="head_block"></div><div id="container"><!--顶部-->
    <div id="top"><div id="logo">
    <h1>网上作业提交系统</h1>
    </div>
    <div id="lead">
      <ul id="leader">
      <li><a href="/index.php">首 页</a></li>
      <li><a href="/help.php">帮 助</a></li>
    <li><a href="/index.php">退出</a></li>
      </ul>
    </div>
    <div class="clear"></div>
    <div style="background:url(/img/line.jpg) repeat-x; height:5px; margin:0 auto; width:950px;"></div></div>
    <!--中间-->
    <div id="middle"><div id="middle_left">
    <p><b>请认真填写 以下均为作业提交内容</b></p>
    <form id="form2 name="frmRegister" method="post" action="stu_submit.php" enctype="multipart/form-data" onsubmit="return doCheck();"><table style="display:block; margin-left:60px; text-align:left;" >
    <tr>
    <td>作业标题名称</td>
    <td><input name="title" type="text" id="title"></td>
    </tr>
    <tr>
    <td width="40%">作业网页地址</td>
    <td><input name="weburl" type="text" id="weburl"> </td>
    </tr>
    <tr>
    <td>上传作业文件</td>
    <td><input name="file" type="file" id="file"></td>
    </tr>
    <tr>
    <td>作业备注说明</td>
    <td><textarea name="memo" cols="25" rows="5" id="memo">请在这里填入关于作业的备注说明</textarea></td>
    </tr>
    <tr>
    <td colspan="2" align="center">
    <input type="submit" name="submit" value="提交">
    <input type="reset" name="reset" value="重置"></td>
    </tr>
    </table></form>
    </div>
    <div id="middle_right">
      <img src="image/zhengmen.jpg" />
      </div></div><!--底部-->
    <div id="bottom"></div></div></body>
    </html>我把可能的疑点用红色标注,
    1.去掉"if($submit=="提交"){},系统提示:数据输入不完整,说明“$title,$weburl),$file”这几个变量没有全部提上去,最有可能的就是$file,我照书上的例子写的代码,可能有误;
    2.去掉"if($submit=="提交"){},并将empty判断为空改为:if (empty($title) || empty($weburl))后,文件上能上传到\upfiles里,但数据库里没有上传文件的信息,没有插入新的信息。