Answers.Body: <p>You need to define the <code>value=</code> attribute on your select fields.</p>
  
  <pre><code>&lt;select class="form-control margin-bottom" id="renting" name="fields[renting]"&gt;
  {% for option in user.renting.options %}
  &lt;option {% if option.selected %}selected="selected"{% endif %}&gt;{{ option }}&lt;/option&gt;
  {% endfor %}
  &lt;/select&gt;
  </code></pre>
  
  <p><strong>Should be:</strong></p>
  
  <pre><code>&lt;select class="form-control margin-bottom" id="renting" name="fields[renting]"&gt;
  {% for option in user.renting.options %}
  &lt;option value="{{option.value}}"{% if option.selected %}selected="selected"{% endif %}&gt;{{ option }}&lt;/option&gt;
  {% endfor %}
  &lt;/select&gt;
  </code></pre>
  
  <p>I was looking for the answer to the same problem. I narrowed my issue down to the  field. When I removed it the form would submit properly. I fixed a typo in the value attribute and that fixed it.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2016-09-07T04:44:51.587Z
Answers.LastActivityDate: 2016-09-07T04:44:51.587Z
Answers.UserDisplayName: tosegard
Answers.Body: <p><code>firstName</code>, <code>lastName</code>, and <code>email</code> are actual user fields (not custom), so their <code>name=</code> attributes shouldn’t have the <code>fields[]</code> namespace.</p>
  
  <pre class="lang-html prettyprint-override"><code>&lt;input type="email" class="form-control" id="email" name="email" value="{{ user.email }}"&gt;
  
  &lt;input type="text" class="form-control" id="firstName" name="firstName" value="{{ user.firstName }}"&gt;
  
  &lt;input type="text" class="form-control" id="lastName" name="lastName" value="{{ user.lastName }}"&gt;
  </code></pre>
  
  <p>I’m guessing that once you fix those, your <code>phoneNumber</code> custom field will also start saving.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-26T22:30:29.777Z
Answers.Text: That all works apart from the email field. I'm using the 'useEmailAsUsername' => true, config setting if that changes anything.
Answers.UserDisplayName: Niall Thompson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-26T22:45:20.003Z
Answers.Text: I also have the verify email setting on. Ideally this would only be sent when registering new accounts and not when a user is changing their email.
Answers.UserDisplayName: Niall Thompson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-27T01:48:21.770Z
Answers.Text: @NiallThompson to allow the user to change their email you need to pass a password also I believe.
Answers.UserDisplayName: Luke Holder
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-27T04:26:43.130Z
Answers.Text: @LukeHolder nails it. Since changing the password and/or email of an existing user is "a big deal", you need to pass in the currently logged in user's password in a field named "password" in order for it to work.
Answers.UserDisplayName: Brad Bell
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-27T19:12:45.300Z
Answers.Text: As in a hidden field like this? <input type="hidden" name="password" value="{{ user.password }}">
Answers.UserDisplayName: Niall Thompson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-27T23:01:39.573Z
Answers.Text: @NiallThompson It has to be the  password of the *currently logged in* user.  Not the password for the user you're trying to change the password of.
Answers.UserDisplayName: Brad Bell
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-28T00:23:28.013Z
Answers.Text: @NiallThompson plus, `{{ user.password }}` is going to give you the hashed password, and the `"password"` input needs to be set to the unhashed password. The whole point is, users need to prove that they are who they are before they can change their email address/password.
Answers.UserDisplayName: Brandon Kelly
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-26T20:50:54.333Z
Answers.LastActivityDate: 2014-07-26T20:50:54.333Z
Answers.UserDisplayName: Brandon Kelly
Answers.Body: <p>It should also be noted that to change your password or email, the current password has to be passed along with the request.</p>
  
  <pre><code>// You must pass your current password to change these fields for an existing user
  </code></pre>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-11-13T10:54:54.247Z
Answers.LastActivityDate: 2014-11-13T10:54:54.247Z
Answers.UserDisplayName: Mike Pierce
Answers.Body: <p>For starters I see you have a typo...</p>
  
  <p><code>fields[firstName}</code></p>
  
  <p>Should be</p>
  
  <p><code>fields[firstName]</code></p>
  
  <p>Also:</p>
  
  <p><code>{{ user.phoneNumber}}</code></p>
  
  <p>Should be:</p>
  
  <p><code>{{ user.phoneNumber }}</code></p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-26T19:30:23.007Z
Answers.Text: I've made the changes but the firstName, lastName and email fields won't save still.
Answers.UserDisplayName: Niall Thompson
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-07-26T18:41:35.447Z
Answers.LastActivityDate: 2014-07-26T18:58:20.330Z
Answers.LastEditDate: 2014-07-26T18:58:20.330Z
Answers.UserDisplayName: Natetronn
Body: <p>My edit profile page doensn't save all fields:</p>
  
  <pre class="lang-twig prettyprint-override"><code>&lt;form method="post" action="" accept-charset="UTF-8" enctype="multipart/form-data"&gt;
      &lt;input type="hidden" name="action" value="users/saveUser"&gt;
      &lt;input type="hidden" name="redirect" value="/users/{{ user.username }}"&gt;
      &lt;input type="hidden" name="userId" value="{{ user.id }}"&gt;
  
      &lt;fieldset&gt;
        &lt;legend&gt;Your Photo&lt;/legend&gt;
      {# Check to see if the user has a photo  #}
      {% if currentUser.photoUrl %}
  
        &lt;figure&gt;&lt;img src="{{ currentUser.photoUrl(200) }}" /&gt;&lt;/figure&gt;
      {# If a photo exists, give the option to change the user photo #}
      &lt;div class="form-group"&gt;
      &lt;input type="file" name="userPhoto" value="Change Photo" class="form-control"&gt;
      &lt;/div&gt;
  
      {% else %}
  
      {# If no photo exists, give the option to upload a new one #}
      &lt;figure&gt;&lt;img src="/assets/img/user.gif" /&gt;&lt;/figure&gt;
      &lt;div class="form-group"&gt;
      &lt;input type="file" name="userPhoto" value="Upload" class="form-control"&gt;
      &lt;/div&gt;
      {% endif %}
    &lt;/fieldset&gt;
  
  
    &lt;fieldset&gt;
      &lt;legend&gt;Your Login Details&lt;/legend&gt;
      &lt;div class="form-group"&gt;
      &lt;label for="email"&gt;Email address&lt;/label&gt;
      &lt;input type="email" class="form-control" id="email" name="fields[email]" value="{{ user.email }}"&gt;
      &lt;/div&gt;
    &lt;/fieldset&gt;
  
    &lt;fieldset&gt;
    &lt;legend&gt;Your Personal Details&lt;/legend&gt;
    &lt;div class="form-group"&gt;
    &lt;label for="firstName"&gt;First Name&lt;/label&gt;
    &lt;input type="text" class="form-control" id="firstName" name="fields[firstName}" value="{{ user.firstName }}"&gt;
    &lt;/div&gt;
  
    &lt;div class="form-group"&gt;
    &lt;label for="lastName"&gt;Last Name&lt;/label&gt;
    &lt;input type="text" class="form-control" id="lastName" name="fields[lastName]" value="{{ user.lastName }}"&gt;
    &lt;/div&gt;
  
    &lt;div class="form-group"&gt;
    &lt;label for="phoneNumber"&gt;Contact Number&lt;/label&gt;
    &lt;input type="text" class="form-control" id="phoneNumber" name="fields[phoneNumber]" value="{{ user.phoneNumber}}"&gt;
    &lt;/div&gt;
    &lt;/fieldset&gt;
  
    &lt;fieldset&gt;
      {% set pets = craft.fields.getFieldbyHandle('pets') %}
  
    &lt;legend&gt;Your Property Details&lt;/legend&gt;
    &lt;label for="pets"&gt;{{ pets.instructions }}&lt;/label&gt;
    &lt;select class="form-control margin-bottom" id="pets" name="fields[pets]"&gt;
      {% for option in user.pets.options %}
      &lt;option {% if option.selected %}selected="selected"{% endif %}&gt;{{ option }}&lt;/option&gt;
      {% endfor %}
    &lt;/select&gt;
  
    {% set renting = craft.fields.getFieldbyHandle('renting') %}
  
    &lt;label for="renting"&gt;{{ renting.instructions }}&lt;/label&gt;
    &lt;select class="form-control margin-bottom" id="renting" name="fields[renting]"&gt;
      {% for option in user.renting.options %}
      &lt;option {% if option.selected %}selected="selected"{% endif %}&gt;{{ option }}&lt;/option&gt;
      {% endfor %}
    &lt;/select&gt;
  
    &lt;/fieldset&gt;
  
  
    &lt;input type="submit" class="btn btn-primary pull-right margin-top" value="Save Profile"&gt;
  &lt;/form&gt;
  </code></pre>
  
  <p>It only saves the last two fields which means that a user can't change their email address, name or phone number. </p>
  
  <p>I've recently updated Craft to the latest build (Craft Pro 2.1.2566) and also changed user/saveProfile to user/saveUser.</p>
  
Comments.ContentLicense: CC BY-SA 3.0
Comments.CreationDate: 2014-07-26T18:42:52.917Z
Comments.Text: Just corrected it but no change.
Comments.UserDisplayName: Niall Thompson
Tags: <user-profile>
Title: User Profile Not Saving Changes
ThreadText: # User Profile Not Saving Changes
  
  (Asked by: username_0 on 2014-07-26)
  
  My edit profile page doensn't save all fields:
  
  ```twig
  <form method="post" action="" accept-charset="UTF-8" enctype="multipart/form-data">
      <input type="hidden" name="action" value="users/saveUser">
      <input type="hidden" name="redirect" value="/users/{{ user.username }}">
      <input type="hidden" name="userId" value="{{ user.id }}">
  
      <fieldset>
        <legend>Your Photo</legend>
      {# Check to see if the user has a photo  #}
      {% if currentUser.photoUrl %}
  
        <figure><img src="{{ currentUser.photoUrl(200) }}" /></figure>
      {# If a photo exists, give the option to change the user photo #}
      <div class="form-group">
      <input type="file" name="userPhoto" value="Change Photo" class="form-control">
      </div>
  
      {% else %}
  
      {# If no photo exists, give the option to upload a new one #}
      <figure><img src="/assets/img/user.gif" /></figure>
      <div class="form-group">
      <input type="file" name="userPhoto" value="Upload" class="form-control">
      </div>
      {% endif %}
    </fieldset>
  
    <fieldset>
      <legend>Your Login Details</legend>
      <div class="form-group">
      <label for="email">Email address</label>
      <input type="email" class="form-control" id="email" name="fields[email]" value="{{ user.email }}">
      </div>
    </fieldset>
  
    <fieldset>
    <legend>Your Personal Details</legend>
    <div class="form-group">
    <label for="firstName">First Name</label>
    <input type="text" class="form-control" id="firstName" name="fields[firstName}" value="{{ user.firstName }}">
    </div>
  
    <div class="form-group">
    <label for="lastName">Last Name</label>
    <input type="text" class="form-control" id="lastName" name="fields[lastName]" value="{{ user.lastName }}">
    </div>
  
    <div class="form-group">
    <label for="phoneNumber">Contact Number</label>
    <input type="text" class="form-control" id="phoneNumber" name="fields[phoneNumber]" value="{{ user.phoneNumber}}">
    </div>
    </fieldset>
  
    <fieldset>
      {% set pets = craft.fields.getFieldbyHandle('pets') %}
  
    <legend>Your Property Details</legend>
    <label for="pets">{{ pets.instructions }}</label>
    <select class="form-control margin-bottom" id="pets" name="fields[pets]">
      {% for option in user.pets.options %}
      <option {% if option.selected %}selected="selected"{% endif %}>{{ option }}</option>
      {% endfor %}
    </select>
  
    {% set renting = craft.fields.getFieldbyHandle('renting') %}
  
    <label for="renting">{{ renting.instructions }}</label>
    <select class="form-control margin-bottom" id="renting" name="fields[renting]">
      {% for option in user.renting.options %}
      <option {% if option.selected %}selected="selected"{% endif %}>{{ option }}</option>
      {% endfor %}
    </select>
  
    </fieldset>
  
    <input type="submit" class="btn btn-primary pull-right margin-top" value="Save Profile">
  </form>
  
  ```
  
  It only saves the last two fields which means that a user can't change their email address, name or phone number.
  
  I've recently updated Craft to the latest build (Craft Pro 2.1.2566) and also changed user/saveProfile to user/saveUser.
  
  **Tags:** user-profile
  
  > **Comments:**
  > **username_0**: Just corrected it but no change.  
  
  ---
  
  ## 4 answers
  
  ### Answer by username_1 on 2016-09-07. Score: 2 | Accepted answer
  
  You need to define the `value=` attribute on your select fields.
  
  ```
  <select class="form-control margin-bottom" id="renting" name="fields[renting]">
  {% for option in user.renting.options %}
  <option {% if option.selected %}selected="selected"{% endif %}>{{ option }}</option>
  {% endfor %}
  </select>
  
  ```
  
  **Should be:**
  
  ```
  <select class="form-control margin-bottom" id="renting" name="fields[renting]">
  {% for option in user.renting.options %}
  <option value="{{option.value}}"{% if option.selected %}selected="selected"{% endif %}>{{ option }}</option>
  {% endfor %}
  </select>
  
  ```
  
  I was looking for the answer to the same problem. I narrowed my issue down to the field. When I removed it the form would submit properly. I fixed a typo in the value attribute and that fixed it.
  
  
  ---
  
  ### Answer by username_2 on 2014-07-26. Score: 7
  
  `firstName`, `lastName`, and `email` are actual user fields (not custom), so their `name=` attributes shouldn’t have the `fields[]` namespace.
  
  ```html
  <input type="email" class="form-control" id="email" name="email" value="{{ user.email }}">
  
  <input type="text" class="form-control" id="firstName" name="firstName" value="{{ user.firstName }}">
  
  <input type="text" class="form-control" id="lastName" name="lastName" value="{{ user.lastName }}">
  
  ```
  
  I’m guessing that once you fix those, your `phoneNumber` custom field will also start saving.
  
  > **Comments:**
  > **username_0**: That all works apart from the email field. I'm using the 'useEmailAsUsername' => true, config setting if that changes anything.  
  > **username_0**: I also have the verify email setting on. Ideally this would only be sent when registering new accounts and not when a user is changing their email.  
  > **username_3**: @username_0 to allow the user to change their email you need to pass a password also I believe.  
  > **username_4**: @username_3 nails it. Since changing the password and/or email of an existing user is "a big deal", you need to pass in the currently logged in user's password in a field named "password" in order for it to work.  
  > **username_0**: As in a hidden field like this? <input type="hidden" name="password" value="{{ user.password }}">  
  > **username_4**: @username_0 It has to be the  password of the *currently logged in* user.  Not the password for the user you're trying to change the password of.  
  > **username_2**: @username_0 plus, `{{ user.password }}` is going to give you the hashed password, and the `"password"` input needs to be set to the unhashed password. The whole point is, users need to prove that they are who they are before they can change their email address/password.  
  
  ---
  
  ### Answer by username_5 on 2014-11-13. Score: 3
  
  It should also be noted that to change your password or email, the current password has to be passed along with the request.
  
  ```
  // You must pass your current password to change these fields for an existing user
  
  ```
  
  
  ---
  
  ### Answer by username_6 on 2014-07-26. Score: 2
  
  For starters I see you have a typo...
  
  `fields[firstName}`
  
  Should be
  
  `fields[firstName]`
  
  Also:
  
  `{{ user.phoneNumber}}`
  
  Should be:
  
  `{{ user.phoneNumber }}`
  
  > **Comments:**
  > **username_0**: I've made the changes but the firstName, lastName and email fields won't save still.  
  
  ---
  
  