HTML Form POST is null

so I'm trying to simply send one field of data from a form to a php file. Below is my form in a table. I also posted my php code. It keeps returning that $username is null. Ive tried post/get and it doesn't seem to matter.

HTML:

<form action='http://k9minecraft.tk/scripts/adduser.php' method='POST'>
<table>
<tr>
<td>First Name:</td>
<td><input type='text' id='first'></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type='text' id='last'></td>
</tr>
<tr>
<td>Email:</td>
<td><input type='text' id='email'></td>
</tr>
<tr>
<td>Minecraft Name:</td>
<td><input type='text' name='user'></td>
</tr>
<tr>
<td><input type='submit' value='Send'></td>
<td><input type='reset' value='Reset'></td>
</tr>
</table>
</form>

PHP:

<?php
print_r($_POST);
    if(isset($_POST['user'])){
        $username = $_POST['user'];
        echo $username;
        echo 'username is not null';
        }
?>

Answers


This code is working. You need to add some condition, that checks, if $username is posted or not.

Something like that:

if(count($_POST)){
    $username ='';
    if(isset($_POST['user'])){
        $username = $_POST['user'];
    if ($username==null || !$username)
         echo 'username is null';
     echo strlen($username);
     echo $username;
   }

 }

The issue is that all of your inputs have ids but not names. The ids are used by JavaScript. The names are used for posting.

Change it to be like this:

<form action='http://k9minecraft.tk/scripts/adduser.php' method='POST'>
<table>
<tr>
<td>First Name:</td>
<td><input type='text' name='first' id='first'></td>
</tr>
<tr>
<td>Last Name:</td>
<td><input type='text' name='last' id='last'></td>
</tr>
<tr>
<td>Email:</td>
<td><input type='text' name='email' id='email'></td>
</tr>
<tr>
<td>Minecraft Name:</td>
<td><input type='text' name='user'></td>
</tr>
<tr>
<td><input type='submit' name='Send' value='Send'></td>
<td><input type='reset' name='Rest' value='Reset'></td>
</tr>
</table>

Try this to find out if the field is posted by the formular:

isset($_POST['user'])

I think $username==null will be true even if $username really is equal to an empty string.


This is how people usually do it:

if(isset($_POST['user']) && !empty($_POST['user'])) {
    $user = $_POST['user'];
}

Note: == null will not work with empty string. see here.

You also need to add a name attribute for other input fields of yours.


try using this

<?php
    if(isset($_POST['submit'])){
     $msg = "";
     /* Validate post */
     if(isset($_POST['user'])==""){
      $msg .= "username is null";
     }
    /*End Validate*/
     if($msg==""){
      $user = $_POST['user'];
     }else{
       echo $msg;
     }
    }

?>

Need Your Help

Store timestamps with timezone in rails 3.2

ruby-on-rails ruby ruby-on-rails-3 postgresql activerecord

I'm trying to store all timestamps in a rails application with their included timezone. I'm fine with ActiveRecord converting them to utc, but I have multiple applications hitting the same database...

Communicating with ActiveX with a GCC compiler

gcc activex ole idispatch

How do I reference and communciate with an ActiveX library from within my gcc compiled application?