I've got a couple of members that aren't being recognized when I try and send them Private Messages. They show in the Membership list, but just aren't being found when I respond or send a new message to them. I just installed the software last night, and everything else seems fine. Just not able to find some members.
Any ideas?
Thanks!
Can you find them by viewing members from your admin panel of SMF?
Have they possibly deleted there own accounts for some reason? There is no reason members should be missing unless they have either deleted there own accounts or your database is corrupt for some reason.
Do you have a backup? If you do when you view your backup do you see the members there?
Can you find them by viewing members from your admin panel of SMF?
Yes, they are all there.
Have they possibly deleted there own accounts for some reason?
No
Do you have a backup?
Not that I know of. How do I do this?
Sorry it took so long to respond. Just been dealing with it. Thanks!
Can you provide us with a link to the forum?
Quote from: MikeMill on December 12, 2005, 04:52:47 PM
Can you provide us with a link to the forum?
http://www.tigerslair.org/Forum
I just visited the site and noticed the key stats
Quote
Posts in Topics by Members
Latest Member:
All blank ! It's a theme problem. What version was the theme written for?
Try sending your members a PM using default template.
Quote from: Fizzy on December 12, 2005, 05:40:25 PM
I just visited the site and noticed the key stats
Quote
Posts in Topics by Members
Latest Member:
All blank !
This is why
http://www.tigerslair.org/Forum/Themes/deforange/style.css?rc1
http://www.tigerslair.org/Forum/Themes/default/script.js?rc1
Theme is not compatible with 1.0.5. He is using a 1.1 theme on 1.0.5.
http://www.tigerslair.org/Forum/index.php?theme=1
Okay, I downloaded one that said it was compatible with 1.0.5, and I still can't PM some members. :(
Do the members have any special characters in their name?
Can you PM other users?
I can PM some members, and an example of one of the members it can't find is OrangeBlood. No one else has any special characters either.
Can you please provide me with a test account?
Should I make you an Administrator?
Yes make me and admin to check error logs. PM me the info. Also list other users that you cannot PM.
Ok I logged in and checked and its only an error when seinding to OrangeBlood. I did some maintenance and nothing. I will foward this to a Dev. leave that account active so that they can take a look at it.
-JayBachatero
There's at least 1 more member, TigerSpize that I'm not able to send to.
Apparently MySQL 4.1.11 is case-sensitive. SMF is making the username lowercase, but because the actual username is "OrangeBlood" and not "orangeblood", MySQL isn't finding it.
Try this:
Sources/Subs-Auth.php
Find
$names[$i] = addslashes(trim(strtolower($name)));
Replace
$names[$i] = addslashes(trim($name));
That should fix your problem.
Found it, replaced it, still the same problem ???
Quote from: Oldiesmann on December 12, 2005, 08:54:36 PM
Apparently MySQL 4.1.11 is case-sensitive. SMF is making the username lowercase, but because the actual username is "OrangeBlood" and not "orangeblood", MySQL isn't finding it.
Try this:
Sources/Subs-Auth.php
Find
$names[$i] = addslashes(trim(strtolower($name)));
Replace
$names[$i] = addslashes(trim($name));
That should fix your problem.
Okay, I'm still having problems, even after replacing the noted code above. I've been able to solve the problems by asking the membership that has CAPS in their User ID to go to all lower case, but it really seems like a hassle to do this for every individual member.
Is there any other thing that I could try to rectify this problem? I'm really, really happy with the software otherwise, but this part is driving me nuts. Help, anyone, if you can. Please.
Thanks
still having the same problem recognizing any members with any CAPITAL letters in their username. Anyone else have a fix for this?
Also, if not, is their any way I can set it up so that when a member goes to register, it only allows for lowercase letters?
Help, this is crazy!
This is very, very bizarre, as it obviously works fine here.
The capital letter is only in their "display name" isn't it, not username? By this I mean if you look at their entry directly in the database, under memberName it is all lower case? SMF lowercases all usernames for just this purpose...
I have found that if I can change the display name to all lower case, it does allow me and all members to PM flawlessly. That seems like a hassle though. There must be something that causes this.
How very odd, we must look into this.
Thanks. Keep me updated. I really appreciate it.
same problem here :( any ideas?
another strange thing, and i think the problems are related, is that i can register the username 'DEVIC' when already exists one 'devic' and this is not good ;)
What version of PHP and MySQL are you using? Go to Admin > Support and Credits. It tells you there. Copy all of that information and post it.
@the_growling_one did you upgrade to RC2?
-JayBachatero
Current SMF version: SMF 1.1 RC2
PHP version: 4.3.11
MySQL version: 4.1.13-standard-log
Quote from: JayBachatero on January 05, 2006, 05:18:59 PM
What version of PHP and MySQL are you using? Go to Admin > Support and Credits. It tells you there. Copy all of that information and post it.
@the_growling_one did you upgrade to RC2?
-JayBachatero
Haven't yet upgraded to RC2. Do you think that might help?
OK, I think it's an MySQL funny, but can you try this. Open Subs-Auth.php and find:
// Nothing found yet.
$results = array();
// This ensures you can't search someones email address if you can't see it.
$email_condition = $user_info['is_admin'] || empty($modSettings['allow_hideEmail']) ? '' : 'hideEmail = 0 AND ';
if ($use_wildcards && $maybe_email)
$email_condition = "
OR (" . $email_condition . "emailAddress LIKE '" . implode("') OR ($email_condition emailAddress LIKE '", $names) . "')";
elseif ($maybe_email)
$email_condition = "
OR (" . $email_condition . "emailAddress IN ('" . implode("', '", $names) . "'))";
else
$email_condition = '';
// Search by username, display name, and email address.
$request = db_query("
SELECT ID_MEMBER, memberName, realName, emailAddress, hideEmail
FROM {$db_prefix}members" . ($use_wildcards ? "
WHERE (memberName LIKE '" . implode("' OR memberName LIKE '", $names) . "'
OR realName LIKE '" . implode("' OR realName LIKE '", $names) . "'$email_condition)" : "
WHERE (memberName IN ('" . implode("', '", $names) . "')
OR realName IN ('" . implode("', '", $names) . "')$email_condition)") .
($buddies_only ? 'AND ID_MEMBER IN (' . implode(', ', $user_info['buddies']) . ')' : '') . "
AND is_activated IN (1, 11)" . ($max == null ? '' : "
LIMIT " . (int) $max), __FILE__, __LINE__);
and replace with:
// What are we using to compare?
$comparison = $use_wildcards ? 'LIKE' : '=';
// Nothing found yet.
$results = array();
// This ensures you can't search someones email address if you can't see it.
$email_condition = $user_info['is_admin'] || empty($modSettings['allow_hideEmail']) ? '' : 'hideEmail = 0 AND ';
if ($use_wildcards || $maybe_email)
$email_condition = "
OR (" . $email_condition . "emailAddress $comparison '" . implode("') OR ($email_condition emailAddress $comparison '", $names) . "')";
else
$email_condition = '';
// Search by username, display name, and email address.
$request = db_query("
SELECT ID_MEMBER, memberName, realName, emailAddress, hideEmail
FROM {$db_prefix}members
WHERE (memberName $comparison '" . implode("' OR memberName $comparison '", $names) . "'
OR realName $comparison '" . implode("' OR realName $comparison '", $names) . "'$email_condition)
" . ($buddies_only ? 'AND ID_MEMBER IN (' . implode(', ', $user_info['buddies']) . ')' : '') . "
AND is_activated IN (1, 11)" . ($max == null ? '' : "
LIMIT " . (int) $max), __FILE__, __LINE__);
and let me know if it works?
Did anyone find a solution to this???
I am in the same boat here.
Is the problem with migrating users from Joomla to SMF with Oristo's bridge?
Joomla allows upper case.
Quote from: Grudge on January 06, 2006, 03:06:28 PM
OK, I think it's an MySQL funny, but can you try this. Open Subs-Auth.php and find:
// Nothing found yet.
$results = array();
// This ensures you can't search someones email address if you can't see it.
$email_condition = $user_info['is_admin'] || empty($modSettings['allow_hideEmail']) ? '' : 'hideEmail = 0 AND ';
if ($use_wildcards && $maybe_email)
$email_condition = "
OR (" . $email_condition . "emailAddress LIKE '" . implode("') OR ($email_condition emailAddress LIKE '", $names) . "')";
elseif ($maybe_email)
$email_condition = "
OR (" . $email_condition . "emailAddress IN ('" . implode("', '", $names) . "'))";
else
$email_condition = '';
// Search by username, display name, and email address.
$request = db_query("
SELECT ID_MEMBER, memberName, realName, emailAddress, hideEmail
FROM {$db_prefix}members" . ($use_wildcards ? "
WHERE (memberName LIKE '" . implode("' OR memberName LIKE '", $names) . "'
OR realName LIKE '" . implode("' OR realName LIKE '", $names) . "'$email_condition)" : "
WHERE (memberName IN ('" . implode("', '", $names) . "')
OR realName IN ('" . implode("', '", $names) . "')$email_condition)") .
($buddies_only ? 'AND ID_MEMBER IN (' . implode(', ', $user_info['buddies']) . ')' : '') . "
AND is_activated IN (1, 11)" . ($max == null ? '' : "
LIMIT " . (int) $max), __FILE__, __LINE__);
and replace with:
// What are we using to compare?
$comparison = $use_wildcards ? 'LIKE' : '=';
// Nothing found yet.
$results = array();
// This ensures you can't search someones email address if you can't see it.
$email_condition = $user_info['is_admin'] || empty($modSettings['allow_hideEmail']) ? '' : 'hideEmail = 0 AND ';
if ($use_wildcards || $maybe_email)
$email_condition = "
OR (" . $email_condition . "emailAddress $comparison '" . implode("') OR ($email_condition emailAddress $comparison '", $names) . "')";
else
$email_condition = '';
// Search by username, display name, and email address.
$request = db_query("
SELECT ID_MEMBER, memberName, realName, emailAddress, hideEmail
FROM {$db_prefix}members
WHERE (memberName $comparison '" . implode("' OR memberName $comparison '", $names) . "'
OR realName $comparison '" . implode("' OR realName $comparison '", $names) . "'$email_condition)
" . ($buddies_only ? 'AND ID_MEMBER IN (' . implode(', ', $user_info['buddies']) . ')' : '') . "
AND is_activated IN (1, 11)" . ($max == null ? '' : "
LIMIT " . (int) $max), __FILE__, __LINE__);
and let me know if it works?
I tried this and the other suggested mod and found that the User Search now works (ie. Find Members beside the 'To:' box) however the PM function still reduces all letters in the User name to lower case rendering it useless.
Anybody ... Anybody ... Beuler .... ?
Was this solved???
I'd swear I just heard crickets chirping.
After 4 re-installs of SMF, this is still happening.
Obviously, it has happened before since I didn't create this thread.
All I want to know is if this has a solution ... It's like reading a good book and finding the last page missing.
This seems to be a hosting issue. I will try to get a Dev to take a look into this one more time. Sorry for the inconvenience.
Quote from: JayBachatero on April 27, 2006, 09:30:18 PM
This seems to be a hosting issue. I will try to get a Dev to take a look into this one more time. Sorry for the inconvenience.
Thanks Jay.
I know you guys are run off your feet with us idiots.
We appreciate any help you give us.
It's a bit scarey actually when I found myself offering up answers on this forum rather than asking questions.
It is all a plot, isn't it ... make us hang around a long time until we can releive your burden!!!!
Well, it won't work.
We see throught your evil ways!!!!
[ahem]
um ... sorry.
I guess I've been in China past my sell by date. ;D
Quote from: chinathetimes on April 27, 2006, 09:42:09 PM
It is all a plot, isn't it ... make us hang around a long time until we can releive your burden!!!!
Yep, you got us there. So... when will you have solved all our bugs? Well?? :P
Instead of Grudge's change, you could try replacing:
function findMembers($names, $use_wildcards = false, $buddies_only = false, $max = null)
by:
function findMembers($names, $use_wildcards = true, $buddies_only = false, $max = null)
Let me know if it works.
Then I will go and start regular attendance at the 'Party' meetings.
Nope ... didn't work.
So I don't have to blow the dust off my Little Red Book quite yet.
Just so you know:
PHP built On: FreeBSD pro26.abac.com 5.4-STABLE FreeBSD 5.4-STABLE #0: Mon Dec 12 12:43:07 PST 2005 [email protected]:/var/obj/usr/src/sys/PRO i386
Database Version: 4.1.16-log
PHP Version: 4.4.2
Web Server: Apache/1.3.34 (Unix) mod_fastcgi/2.4.2 FrontPage/5.0.2.2635 mod_jk/1.2.15
WebServer to PHP interface: cgi-fcgi
Joomla! Version: Joomla! 1.0.8 Stable [ Sunshade ] 26-Feb-2006 05:00 UTC
User Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.2) Gecko/20060308 Firefox/1.5.0.2
Relevant PHP Settings:
Safe Mode: OFF
Open basedir: none
Display Errors: ON
Short Open Tags: ON
File Uploads: ON
Magic Quotes: ON
Register Globals: OFF
Output Buffering: OFF
Session save path: /tmp
Session auto start: 0
XML enabled: Yes
Zlib enabled: Yes
Disabled Functions: none
WYSIWYG Editor: No WYSIWYG Editor
Configuration File: <?php
$mosConfig_MetaAuthor = '1';
$mosConfig_MetaDesc = 'China\'s expat news source. Regularly updated listings of news and tourist sites effecting the resident, traveler and visitor to China. Classified ads. Chat. Forums. Travel Information.';
$mosConfig_MetaKeys = 'China News, Chinese News, China, capital, Beijing, People\'s Republic of China, PRC, P.R.C., Zhong Guo, Zhonghua Renmin Gongheguo, ch, .ch, cn, .cn, Chinese, Asia, Sino, sinology, China Weblog';
$mosConfig_MetaTitle = '1';
$mosConfig_absolute_path = '/home/u1/XXXX/html';
$mosConfig_allowUserRegistration = '1';
$mosConfig_back_button = '1';
$mosConfig_cachepath = '/home/u1/XXXX/html/cache';
$mosConfig_cachetime = '900';
$mosConfig_caching = '0';
$mosConfig_db = 'xxxxxx'
$mosConfig_dbprefix = 'jos_';
$mosConfig_debug = '0';
$mosConfig_dirperms = '';
$mosConfig_editor = 'tinymce';
$mosConfig_enable_log_items = '0';
$mosConfig_enable_log_searches = '0';
$mosConfig_enable_stats = '1';
$mosConfig_error_message = 'This site is temporarily unavailable.
Please notify the System Administrator';
$mosConfig_error_reporting = '-1';
$mosConfig_favicon = 'favicon.ico';
$mosConfig_fileperms = '';
$mosConfig_fromname = 'China the Times';
$mosConfig_gzip = '0';
$mosConfig_helpurl = 'http://help.joomla.org';
$mosConfig_hideAuthor = '0';
$mosConfig_hideCreateDate = '0';
$mosConfig_hideEmail = '0';
$mosConfig_hideModifyDate = '0';
$mosConfig_hidePdf = '0';
$mosConfig_hidePrint = '0';
$mosConfig_hits = '1';
$mosConfig_host = 'xxxxxx'
$mosConfig_icons = '1';
$mosConfig_item_navigation = '1';
$mosConfig_lang = 'english';
$mosConfig_lifetime = '900';
$mosConfig_link_titles = '1';
$mosConfig_list_limit = '30';
$mosConfig_live_site = 'http://www.chinathetimes.com';
$mosConfig_locale = 'en_GB';
$mosConfig_mailer = 'mail';
$mosConfig_mailfrom = 'admin at spamsucks.com';
$mosConfig_ml_support = '0';
$mosConfig_multipage_toc = '1';
$mosConfig_offline = '0';
$mosConfig_offline_message = 'This site is down for maintenance.
Please check back again soon.';
$mosConfig_offset = '15';
$mosConfig_offset_user = '8';
$mosConfig_pagetitles = '1';
$mosConfig_password = 'xxxxxx'
$mosConfig_readmore = '1';
$mosConfig_secret = 'it is a secret';
$mosConfig_sef = '0';
$mosConfig_sendmail = '/usr/sbin/sendmail';
$mosConfig_session_life_admin = '30000';
$mosConfig_session_type = '0';
$mosConfig_shownoauth = '0';
$mosConfig_sitename = 'China the Times';
$mosConfig_smtpauth = '0';
$mosConfig_smtphost = 'localhost';
$mosConfig_smtppass = '';
$mosConfig_smtpuser = '';
$mosConfig_uniquemail = '1';
$mosConfig_user = 'xxxxxx'
$mosConfig_user = 'xxxxxx'
$mosConfig_vote = '1';
setlocale (LC_TIME, $mosConfig_locale);
?>
you wouldn't happen to have a UTF-8 formatted database and/or member table, would ya? :P
Quote from: Compuart on April 27, 2006, 10:28:19 PM
you wouldn't happen to have a UTF-8 formatted database and/or member table, would ya? :P
Oristo's bridge ... Just might do that. I'll look.
Can you try this query and post its results?
SHOW CREATE TABLE smf_members
Quote from: Compuart on April 27, 2006, 10:33:37 PM
Can you try this query and post its results?
SHOW CREATE TABLE smf_members
Host: localhost
Database: XXXX
Generation Time: Apr 27, 2006 at 07:35 PM
Generated by: phpMyAdmin 2.6.2-pl1 / MySQL 4.1.16-log
SQL query: SHOW CREATE TABLE smf_members;
Rows: 1
smf_members | CREATE TABLE `smf_members` (\n `ID_MEMBER` mediumint(8) unsigned NOT NULL auto_increment,\n `memberName` varchar(80) collate utf8_bin NOT NULL default '',\n `dateRegistered` int(10) unsigned NOT NULL default '0',\n `posts` mediumint(8) unsigned NOT NULL default '0',\n `ID_GROUP` smallint(5) unsigned NOT NULL default '0',\n `lngfile` tinytext collate utf8_bin NOT NULL,\n `lastLogin` int(10) unsigned NOT NULL default '0',\n `realName` tinytext collate utf8_bin NOT NULL,\n `instantMessages` smallint(5) NOT NULL default '0',\n `unreadMessages` smallint(5) NOT NULL default '0',\n `buddy_list` tinytext collate utf8_bin NOT NULL,\n `pm_ignore_list` tinytext collate utf8_bin NOT NULL,\n `messageLabels` text collate utf8_bin NOT NULL,\n `passwd` varchar(64) collate utf8_bin NOT NULL default '',\n `emailAddress` tinytext collate utf8_bin NOT NULL,\n `personalText` tinytext collate utf8_bin NOT NULL,\n `gender` tinyint(4) unsigned NOT NULL default '0',\n `birthdate` date NOT NULL default '0001-01-01',\n `websiteTitle` tinytext collate utf8_bin NOT NULL,\n `websiteUrl` tinytext collate utf8_bin NOT NULL,\n `location` tinytext collate utf8_bin NOT NULL,\n `ICQ` tinytext collate utf8_bin NOT NULL,\n `AIM` varchar(16) collate utf8_bin NOT NULL default '',\n `YIM` varchar(32) collate utf8_bin NOT NULL default '',\n `MSN` tinytext collate utf8_bin NOT NULL,\n `hideEmail` tinyint(4) NOT NULL default '0',\n `showOnline` tinyint(4) NOT NULL default '1',\n `timeFormat` varchar(80) collate utf8_bin NOT NULL default '',\n `signature` text collate utf8_bin NOT NULL,\n `timeOffset` float NOT NULL default '0',\n `avatar` tinytext collate utf8_bin NOT NULL,\n `pm_email_notify` tinyint(4) NOT NULL default '0',\n `karmaBad` smallint(5) unsigned NOT NULL default '0',\n `karmaGood` smallint(5) unsigned NOT NULL default '0',\n `usertitle` tinytext collate utf8_bin NOT NULL,\n `notifyAnnouncements` tinyint(4) NOT NULL default '1',\n `notifyOnce` tinyint(4) NOT NULL default '1',\n `notifySendBody` tinyint(4) NOT NULL default '0',\n `notifyTypes` tinyint(4) NOT NULL default '2',\n `memberIP` tinytext collate utf8_bin NOT NULL,\n `secretQuestion` tinytext collate utf8_bin NOT NULL,\n `secretAnswer` varchar(64) collate utf8_bin NOT NULL default '',\n `ID_THEME` tinyint(4) unsigned NOT NULL default '0',\n `is_activated` tinyint(3) unsigned NOT NULL default '1',\n `validation_code` varchar(10) collate utf8_bin NOT NULL default '',\n `ID_MSG_LAST_VISIT` int(10) unsigned NOT NULL default '0',\n `additionalGroups` tinytext collate utf8_bin NOT NULL,\n `smileySet` varchar(48) collate utf8_bin NOT NULL default '',\n `ID_POST_GROUP` smallint(5) unsigned NOT NULL default '0',\n `totalTimeLoggedIn` int(10) unsigned NOT NULL default '0',\n `passwordSalt` varchar(5) collate utf8_bin NOT NULL default '',\n PRIMARY KEY (`ID_MEMBER`),\n KEY `memberName` (`memberName`(30)),\n KEY `dateRegistered` (`dateRegistered`),\n KEY `ID_GROUP` (`ID_GROUP`),\n KEY `birthdate` (`birthdate`),\n KEY `posts` (`posts`),\n KEY `lastLogin` (`lastLogin`),\n KEY `lngfile` (`lngfile`(30)),\n KEY `ID_POST_GROUP` (`ID_POST_GROUP`)\n) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
Just as I expected. The utf8_bin collation will compare any text string in a binary way (and therefor case sensitive).
In order to resolve this, you could either replace:
WHERE (memberName LIKE '" . implode("' OR memberName LIKE '", $names) . "'
OR realName LIKE '" . implode("' OR realName LIKE '", $names) . "'$email_condition)" : "
WHERE (memberName IN ('" . implode("', '", $names) . "')
OR realName IN ('" . implode("', '", $names) . "')$email_condition)") .
by:
WHERE (LOWER(memberName) LIKE '" . implode("' OR LOWER(memberName) LIKE '", $names) . "'
OR LOWER(realName) LIKE '" . implode("' OR LOWER(realName) LIKE '", $names) . "'$email_condition)" : "
WHERE (LOWER(memberName) IN ('" . implode("', '", $names) . "')
OR LOWER(realName) IN ('" . implode("', '", $names) . "')$email_condition)") .
or, change the collation of the members table:
ALTER TABLE smf_members
CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
Compuart,
You're not a 'Hero' member.
You're a GOD!!!!
The one bug that has plagued me for months is GONE!!!
I used the 'alter' command in the database by the way.
I owe you a beer next time you're in town. :-* <--- Well, there is no handshake.
All better, moved from a local hosting company to 1and1 and everything works fine! Thanks TGO, for all the hard work!
Gosh, I have same problem, but I don't have in my subs-auth.php line which you specified (it's bit different).
I attached my subs-auth.php with little modifications - from this topic
and the second attachement is 'clean'.
I hope you can help me, also there I attached smf_members in HTML.
EDIT:
If you cant help me maybe there is some mod to allow only lowcase letters on registration?
EDIT2:
If someone know which function is responsible for lower casing user names - please tell me which!!! :D
I am 99% sure if I remove it, all will be fine.
Now, this topic is more than a year old and a lot of things have changed since then.
SMF version?
What are the charsets and collations for the forum database and the smf_members table? You can find this in phpMyAdmin -- select your forum database and click on the Operations link on the top right side; the current collation should be listed for the Collation field. Same with the smf_members table.