-1

PHPファイルのアップロードに深刻な問題があります。問題は、ファイルが tmp から宛先ディレクトリに移動していないことです。これは私の HTML ページです。

<form name="f1" method="post" action="handleUpload.php"  enctype="multipart/form-data">
<input type="file" name="htmlfile">
<input type="submit">
</form>

これが私のPHPページhandleUpload.phpです。

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{

    $arrayKeys=array_keys($_FILES['htmlfile']);
    foreach($arrayKeys as $s)
        echo $s ." : ".$_FILES['htmlfile'][$s]." <br>";
    $name = $_FILES['htmlfile']['name'];
    $size = $_FILES['htmlfile']['size'];        
    $tempName= $_FILES['htmlfile']['tmp_name'];
    list($filePureName, $ext) = explode(".", $name);
    $valid_formats = array("jpg","png", "gif", "bmp","rar","zip");
    $fileObject=fopen($tempName,"r") ;
        echo "test Text" . fgets($fileObject) ."</br>";
    fclose($dstFile) ;
    if($_FILES["htmlfile"]["error"] != 0 ) {
        echo "file error with code " .$_FILES["htmlfile"]["error"];
    }
    if( is_uploaded_file($tempName)){
        echo "<br> upladed to the tmp directory ";
        move_uploaded_file($_FILES["htmlfile"]["tmp_name"],"./".$_FILES["htmlfile"]["name"]) ;
        //move_uploaded_file($_FILES["htmlfile"]["tmp_name"],"upload/".$_FILES["htmlfile"]["name"])
    }

}
else{

    echo "you must visit the HTML upload page first";

}

私が得る出力は

name : numerical_hw1.rar 
type : application/octet-stream 
tmp_name : /tmp/phpK7Gmmf 
error : 0 
size : 34642 
test TextRar!Ïs WÅt K„Á &–Gá@3& numerical_hw1\hw1_q1\numerical_hw1.cpp°¸ EÌÌý•½¦~g†¡¹[•Í…Àk#€Qu{Q|0a®'#ÆàM¹%_ûánšF“Q‘Á®ÞÛÅ€ÁEq'‰\—ç9yq%Páðà;áy¹‰ùLx_,Xrh»qüÙ‰ÐO‰ †3JI²†Žc÷“4ˆ ‰‡oɲE³*[⦆sÓè¤Í~·Ö”?ø‘ŒK6"Á¦æF,¼JÇ1rê¼´…BžT5$_sôJäļ†Å$ý˦A:`ë5kέ'3_„}ªœRijÅ3ÎÜøsÛV:÷5ËΰãÚÓžõÌÚK¦œñÕ÷ÚßýT­vÙäÓ 

upladed to the tmp directory

問題は、ファイルが現在のディレクトリにも「アップロード」ディレクトリにも移動されないことです-もちろん、それが単独でコメントされていない場合-!! ご覧のとおり、ファイルは tmp ディレクトリに正常にアップロードされており、それを開いて、そこから 1 行読み取りました。また、 is_uploaded_file 関数でチェックしましたが、そのチェックに合格しました。

多くのサイトから php ファイル アップロードのトピックを注意深く読みましたが、php と html の両方に欠けているものは何もないことがわかりました!! フォルダーのパーミッションは 755 です。ここで、ファイルのアップロードは最近まで機能していたことに言及する必要があります。

何か助けてください?? 私は何をすべきか?

サーバーを注意深く調べたところ、私のウェブサイトがハッキングされていて、ハッカーがハック ファイルをアップロードしていることがわかりました。 しかし、本当に私は今何をすべきかわからないし、そのハッカーによって引き起こされた被害の大きさを見積もることもできないので、何か提案は?!!!!

4

1 に答える 1

0

それを試してください:

$pathDestino=$_SERVER['DOCUMENT_ROOT'] . "\\xxx\\upload\\" . $_FILES["htmlfile"]["tmp_name"];
$tmp_name=$_FILES["htmlfile"]["tmp_name"];
move_uploaded_file($tmp_name, $pathDestino);
于 2013-01-01T19:58:18.230 に答える