2014-03-12 45 views
0

试图做一个简单的脚本来评论新闻文章,它的工作文本,但我希望用户能够提交图像用作图标或头像。这是表单字段:php表单 - 需要上传图像

<label>Add your avatar<span>*</span></label> 
<input name="image" type="file"/> 

和形式引导到该脚本:

<?php 
    $formats = array("gif", "jpeg", "jpg", "png"); 
    $temp = explode(".", $_FILES["file"]["name"]); 
    $extension = end($temp); 
    if ($_FILES["file"]["size"] < 90000 && in_array($extension, $formats)) { 
     if ($_FILES["file"]["error"] > 0) { 
      // something went wrong, display the error using; $_FILES["file"]["error"]; 
     } else { 
      if (!file_exists("avatars/" . $_FILES["file"]["name"])) { 
       move_uploaded_file($_FILES["file"]["tmp_name"], "avatars/" . $_FILES["file"]["name"]); 
      } 
     } 
    } 
    $tempLink = "http://www.website.com/avatars/" . $_FILES["file"]["name"]; 
    $page_path = $_POST['page_path']; 
    $con=mysqli_connect 
    ("","","",""); 
    // Check connection 
    if (mysqli_connect_errno()) 
     { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
     } 
    $sql="INSERT INTO comments (name, comment, email, storyid, entry_date) 
    VALUES 
    ('$_POST[name]','$_POST[comment]','$_POST[email]','$_POST[storyid]',now())"; 
    if (!mysqli_query($con,$sql)) 
     { 
     die('Error: ' . mysqli_error($con)); 
     } 
    header('Location: http://www.website.com/' . $page_path); 
    mysqli_close($con); 
    ?> 

脚本运行到completiong但图像不会被保存到:

WWW。 website.com/avatars/

所有其他表单数据插入到sql中就好了。唯一的问题是形象。目标目录是chmode 0777.

+0

您发布的代码未尝试处理图像输入。你说你尝试过一些不起作用的东西。显示你已经尝试了什么,并指出错误是什么。 –

+1

你是否看过PHP文档中关于如何处理上传的问题,因为我没有看到甚至在这里处理上传文件的尝试?您还有一些其他问题 - SQL注入漏洞;在将记录添加到数据库之前,您不验证任何数据;例如,您不会验证文件是否已上传,是否属于正确的类型,并且在插入到数据库之前已成功移到新目录中。 –

+2

您是否听说过小鲍比表? http://xkcd.com/327/ – RyanS

回答

0

好吧,这不难。您可以使用下面的代码保存图像作为头像:

$formats = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ($_FILES["file"]["size"] < 20000 && in_array($extension, $formats)) { 
    if ($_FILES["file"]["error"] != 0) { 
     // something went wrong, display the error using; $_FILES["file"]["error"]; 
    } else { 
     if (!file_exists("avatars/" . $_FILES["file"]["name"])) { 
      move_uploaded_file($_FILES["file"]["tmp_name"], "avatars/" . $_FILES["file"]["name"]); 
     } 
    } 
} 

所有你需要做的,是通过发送SQL查询的请求时,图像被移动或已exsist将其插入到你的SQL ...可以这样做;

$tempLink = "http://example.com/avatars/" . $_FILES["file"]["name"]; 

请确保在file_exists的if语句之后添加它。 :)

+0

该文件没有保存到服务器。该文件夹是可写的。我测试的图像是合适的尺寸和扩展。没有错误消息弹出,脚本运行。其他表格数据文章没有问题 – rhill45

+0

你可以尝试改变!= to>?也许这会工作哈哈。 – Tosfera

+0

不幸的是,没有做到这一点。我将发布我正在使用的整个脚本。我检查了保存到文件夹,这是chmode 0777.我在这里输了 – rhill45