こんにちは、何らかの理由で、ファイルが空であるかどうかをプログラムで確認できません。何かが選択されている場合は、実行されるべきではありませんが、実行されます。これがコードです
if (empty($_FILES['file'] ) )
{
echo "testing";
$seterror =1;
returnBack();
}
こんにちは、何らかの理由で、ファイルが空であるかどうかをプログラムで確認できません。何かが選択されている場合は、実行されるべきではありませんが、実行されます。これがコードです
if (empty($_FILES['file'] ) )
{
echo "testing";
$seterror =1;
returnBack();
}
コメントで指定したvar_dump($ _ FILES)から、$ _ FILE ['file']が空ではないため、「テスト」をエコーしていないように見えます(つまり、機能していません)。
あなたが私に提供したものから:
$ _FILES ['file'] = array(5){["name"] => string(0) "" ["type"] => string(0) "" ["tmp_name"] => string(0) "" ["error"] => int(4)["size"] => int(0)}
empty()が配列をどのように処理するかは完全にはわかりませんが(ドキュメントには、空の配列に対してtrueが返されると記載されています)、少なくとも$ _FILES['file']['を削除する必要があります。エラー'](int(4)であるため空ではありません)、またはempty()を使用して$ _FILES ['file']['name']のようなものをチェックします
したがって、私の提案を使用すると、コードは次のようになります。
if (empty($_FILES['file']['name'])) {
echo "testing";
$seterror = 1;
returnBack();
}
または(PHP配列の理解に問題がある可能性があるため)、これを試してください。
if(empty($_FILES['file']['name'])) {
echo "testing";
$seterror = 1;
returnBack();
}
ファイル配列を出力すると何が得られますか?(すなわちprint_r($_FILES);
)
あなたのコードは、呼び出されたファイルの内容file
が空であるかどうかを教えてくれません。の値$_FILES['file']
が空であるかどうかを教えてくれます。これはあなたが望むものではないかもしれません。また、のロジックが必要ないempty
場合もあります-違いがあるかどうかを確認するためにこれを試しましたか?
if (array_key_exists('file', $_FILES)) {
...
}
これを試すことができると思います
if(empty($_FILES['file']['name']))
{
// not uploaded
}
else
{
// uploded
}
空のファイルをテストしている場合は、ここにコードがあります
$file = 'test.txt';
if(filesize($file) == NULL) {
echo "empty";
}
PHPの言語構造empty()
と配列はうまく混ざり合っていません。さらに、<input type='file' name='file' />
フォームにが含まれている場合は、配列を取得します。$_FILES[]
あなたは最初からやるべきですif( !array_key_exists('file', $_FILES) ) { // no file uploaded }
。
実際、いくつかのチェックを行う必要があります。
file
要素が入力されている場合$_FILES
$_FILES['file']['error']
== 0)これらすべてに当てはまるのは、処理するファイルがあります。そうでなければ、あなたはしません。
私は、ファイルアップロードハンドラーでこれらの手順を忠実に実行することで、完全に信頼できることがわかりました。
さて、私がしなければならなかったのは、エラーが発生していないかどうかを確認することでした。エラーが発生した場合は、空であることを意味するため、通過しませんでした。
コード:
if (!empty($_FILES['file']['error'] ) )
{
echo "file";
$seterror =1;
returnBack();
}
助けてくれてありがとう!