2014-10-16 104 views
0

我在与文件上传设置我的PHP脚本的麻烦。上传文件使用PHP和HTML

在上传自己,我把它引向我想要的路径,但我不知道如果我有脚本的其余部分语法正确。

编辑:我解决了我的情况,文件没有正确上传。我已经编辑了我目前工作的代码块。如果需要,请参阅预编辑版本以查看更改:)。

干杯。

$tardir= "C:/xampp/htdocs/uploaddir/$targetname"; 
$uploadOk=1; 

if(isset($_FILES["uploadFile"])){ 
    $tardir= $tardir . "/" . basename($_FILES["uploadFile"]["name"]); 
    if(move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $tardir)){ 
     echo "The file: ". basename($_FILES["uploadFile"]["name"]). " has been uploaded."; 
} else { 
    echo "Sorry, there was an error uploading your file."; 
} 

$targetname被设置为无论用户在该领域输入什么。在这种情况下,我把它作为他们的电子邮件。

$targetname = filter_input(INPUT_POST, 'email'); 

这是<html>的文件上传的样子:

<form action= "userlogin.php" method= "post" enctype= "multipart/form-data"> 
     <p><strong>Please choose a file to upload: <input type="file" name="uploadFile"><br></p> 
      <input type="submit" value="Upload File"> 
+0

差错,哪个变量是抛出一个未定义的索引错误? – 2014-10-16 23:20:32

+0

uploadFile抛出错误两次。 @ColinSchoen – ALMorrow 2014-10-16 23:22:35

+0

小心...你让人们上传任何他们想做的服务器,和你保持它在文档根。有人可以上传恶意脚本并轻松执行它们。 – Brad 2014-10-16 23:22:50

回答

1

很难猜出所有你的代码,因为它似乎你只能有一个片段在这里,但我要走了。疯狂的猜测。如果目标名称来自您所说的文本输入,并且您已将其设置为电子邮件,您是否在此留下斜线?

$tardir= "C:/xampp/htdocs/uploaddir/$targetname"; 

这将是这样的:

C:/xampp/htdocs/uploaddir/[email protected] 

这将运行:

$tardir= $tardir . basename($_FILES["uploadFile"]["name"]); 

则:

C:/xampp/htdocs/uploaddir/[email protected] 

应该不会是:

C:/xampp/htdocs/uploaddir/[email protected]/filename 

你也可以注释掉所有在这里的代码和的var_dump()文件阵列,并且呼应了你的路,你试试用它们来看看有什么数据在每个容器举行之前。如果我得到一个错误这样我转储一切,呼应每个字符串,直到找到为止..