2

这是我的表格

<form action="test.php" method="post" name="myform"> 
<table width="500" border="0">
  <tr>
    <td width="369" colspan="3">Admin's Area </td>
    <td width="121"><?php echo $_SESSION['name'];?></td>
  </tr>
  <tr>
    <td colspan="3">sponseres list </td>
    <td><a href="admin.php#sponserForm">+Add new Sponser</a></td>
  </tr>
  <tr>
    <td colspan="3"><?php echo $sponsere_list; ?></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td align="center" colspan="4"> <a name="sponserForm" id="sponserForm"></a> Add New Sponser Form</td>
  </tr>
  <tr>
    <td align="left">Sponser name</td>
    <td align="left"><input type="text" name="spname" id="spname" tabindex="1" /></td>
    <td colspan="2" align="center">&nbsp;</td>
    </tr>
  <tr>
    <td align="left">Image</td>
    <td align="left"><input type="file" name="fileToUpload" /></td>
    <td colspan="2" align="center">&nbsp;</td>
    </tr>
  <tr>
    <td align="left">Add this</td>
    <td align="left"><input type="submit" name="sumit" id="sumit" value="Submit" tabindex="3" /></td>
    <td colspan="2" align="center">&nbsp;</td>
    </tr>
  <tr>
    <td align="center" colspan="4">&nbsp;</td>
  </tr>
</table>
</form>

这是检索它的php代码

<?php 
if(isset($_POST['spname'])){
    $spname=mysql_real_escape_string($_POST['spname']);
    $user_query = "INSERT INTO `sponsers` (`spname`)
                                    VALUES ('{$spname}')
                                    ";
    $sql=mysql_query($user_query)or die (mysql_error());
    $spic= mysql_insert_id();
    $newname="$spic.jpg";
    move_uploaded_file($_FILES["fileToUpload"]["tmp_name"],"../sponsers/$newname")or die (mysql_error());
    }
?>

当我尝试上传图像时,它给了我这个警告消息注意:未定义的索引:第 3 行 J:\xampp\htdocs\srimag\admin\test.php 中的 fileToUpload

所以我尝试使用 $_POST['fileToUpload'] 来回显 fileToUpload 值,它显示的值没有错误,因此无法找出错误。

所以请帮助我:-( 谢谢。

4

4 回答 4

4

您的主要问题是您在表单上缺少适当的enctype属性

<form ... enctype="multipart/form-data">

请务必仔细阅读手册的这一部分 - http://php.net/manual/en/features.file-upload.php

您的问题在第一页提到

笔记:

确保您的文件上传表单具有属性enctype="multipart/form-data",否则文件上传将无法正常工作。

于 2012-05-07T05:35:33.207 回答
2

您需要enctype="multipart/form-data"在表单中上传图像,最好检查用户是否甚至上传图像并且命名文件的特异性.jpg不起作用,如果不是 jpeg,图像在输出时将被视为损坏,更不用说人了上传php文件。

您还需要对有效性进行一些其他检查,上传安全性不应被忽视,否则您有一个可怕的电话主页/僵尸网络恶意软件脚本将代码注入所有脚本:

<?php 
if(isset($_POST['spname'])){
    $spname=mysql_real_escape_string($_POST['spname']);
    $user_query = "INSERT INTO `sponsers` (`spname`)
                                    VALUES ('{$spname}')";
    $sql=mysql_query($user_query)or die (mysql_error());
    $spic= mysql_insert_id();



    if(isset($_FILES["fileToUpload"]["tmp_name"]) && $_FILES["fileToUpload"]["error"] ==0){
        $name    = basename($_FILES["fileToUpload"]['name']);
        $ext     = end(explode('.', $name));
        $newname = $spic.".".$ext;
        $info    = getimagesize($_FILES["fileToUpload"]['tmp_name']);

        $allowed = array('image/png','image/jpg','image/gif');
        if($info[0]>0 && $info[1] > 0 && in_array($info['mime'],$allowed)){
            move_uploaded_file($_FILES["fileToUpload"]['tmp_name'], "../sponsers/$newname");
            //done upload
        }else{
            //Not allowed, perhap notify user
        }
    }

}
?>
于 2012-05-07T05:46:58.290 回答
1

在表单标签中包含这个

enctype="multipart/form-data"
于 2012-05-07T05:36:01.627 回答
1

你应该在你的表格中添加这个

<form action="test.php" method="post" name="myform" enctype="multipart/form-data"> 
于 2012-05-07T05:36:53.140 回答