最近在做一个项目,就是在账号安全栏目中加一个修改邮箱并验证的功能,这个功能并不复杂,可以参照用户注册时的邮箱验证来实现。

就是当用户更改邮箱并提交之后,发一封包含一个链接的邮件到用户的新邮箱中,当用户点击该链接后,打开对应的php文件,核实哈希码,然后修改dede数据库中的邮箱字段。

其中有这样的一段代码:

    #api{{
if(defined('UC_API') && @include_once DEDEROOT.'/uc_client/client.php')
{
$emailnew = $email != $row['email'] ? $email : '';
//var_dump($cfg_ml->M_LoginID);echo('@@@');var_dump($oldpwd);echo('@@@');var_dump($userpwd);echo('@@@');var_dump($emailnew);die('@@@');
$ucresult = uc_user_edit($cfg_ml->M_LoginID, $oldpwd, $userpwd, $emailnew);
}
#/aip}}

这是更新UCenter中用户邮箱字段的,我打印出了uc_user_edit()函数中的每个参数,可是我按照它的类型插入参数后,无论如何就是不能修改UCenter中的邮箱字段。

为此我折腾了差不多两天的时间,结果偶然发现,只要我插入的邮箱是ucenter中已经存在的邮箱,那么就无法更新该字段,也就是说一个邮箱只能对应一个用户。

而我每次都是用163或者sina的邮箱,而这两个邮箱ucenter中已经有了,所以不能修改。我修改了一个新邮箱后,更新成功!

我一直以为是修改后的dede代码有问题,没想到问题出在了这里,为此花了大量的时间和精力,非常之坑爹!

在此记录,以免忘记(虽然想忘掉这事很难),同时也提醒遇到类似问题的朋友,有时候,要相信自己,相信自己的代码,考虑一下是不是其他的情况影响。

还有一点,我们在dede后台的会员管理中修改用户的密码和邮箱,在ucenter中无法做到同步修改,加上上面的代码也不行,因为$oldpwd无法获取到,所以不能执行uc_user_edit()这个方法。经试验,在dede后台中改了原来的密码后,用老密码仍然可以登录,用新密码登录无效,只有在ucenter中改了密码后,才能生效。

如果要同步ucenter中的用户信息,那么想要找到E:\wamp\www\dede\uc_client\model\user.php,把if(!$ignoreoldpw && $data['password'] != md5(md5($oldpw).$data['salt'])){...}

这个判断注释掉。

DEDE修改注册邮箱时一起修改UCenter中用户邮箱的问题的更多相关文章

  1. 使用RegSetValueEx修改注册表时遇到的问题(转)

    原文转自 http://blog.csdn.net/tracyzhongcf/article/details/4076870 1.今天在使用RegSetValueEx时发现一个问题: RegSetVa ...

  2. 修改注册表修改环境变量PATH

      因公司办公电脑做了权限设置,不能通过右击“我的电脑”-属性的方式更改环境变量值 摸索找到了通过修改注册表的方式修改PATH值 Win+R 输入regedit打开册表编辑器 HKEY_LOCAL_M ...

  3. mysql——修改表名、修改字段名、修改字段数据类型、增加字段、删除字段、修改字段排列位置、修改存储引擎、删除表 (示例)

    一.创建表和插入数据: ), mz ), bz ) ); ,'sww','sww01'); ,'aww','aww02'); ,'qww','qww03'), (,'eww','eww04'), (, ...

  4. 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白

    这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...

  5. C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  6. windows文件关联、打开方式列表之修改注册表攻略

    这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...

  7. 通过cmd修改注册表并设置cmd窗口的大小

    设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...

  8. 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议

    引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...

  9. C# .NET修改注册表

    c#修改注册表,需要引用Microsoft.Win32命名空间 using Microsoft.Win32; //声明 ///引用 RegistryKey reg; reg = Registry.Cl ...

随机推荐

  1. 二、java 与 scala相互调用

    介绍:scala 是简化的java,运行于jvm的脚步语言.Java和scala通过各自编译器编译过都是jvm能解析class文件.本文介绍java和scala如何互调  scala的源代码文件是以. ...

  2. qt程序异常结束crashed

    今天调试以前写的opencv的程序发现每次一点运行就报错误 Starting D:\Qt\QProjects\build-HelloWorld-lian-Debug\debug\HelloWorld. ...

  3. strust2.2.3版本启动报错struts-plugin.xml:8:162

    我用的是struts-2.2.3,开始把全部的jar包都放进去了,可是一直报 信息: Parsing configuration file [struts-plugin.xml] 2011-6-11 ...

  4. HTML5-A*寻路算法

    设置起点 设置终点 设置障碍 清除障碍 允许斜向跨越

  5. 把Nutch爬虫部署到Hadoop集群上

    原文地址:http://cn.soulmachine.me/blog/20140204/ 把Nutch爬虫部署到Hadoop集群上 Feb 4th, 2014 | Comments 软件版本:Nutc ...

  6. Entity Framework Code-First(10.2):Entity Mappings

    Entity Mappings using Fluent API: Here, we will learn how to configure an entity using Fluent API. W ...

  7. chrome - Vimium 插件超级方便快捷键

    Vimium插件作用 安装后,可以用定义好的快捷键操作浏览器,好用到爆粗口 下载地址 https://chrome.google.com/webstore/detail/vimium/dbepggeo ...

  8. 关于UsedRange方法选中了空区域的解决方案

    使用worksheet.usedrange属性去制作数据透视表的时候会出现blank项,debug时发现它选中了空的区域. 解决方案: 属性usedrange包含着带格式的.空白的单元格(即使设置过单 ...

  9. 第三章 Goroutine调度策略(16)

    本文是<Go语言调度器源代码情景分析>系列的第16篇,也是第三章<Goroutine调度策略>的第1小节. 在调度器概述一节我们提到过,所谓的goroutine调度,是指程序代 ...

  10. Highest Price in Supply Chain (25)(DFS)(PAT甲级)

    #include<bits/stdc++.h>using namespace std;int fa;int degree[100007];vector<int>v[100007 ...