我创建了一个表单,要求用户在第一个文本字段中插入名称,并在第二个文本字段上写入一些内容(某些信息)。 这是我的表单代码:
echo "<form method='post' action='insert.php?selected=$openFolder&id=$student'>
Information name:</br> <input name='infoName' type='text' /><br />
Information:<br />
<textarea name='text' rows='15' cols='60'>
</textarea><br />
<input type='submit' name='submit' value='Submit Information'/>
</form>";
到目前为止一切顺利。
现在提交表单时,我需要创建一个文件:
文件名 - &gt;用户在“infoName”文本字段中插入的名称
然后将“text”文本字段的内容插入此文件并将整个文件存储到我的数据库中。
这是我的代码:
if (isset($_POST['submit']))
{
//Make sure that a file name is given by the user
if (!$_POST['infoName'])
{
echo "<center><font color='red'>You must complete the Information name field</font></center>";
}
else
{
$informationName = $_POST['infoName'];
$informationContent = $_POST['text'];
$newFile = fopen($informationName,"w");
$content = fwrite($newFile,$informationContent . "\n");
$content = addslashes($content);
fclose($newFile);
$theSize = filesize($informationName);
if(!get_magic_quotes_gpc())
{
$informationName = addslashes($informationName);
}
$query = "INSERT INTO $openFolder (studentID, name, size, type, content, insertedBy ) ".
"VALUES ('$student','$informationName', '$theSize', 'txt', '$content', '$username')";
mysql_query($query) or die('Error, query failed');
}
}
我的问题:
1)文件是正确创建的,存储在我的数据库中,但没有正确的内容。出于某种原因,我没有将文本插入文件......
2)超出了我的数据库中存储的文件,在我的目录中创建了另一个文件,我不希望这种情况发生。
请帮帮我。随意对我的代码进行任何更改! 请告诉我我做错了什么!
答案 0 :(得分:0)
我看到原因是陈述$content = addslashes($content);
。 fwrite返回写入的字节数,而不是数据本身。
正确的陈述应该是$informationContent = addslashes($informationContent);
,并且应该在if(!get_magic_quotes_gpc())
条件之内。还可以按照建议更改查询和替换变量。
还要确保检查fwrite的返回值。如果没有写入(=== FALSE),请不要继续进行并报告错误。许多错误都很难调试(就像这种情况),因为我们经常编写假设编程。 :)