DEDE修改注册邮箱时一起修改UCenter中用户邮箱的问题
最近在做一个项目,就是在账号安全栏目中加一个修改邮箱并验证的功能,这个功能并不复杂,可以参照用户注册时的邮箱验证来实现。
就是当用户更改邮箱并提交之后,发一封包含一个链接的邮件到用户的新邮箱中,当用户点击该链接后,打开对应的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中用户邮箱的问题的更多相关文章
- 使用RegSetValueEx修改注册表时遇到的问题(转)
原文转自 http://blog.csdn.net/tracyzhongcf/article/details/4076870 1.今天在使用RegSetValueEx时发现一个问题: RegSetVa ...
- 修改注册表修改环境变量PATH
因公司办公电脑做了权限设置,不能通过右击“我的电脑”-属性的方式更改环境变量值 摸索找到了通过修改注册表的方式修改PATH值 Win+R 输入regedit打开册表编辑器 HKEY_LOCAL_M ...
- mysql——修改表名、修改字段名、修改字段数据类型、增加字段、删除字段、修改字段排列位置、修改存储引擎、删除表 (示例)
一.创建表和插入数据: ), mz ), bz ) ); ,'sww','sww01'); ,'aww','aww02'); ,'qww','qww03'), (,'eww','eww04'), (, ...
- 帝国cms添加修改会员字段时字段名不能带数字,否则注册页会出现空白
这几天ytkah在整帝国cms会员模块,根据客户需求添加不同的字段,这个相对不难,可还是遇到了点问题.当时添加会员字段时,在字段名用数字“1”来代表第一次,如下图的字段名“1rwsdy” 但是添加以后 ...
- C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- windows文件关联、打开方式列表之修改注册表攻略
这里全是修改注册表的方式.网上找了半天,有的仅有添加文件关联的方法,却没有添加到打开方式列表里面的方法:有的有添加到文件列表的方法,却是使 用控制面板->文件夹选项的.好难得才找齐所有,从添加文 ...
- 通过cmd修改注册表并设置cmd窗口的大小
设置cmd的窗口 mode: modem设置系统设备,主要是lpt1, com1/2, con: 启动时设置窗口大小: cmd /k "mode con: cols=120 lines=40 ...
- 【转】C#综合揭秘——通过修改注册表建立Windows自定义协议
引言 本文主要介绍注册表的概念与其相关根项的功能,以及浏览器如何通过连接调用自定义协议并与客户端进行数据通信.文中讲及如何通过C#程序.手动修改.安装项目等不同方式对注册表进行修改.其中通过安装项目对 ...
- C# .NET修改注册表
c#修改注册表,需要引用Microsoft.Win32命名空间 using Microsoft.Win32; //声明 ///引用 RegistryKey reg; reg = Registry.Cl ...
随机推荐
- C#的闭包
简单的理解:闭包变量是把局部变量的作用域扩展到回调函数,发生在匿名方法注册到委托上,而匿名方法中使用外部的局部变量 说什么都不如图示那么容易明白啊 先看C#的源码 class Program { st ...
- 【java并发编程艺术学习】(四)第二章 java并发机制的底层实现原理 学习记录(二) synchronized
章节介绍 本章节主要学习 Java SE 1.6 中为了减少获得锁 和 释放锁 时带来的性能消耗 而引入的偏向锁 和 轻量级锁,以及锁的存储结构 和 升级过程. synchronized实现同步的基础 ...
- javaScript之事件处理程序
事件就是用户或浏览器自身执行的某个动作,JavaScript与HTML的交互也是通过事件实现的.而相应某个事件的函数就叫做事件处理函数.包括以下几种: 1.HTML事件处理程序 某个元素支持的每 ...
- Add lombok to IntelliJ IDEA
Lombok study link: https://www.jianshu.com/p/365ea41b3573 Add below dependency code to pom.xml <d ...
- win7 eclipse连接hadoop2.x开发环境搭建
环境: hadoop-2.3.0-cdh5.1.0 centos 6.5 x64 win7 eclipse4.3 0. 前提条件 ,jdk,maven要安装好. 1.下载hadoop,用winRAR解 ...
- 会话临时表 ORA-14452
需要使用Oracle的临时表,向其中插入记录,用完后再删除.但是后来发现临时表的删除总是失败,返回错误: ORA-14452: attempt to create, alter or drop an ...
- 用ORBSLAM2运行TUM Dataset数据集Monocular Examples
参照https://github.com/raulmur/ORB_SLAM2/blob/master/README.md 运行 4. Monocular Examples TUM Dataset 数据 ...
- HTML5秘籍(第2版) 中文pdf扫描版
HTML5秘籍(第2版)共包括四个部分,共13章.第一部分介绍了HTML5的发展历程,用语义元素构造网页,编写更有意义的标记,以及构建更好的Web表单.第二部分介绍了HTML5中的音频与视频.CS ...
- .net动态代理-EMIT,AOP实现
动态代理实现原理: 通过动态基础目标类,重写目标虚方法,.net中实现手段-il Emit.Proxy项目源码,https://github.com/1448376744/Emit.Proxy 以下是 ...
- Python中读取,显示,保存图片的方法
一 opencv import cv2 as cv # load img = cv.imread(imagepath) # shape=(height, width, channel) h,w,c = ...