首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >usercake更新字段不工作

usercake更新字段不工作
EN

Stack Overflow用户
提问于 2013-09-01 20:25:37
回答 1查看 313关注 0票数 2

我使用用户蛋糕的用户管理系统,但我正在挣扎的一个问题,我已经问了这个问题在他们的网站,但我找不到任何人帮助我。

我需要的只是让用户能够更新他们的信息。例如。名字,电话,email....The电子邮件字段的更新是正确的,因为它的功能。

我添加的字段没有被更新,。有人能给我一些提示吗?我错过了什么?

以下是我试着查看电子邮件字段的内容。我有名字字段。

Funcs.php

代码语言:javascript
复制
   //Update a user's email
  function updateEmail($id, $email)
  {
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
    SET 
    email = ?
    WHERE
    id = ?");
$stmt->bind_param("si", $email, $id);
$result = $stmt->execute();
$stmt->close(); 
return $result;
    }


   //Update a user's first name. This is what isn't working. 
   function updateFirstname($id, $firstname)
   {
global $mysqli,$db_table_prefix;
$stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
    SET 
    firstname = ?
    WHERE
    id = ?");
$stmt->bind_param("si", $firstname, $id);
$result = $stmt->execute();
$stmt->close(); 
return $result;
    }

这是class.user.php

代码语言:javascript
复制
 class loggedInUser {
public $email = NULL;
public $hash_pw = NULL;
public $user_id = NULL;
public $firstname = NULL;


   //Update a users email
public function updateEmail($email)
{
    global $mysqli,$db_table_prefix;
    $this->email = $email;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET 
        email = ?
        WHERE
        id = ?");
    $stmt->bind_param("si", $email, $this->user_id);
    $stmt->execute();
    $stmt->close(); 
}

//Update a users first name
public function updateFirstname($firstname)
{
    global $mysqli,$db_table_prefix;
    $this->firstname = $firstname;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET 
        firstname = ?
        WHERE
        id = ?");
    $stmt->bind_param("si", $firstname, $this->user_id);
    $stmt->execute();
    $stmt->close(); 
}
    }

在user_settings.php中,我可以更改字段并按下更新按钮。如果我更改电子邮件并点击更新,电子邮件将被更新,但是当我更改名字并点击更新时,我将得到

nothing to update

代码语言:javascript
复制
    //Prevent the user visiting the logged in page if he is not logged in
    if(!isUserLoggedIn()) { header("Location: login.php"); die(); }

   if(!empty($_POST))
    {
$errors = array();
$successes = array();
$password = $_POST["password"];
$password_new = $_POST["passwordc"];
$password_confirm = $_POST["passwordcheck"];

$errors = array();
$email = $_POST["email"];
$firstname = $_POST["firstname"];


//Perform some validation
//Feel free to edit / change as required

//Confirm the hashes match before updating a users password
$entered_pass = generateHash($password,$loggedInUser->hash_pw);

if (trim($password) == ""){
    $errors[] = lang("ACCOUNT_SPECIFY_PASSWORD");
}
else if($entered_pass != $loggedInUser->hash_pw)
{
    //No match
    $errors[] = lang("ACCOUNT_PASSWORD_INVALID");
}   
if($email != $loggedInUser->email)
{
    if(trim($email) == "")
    {
        $errors[] = lang("ACCOUNT_SPECIFY_EMAIL");
    }
    else if(!isValidEmail($email))
    {
        $errors[] = lang("ACCOUNT_INVALID_EMAIL");
    }
    else if(emailExists($email))
    {
        $errors[] = lang("ACCOUNT_EMAIL_IN_USE", array($email));    
    }

    //End data validation
    if(count($errors) == 0)
    {
        $loggedInUser->updateEmail($email);
        $loggedInUser->updateFirstname($firstname);
        $successes[] = lang("ACCOUNT_EMAIL_UPDATED");
    }
}

if ($password_new != "" OR $password_confirm != "")
{
    if(trim($password_new) == "")
    {
        $errors[] = lang("ACCOUNT_SPECIFY_NEW_PASSWORD");
    }
    else if(trim($password_confirm) == "")
    {
        $errors[] = lang("ACCOUNT_SPECIFY_CONFIRM_PASSWORD");
    }
    else if(minMaxRange(8,50,$password_new))
    {   
        $errors[] = lang("ACCOUNT_NEW_PASSWORD_LENGTH",array(8,50));
    }
    else if($password_new != $password_confirm)
    {
        $errors[] = lang("ACCOUNT_PASS_MISMATCH");
    }

    //End data validation
    if(count($errors) == 0)
    {
        //Also prevent updating if someone attempts to update with the same password
        $entered_pass_new = generateHash($password_new,$loggedInUser->hash_pw);

        if($entered_pass_new == $loggedInUser->hash_pw)
        {
            //Don't update, this fool is trying to update with the same password ¬¬
            $errors[] = lang("ACCOUNT_PASSWORD_NOTHING_TO_UPDATE");
        }
        else
        {
            //This function will create the new hash and update the hash_pw property.
            $loggedInUser->updatePassword($password_new);
            $successes[] = lang("ACCOUNT_PASSWORD_UPDATED");
        }
    }
}
if(count($errors) == 0 AND count($successes) == 0){
    $errors[] = lang("NOTHING_TO_UPDATE");
}
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-01 20:33:43

代码语言:javascript
复制
if($email != $loggedInUser->email)
{
    if(trim($email) == "")
    {
        $errors[] = lang("ACCOUNT_SPECIFY_EMAIL");
    }
    else if(!isValidEmail($email))
    {
        $errors[] = lang("ACCOUNT_INVALID_EMAIL");
    }
    else if(emailExists($email))
    {
        $errors[] = lang("ACCOUNT_EMAIL_IN_USE", array($email));    
    }

    //End data validation
    if(count($errors) == 0)
    {
        $loggedInUser->updateEmail($email);
        $successes[] = lang("ACCOUNT_EMAIL_UPDATED");
    }
}

将此函数克隆为

代码语言:javascript
复制
if($firstname != $loggedInUser->firstname) blah blah

从上面的函数中删除这一行,在新函数中移动它:

代码语言:javascript
复制
loggedInUser->updateFirstname($firstname);

只需克隆函数,就像您已经完成了above.Change错误消息和添加函数来验证名称一样,它将有一些不同,它将需要更多的工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18562570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档