系统功能:学生在线上传作业;
共有两个文件: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里没有文件,文件信息也没有写入数据库
共有两个文件: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里没有文件,文件信息也没有写入数据库
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里,但数据库里没有上传文件的信息,没有插入新的信息。