1

I'm using a simple form to upload 5 files:

<form enctype="multipart/form-data" action="openaccount.php" method="post">
<h4>Proof of Identity of Account Operator 1</h4>

<p>Government issued Photo ID to verify identity:
<br/><input name="tidentity_proof" type="file" />

<p>Documentation to verify permanent residential address:
<br/><input name="taddress_proof" type="file" />

<h4>Proof of Identity of Account Operator 2 (if any)</h4>

<p>Government issued Photo ID to verify identity:
<br/><input name="tidentity_proof2" type="file" />

<p>Documentation to verify permanent residential address:
<br/><input name="taddress_proof2" type="file" />

<h4>Signed Fund Agreement</h4>
<p>Choose a file to upload:
<br/><input name="tagreement" type="file" />

<input type="submit" name="submit" value="Submit" />

</form>

As each of the 5 files is mandatory, I have a check when the form is submitted to see if all 5 have been uploaded:

if($_FILES['tidentity_proof']['name']=="" || $_FILES['tidentity_proof2']['name']=="" || $_FILES['taddress_proof']['name']=="" || $_FILES['taddress_proof2']['name']=="" || $_FILES['tagreement']['name']==""){
    $_SESSION['message'].="You must upload files as identity proof.";
}

If I choose files for all 5 fields, the first 4 work fine but the 5th doesn't. So if I do echo $_FILES['tagreement']['name']; I get an empty string and if I do the same for all the others the file name is correctly printed out. What am I missing here?

EDIT: It doesn't matter that the 'tagreement' field is last on the list, I tried moving it before the others and it still doesn't work.

print_r($_FILES):

Array (
    [tidentity_proof] => Array (
        [name] => cathypersons_deerdoe.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpcfeBC9
        [error] => 0 [size] => 40299
    )
    [taddress_proof] => Array (
        [name] => cheetah20cubs.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpRp4qu1
        [error] => 0 [size] => 84873
    )
    [tidentity_proof2] => Array (
        [name] => cheetah20cubs.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpCpGkmT
        [error] => 0
        [size] => 84873
    )
    [taddress_proof2] => Array (
        [name] => cathypersons_deerdoe.jpg
        [type] => image/jpeg
        [tmp_name] => /tmp/phpBUBheL
        [error] => 0
        [size] => 40299
    )
)
5
  • print_r($_FILES), what do you get? Commented Mar 15, 2012 at 14:53
  • Also, close your <p> tags. While with HTML5 you don't technically have to do this, it sure does make a mess of your HTML. Commented Mar 15, 2012 at 14:54
  • @Brad: Array ( [tidentity_proof] => Array ( [name] => cathypersons_deerdoe.jpg [type] => image/jpeg [tmp_name] => /tmp/phpcfeBC9 [error] => 0 [size] => 40299 ) [taddress_proof] => Array ( [name] => cheetah20cubs.jpg [type] => image/jpeg [tmp_name] => /tmp/phpRp4qu1 [error] => 0 [size] => 84873 ) [tidentity_proof2] => Array ( [name] => cheetah20cubs.jpg [type] => image/jpeg [tmp_name] => /tmp/phpCpGkmT [error] => 0 [size] => 84873 ) [taddress_proof2] => Array ( [name] => cathypersons_deerdoe.jpg [type] => image/jpeg [tmp_name] => /tmp/phpBUBheL [error] => 0 [size] => 40299 ) ) Commented Mar 15, 2012 at 14:57
  • Are the files you're uploading larger than what PHP is configured to happily handle? Commented Mar 15, 2012 at 15:01
  • No Alex, they're images, no larger than 100kb. Commented Mar 15, 2012 at 15:02

1 Answer 1

1

looks like your field names in the display, and variable names in the check are inconsistent.

your second bit of code should be:

if($_FILES['tidentity_proof']['name']=="" || $_FILES['taddress_proof']['name']=="" || $_FILES['tidentity_proof2']['name']=="" || $_FILES['taddress_proof2']['name']=="" || $_FILES['tagreement']['name']==""){
    $_SESSION['message'].="You must upload files as identity proof.";
}
Sign up to request clarification or add additional context in comments.

6 Comments

Sorry, never mind the working fields' names, I've been changing those for other reasons - the problematic field's name is correct in the code I posted.
Well I can confirm from local testing your form works fine. I didn't test this, but it makes sense.
@robert your code has tcertificate & tsig in it. Where's that?
@phpmeh Thanks for pointing that out, tcertificate and tmeh were renamed for other reasons, the problematic field doesn't work regardless of those. i've tried removing the other fields from the condition completely.
@robert according to your print_r($_FILES) your field names do not match the names you're checking.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.