diff --git a/core/modules/contact/contact.pages.inc b/core/modules/contact/contact.pages.inc
index bf096a7..a62937b 100644
--- a/core/modules/contact/contact.pages.inc
+++ b/core/modules/contact/contact.pages.inc
@@ -76,6 +76,24 @@ function contact_site_form($form, &$form_state) {
     '#default_value' => $user->uid ? $user->mail : '',
     '#required' => TRUE,
   );
+  // We do not allow authenticated users to alter their name and email
+  // here because they could impersonate someone else.
+  if ($user->uid){
+    // Change form elements to values.
+    $form['name']['#type'] = $form['mail']['#type'] = 'value';
+
+    // Display read-only name and mail address to the user.
+    $form['name_display'] = array(
+      '#type' => 'item',
+      '#title' => t('Your name'),
+      '#markup' => user_format_name($user),
+    );
+    $form['mail_display'] = array(
+      '#type' => 'item',
+      '#title' => t('Your e-mail address'),
+      '#markup' => $user->mail,
+    );
+  }
   $form['subject'] = array(
     '#type' => 'textfield',
     '#title' => t('Subject'),
@@ -129,7 +147,6 @@ function contact_site_form_validate($form, &$form_state) {
  */
 function contact_site_form_submit($form, &$form_state) {
   global $user, $language_interface;
-
   $values = $form_state['values'];
   $values['sender'] = $user;
   $values['sender']->name = $values['name'];
@@ -212,6 +229,24 @@ function contact_personal_form($form, &$form_state, $recipient) {
     '#default_value' => $user->uid ? $user->mail : '',
     '#required' => TRUE,
   );
+  // We do not allow authenticated users to alter their name and email
+  // here because they could impersonate someone else.
+  if ($user->uid){
+    // Change form elements to values.
+    $form['name']['#type'] = $form['mail']['#type'] = 'value';
+
+    // Display readonly name and mail address to the user.
+    $form['name_display'] = array(
+      '#type' => 'item',
+      '#title' => t('Your name'),
+      '#markup' => user_format_name($user),
+    );
+    $form['mail_display'] = array(
+      '#type' => 'item',
+      '#title' => t('Your e-mail address'),
+      '#markup' => $user->mail,
+    );
+  }
   $form['to'] = array(
     '#type' => 'item',
     '#title' => t('To'),
@@ -259,6 +294,7 @@ function contact_personal_form_submit($form, &$form_state) {
 
   // Save the anonymous user information to a cookie for reuse.
   if (!$user->uid) {
+    $values['sender']->name .= ' (' . t('Unverified') . ')';
     user_cookie_save(array_intersect_key($values, array_flip(array('name', 'mail'))));
   }
 
diff --git a/core/modules/contact/contact.test b/core/modules/contact/contact.test
index 490d8f8..880e8f8 100644
--- a/core/modules/contact/contact.test
+++ b/core/modules/contact/contact.test
@@ -175,6 +175,10 @@ class ContactSitewideTestCase extends DrupalWebTestCase {
     $this->addCategory('bar', 'bar@example.com', $bar_autoreply, FALSE);
     $this->addCategory('no_autoreply', 'bar@example.com', '', FALSE);
 
+    // Log the current user out in order to test the name and email fields.
+    $this->drupalLogout();
+    user_role_grant_permissions(DRUPAL_ANONYMOUS_RID, array('access site-wide contact form'));
+
     // Test the auto-reply for category 'foo'.
     $email = $this->randomName(32) . '@example.com';
     $subject = $this->randomName(64);
@@ -433,3 +437,36 @@ class ContactPersonalTestCase extends DrupalWebTestCase {
     $this->drupalPost('user/' . $account->uid . '/contact', $message, t('Send message'));
   }
 }
+
+/**
+ * Tests the contact form for authenticated users.
+ */
+class ContactAuthenticatedTestCase extends DrupalWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Contact form textfields.',
+      'description' => 'Tests contact form textfields are present if authenticated',
+      'group' => 'Contact',
+    );
+  }
+
+  function setUp() {
+    parent::setUp('contact');
+  }
+
+  /**
+   * Tests that name and email fields are not present for authenticated users.
+   */
+  function testContactSiteWideTextfieldsLoggedInTestCase() {
+    $user = $this->drupalCreateUser(array('access site-wide contact form'));
+    $this->drupalLogin($user);
+    $this->drupalGet('contact');
+
+    // Ensure that there is no textfield for name.
+    $this->assertFalse($this->xpath('//input[@name=:name]', array(':name' => 'name')));
+
+    // Ensure that there is no textfield for email.
+    $this->assertFalse($this->xpath('//input[@name=:name]', array(':name' => 'mail')));
+  }
+}
