avatar.php uid,phpcms函數庫中獲取會員頭像方法get_memberavatar()有時無效問題

修復方法:

首先我先給出無效情況的演示代碼,如下:$userid?=?intval($_GET['userid']);

$userinfo?=?$this->db->get_one('userid='.$userid);

$this->db->set_model(10);?//原因便在這里

$userdetail?=?$this->db->get_one("userid=".$userid);

$avatar?=?get_memberavatar($userid,1,180);?//結果$avatar為空內容

我們再來看下get_memberavatar()的部分源碼:function?get_memberavatar($uid,?$is_userid='',?$size='30')?{

if($is_userid)?{

$db?=?pc_base::load_model('member_model');

$memberinfo?=?$db->get_one(array('userid'=>$uid));?//獲取會員的基本信息

if(isset($memberinfo['phpssouid']))?{

$uid?=?$memberinfo['phpssouid'];

}?else?{

return?false;

}

}

...

綜合以上兩段代碼,不知道你有沒有發現錯誤原因在哪里呢?

當我們把后者代碼放到前者代碼的環境中時,并且第二個參數為真時,因為第一段代碼中使用了set_model()方法對會員模型了設定從而使$this->db中的一個屬性變量tablename(代表當前指向的數據表,默認為“member”)進行了更換,變成了“member_detail”之類的其它標,不再是‘member’這個值了,那么在后續的get_memberavatar()方法中再去讀取會員信息時因為沒有重置回member表,那么讀取的仍然是‘member_detail'表,如此,后續數據中當然沒有“$memberinfo['phpssouid']”這一項,結果返回false空內容。

解決方法:

解決方法當然也非常簡單,就是在get_memberavatar()方法中為了防止外部環境中對數據表做了更改的影響,在方法里先重置操作回member表,再執行后面的操作。修改代碼部分如下:if($is_userid)?{

$db?=?pc_base::load_model('member_model');

$db->set_model();?//重置回member表

$memberinfo?=?$db->get_one(array('userid'=>$uid));?//獲取會員的基本信息

...

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/541379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/541379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/541379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ruby 集合 分組_將Ruby中兩個集合的所有元素結合在一起

ruby 集合 分組In this program, we will see how we can combine the two sets? This is not a very difficult task. This can be easily done with the help of the operator. In many places of programming, you will find that operator is overloaded for various ty…

?Python中面向對象的編程

Python面向對象的編程1概述(1)面向對象編程面向對象的編程是利用“類”和“對象”來創建各種模型來實現對真實世界的描述,使用面向對象編程的原因一方面是因為它可以使程序的維護和擴展變得更簡單,并且可以大大提高程序開發效率&a…

php中用for循環制作矩形,PHP中for循環語句的幾種變型

PHP中for循環語句的幾種變型2021-01-22 10:21:42406for語句可以說是PHP(同時也是多種語言)的循環控制部份最基本的一個語句了,for語句的執行規律和基礎用法在這里就不多說,可以參見PHP手冊for語句部分。PHP手冊中對它的語法定義如下:for(expr…

c語言用命令行編譯運行程序_使用C程序執行系統命令

c語言用命令行編譯運行程序Sometimes, we may need to execute Linux/Windows DOS commands through our C program. (Note: the code given below is compiled and executed on Linux GCC compiler, so here we are testing Linux commands only). 有時,我們可能需…

python 熊貓,Python熊貓

我試圖連續分組和計算相同的信息:#Functionsdef postal_saude ():global df, lista_solic#List of solicitantes in Postal Saudelist_sol [lista_solic["name1"], lista_solic["name2"]]#filter Postal Saude Solicitantesdf df[(df[Cliente…

Spring的兩種任務調度Scheduled和Async

Spring提供了兩種后臺任務的方法,分別是: 調度任務&#xff0c;Schedule異步任務&#xff0c;Async當然&#xff0c;使用這兩個是有條件的&#xff0c;需要在spring應用的上下文中聲明<task:annotation-driven/>當然&#xff0c;如果我們是基于java配置的&#xff0c;需要…

建立單鏈表 單鏈表的插入_單鏈列表插入

建立單鏈表 單鏈表的插入All possible cases: 所有可能的情況&#xff1a; Inserting at beginning 開始插入 Inserting at the ending 在末尾插入 Inserting at given position 在給定位置插入 Algorithms: 算法&#xff1a; 1)開始插入 (1) Inserting at the beginning) In…

mysql學習筆記(1-安裝簡介)

mysql的安裝方式&#xff1a;(1)通過系統提供的默認版本(rpm包&#xff0c;穩定版&#xff0c;該版本滿足了使用的需求&#xff0c;建議使用&#xff0c;os vendor)(2)mysql官方提供官方提供的通用rpm安裝包通用二進制格式的程序包(直接下載文件&#xff0c;解壓到指定目錄&…

存儲器間接尋址方式_8086中的數據存儲器尋址模式

存儲器間接尋址方式In this type of addressing mode, first the offset address is calculated, then the memory address is calculated and then the operand form that memory location is fetched. There are following modes which lie under the Data Addressing Mode: …

oracle asm 刪除diskgroup,ASM磁盤組刪除DISK操作

沒想到這么簡單的操作&#xff0c;由于不熟悉還碰到了兩個小問題。[oracledbserver1 ~]$ sqlplus / as sysdbaSQL*Plus: Release 11.2.0.2.0 Production on Tue Aug 9 10:08:062011Copyright (c) 1982, 2010, Oracle.All rights reserved.Connected to:Oracle Database 11g Ent…

intellij idea 最常用的快捷鍵

F2&#xff0c; 可以快速的向下跳走 CtrlF7&#xff0c;可以查詢當前元素在當前文件中的引用&#xff0c;然后按 F3 可以選擇AltQ&#xff0c;可以看到當前方法的聲明CtrlP&#xff0c;可以顯示參數信息CtrlAltV&#xff0c;可以引入變量。例如&#xff1a;new String(); 自動導…

如何在Java中檢查字符串是否為數字?

We will check whether string is a number or not – with the help of logic we will solve this problem, 我們將檢查字符串是否為數字-借助邏輯&#xff0c;我們將解決此問題&#xff0c; In the first step, we will take a string variable named str and store any val…

oracle清理告警日志,Oracle 跟蹤/告警/監聽日志的清理腳本

[root ~]# cat del_oracle_log.sh#!/bin/bashsource /home/oracle/.bash_profilefunction audit_log(){ #---audit_log日志跟蹤文件#audit_log$(strings $ORACLE_HOME/dbs/spfile$ORACLE_SID.ora|grep -i audit_file_dest|awk -F {print $NF}|sed "s///g")audit_lo…

python爬蟲之scrapy框架

Scrapy是一個為了爬取網站數據&#xff0c;提取結構性數據而編寫的應用框架。 其可以應用在數據挖掘&#xff0c;信息處理或存儲歷史數據等一系列的程序中。其最初是為了頁面抓取 (更確切來說, 網絡抓取 )所設計的&#xff0c; 也可以應用在獲取API所返回的數據(例如 Amazon As…

oracle中的事務回滾,ORACLE 死事務的回滾

死事務出現在異常關閉數據庫或者事務進程不正常結束&#xff0c;比如KILL -9&#xff0c;shutdown abort的情況下。當前數據庫里的死事務可以通過查詢內部表x$ktuxe來獲得。select ADDR,KTUXEUSN,KTUXESLT,KTUXESQN,KTUXESIZ from x$ktuxe where KTUXECFLDEAD;ADDR …

大數據數據可視化設計原則_數據可視化設計的8頂帽子

大數據數據可視化設計原則8 hats of data visualization are basically the important persons and their roles that are basically required to carry out data visualization are as follows: 數據可視化有8個基本要素&#xff0c;而進行數據可視化所需的基本角色如下&#…

debian8.8安裝谷歌瀏覽器

第一步&#xff1a;下載&#xff1a; wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb //32位 wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb //64位第二步&#xff1a;安裝dpkg -i google-chrome*.deb…

MB_LEN_MAX常數,帶C ++示例

C MB_LEN_MAX宏常量 (C MB_LEN_MAX macro constant) MB_LEN_MAX constant is a macro constant which is defied in climits header, it is used to get the maximum number of bytes in a multibyte character, for any locale, it returns maximum number of bytes that a m…

php谷歌收錄接口,php實現查詢百度google收錄情況(示例代碼)

PHP$SEOdetail array();$domain !empty($_GET[q]) ? $_GET[q] : www.mycodes.net;baidudetail($domain);googledetail($domain);var_dump($SEOdetail);function baidudetail($domain) {$baidu_site http://www.baidu.com/baidu?wordsite%3A . $domain;$baidu_link http:/…

Linux學習第三步(Centos7安裝mysql5.7數據庫)

版本&#xff1a;mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar 前言&#xff1a;在linux下安裝mysql不如windows下面那么簡單&#xff0c;但是也不是很難。本文向大家講解了如何在Centos7下如何安裝mysql5.7版本,如果有什么問題和錯誤的地方&#xff0c;歡迎大家指出。 注釋&…