PHP和mysql的问题

时间:2009-07-15 19:17:38

标签: php mysql

大家好我遇到了一些问题...问题是我想从表单中获取信息并将其保存在数据库中,数据是(评论,上传图片和电子邮件)当我这样做时它会发出警告< / p>

代码

// move file from temp location on server to your uploads folder
  move_uploaded_file($F1["tmp_name"], "Uploads/$F1[name]");
  print "Stored in: Uploads/$F1[name]";


// save location of upload to text file uploads.txt for later use

$datafile = fopen("uploads.txt","a");
flock($datafile,1);
fwrite($datafile, "Uploads/$F1[name]\n");
flock($datafile,3);
fclose($datafile);




// divide size by 1024 to get it in KB
/*  if ($F1["size"] / 1024 > 50) {
    print "Your gif file is too large! Less that 50KB please!";
    exit(0);
  }*/

 if (!(IsSet($_FILE["fname"]))) {




  $query="insert into guestbook (comments, email, img,display) values
  ('$_POST[comments]','$_POST[email]','some address  ', '0')";}

else

$query="insert into guestbook (comments, email, img, display) values
  ('$_POST[comments]','$_POST[email]','some addres', '$_POST[0]')";

我得到的警告是

  

警告:move_uploaded_file(Uploads / holder.jpg):无法打开流:第48行(地址)中没有此类文件或目录

     

警告:move_uploaded_file():无法将第48行(某些地址)的'/ tmp / php4OAZMC'移动到'Uploads / holder.jpg'   存储在:Uploads / holder.jpg

我该如何解决?

提前致谢

4 个答案:

答案 0 :(得分:1)

我认为它需要一个绝对路径来保存文件,而不是相对于脚本位置,即

/home/meme/www/example.com/Uploads/

另外,请检查上载目录的权限。还有一个小小的提示,将来保存你的培根 - 保持目录和文件名小写;那么当你的代码正在寻找一个不存在的文件或目录,因为你的文件系统是区分大小写的时候,你不会在将来的某个时候陷入困境!

答案 1 :(得分:0)

上传/文件夹是否已存在?如果没有,请先尝试创建它。这可能会导致错误。

另外,检查move_uploaded_file()是否有效是一个好主意。如果有效,则返回true,否则返回false

另外,如前所述,也尝试使用绝对路径。

Reference

答案 2 :(得分:0)

您还应该确保您的Uploads文件夹正确设置了权限 - 出于测试目的,请使用您喜欢的FTP客户端将Uploads文件夹chmod为777。

确保当您准备好将上传文件付诸实践时,请确保正确保护文件夹(确保不是任何人都可以写入文件夹),并确保为文件类型添加过滤器。

答案 3 :(得分:0)

  1. 检查以确保路径移至存在,并且您的网络服务器进程有权写入。
  2. 您的插入查询是一个空洞的安全漏洞,只是在等待SQL注入。您可以使用以下内容来降低遭遇黑客攻击的可能性:

    $ comments = mysql_real_escape_string($ _ POST ['comments']); $ email = mysql_real_escape_string($ _ POST ['email']); $ query =“插入留言簿(评论,电子邮件,img,显示)值       ('{$ comments}','{$ email}','some address','0')“;