私はこのコードを以下のようにしています。問題は、ファイルをアップロードしていないことと、下部のコールバックJavaScript関数が結果を表示していないことです。今度はif isset($ _POST [fileImage '])...コードと$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name'];
に入力する前に、ファイルは完全にアップロードされました。しかし、これらの2つのコードでは、アップロードが中断されました。以下のisset()関数は正しく配置されていますか?
私は上記のコードが間違った場所に配置されているということが問題だと思います。下のコードをアップロードのために適切な場所に正しく配置するには、どのようにして再度作業を開始できますか?以下は
は、ファイルをアップロードすると仮定されたコードですが、失敗します。
<?php
$result = 0;
if (isset($_POST['fileImage']) && ((($_FILES["fileImage"]["type"] == "image/gif")
|| ($_FILES["fileImage"]["type"] == "image/jpeg")
|| ($_FILES["fileImage"]["type"] == "image/pjpeg")
|| ($_FILES["fileImage"]["type"] == "image/jpg")
|| ($_FILES["fileImage"]["type"] == "image/png")
|| ($_FILES["fileImage"]["type"] == "image/tif"))){
if(file_exists("ImageFiles/".$_FILES['fileImage']['name'])) {
$parts = explode(".",$_FILES['fileImage']['name']);
$ext = array_pop($parts);
$base = implode(".",$parts);
$n = 2;
while(file_exists("ImageFiles/".$base."_".$n.".".$ext)) $n++;
$_FILES['fileImage']['name'] = $base."_".$n.".".$ext;
move_uploaded_file($_FILES["fileImage"]["tmp_name"],
"ImageFiles/" . $_FILES["fileImage"]["name"]);
$result = 1;
}
else
{
move_uploaded_file($_FILES["fileImage"]["tmp_name"],
"ImageFiles/" . $_FILES["fileImage"]["name"]);
$result = 1;
}
?>
<script language="javascript" type="text/javascript">
window.top.stopImageUpload(<?php echo $result;?>);
</script>
<?php
}
$_SESSION['fileImage']['name'] = $_FILES['fileImage']['name'];
?>
$ _FILES ["file"] ["type"]はファイルの種類を判断するのに安全ではありません。この情報はブラウザによって提供されます。追加のチェックを展開して、画像であることを確認したり、ファイルが実行されるフォルダを保護したりする必要があります。 – bardiir
あなたのフォームを見ることなく確実に言うことはできませんが、私の推測では '$ _POST ['fileImage']'は設定されていません。私は 'isset($ _ FILES ['fileimage'])と' $ _FILES ['fileimage'] ['error'] == 0'をチェックします。ファイル入力フィールド 'fileimage'があれば、' $ _POST ['fileimage'] 'は入力されません。 '$ _FILES'のみです。 – drew010