Home » Php » PHP upload – Why isset($_POST['submit']) is always FALSE

PHP upload – Why isset($_POST['submit']) is always FALSE

Posted by: admin July 12, 2020 Leave a comment

Questions:

I have the following code sample upload3.php:

<html>
<head>
<title>PHP Form Upload</title>
</head>
<body>

<form method='post' action='upload3.php' enctype='multipart/form-data'>
    Select a File:
    <input type='file' name='filename' size='10' />
    <input type='submit' value='Upload' />
</form>

<?php

if (isset($_POST['submit']))
{
    echo "isset submit";
}
else 
{
    echo "NOT isset submit";
}

?>

</body>
</html>

The code always returns “NOT isset submit”.
Why does this happen? Because the same script upload3.php calls itself?

How to&Answers:

You do not have your submit button named:
Change

<input type='submit' value='Upload' />

To:

<input type='submit' value='Upload' name="submit"/>

Answer:

Two things:

You’ll want to try array_key_exists instead of isset when using arrays. PHP can have some hinky behavior when using isset on an array element.

http://www.php.net/manual/en/function.array-key-exists.php

if (array_key_exists(‘submit’, $_POST)) { }

Second, you need a name attribute on your button ( “name=’submit'” )

Answer:

Because you don’t have any form element whose name property is submit.

Try to use var_dump($_POST) to see the keys that are defined.

Notice that files are an exception; they’re not included in $_POST; they’re stored in the filesystem and they’re metadata (location, name, etc) is in the $_FILES superglobal.

Answer:

Try looking at the REQUEST_METHOD and see if it’s POST. It’s a little bit nicer.

Answer:

<input type='submit' value='Upload' />

should be

<input type='submit' value='Upload' name='subname'/>

and that subname should be in $_POST[‘ ‘]

it will look like

if (isset($_POST['subname']))
{
    echo "isset submit";
}
else 
{
    echo "NOT isset submit";
}