Welcome to Geeklog Saturday, April 29 2017 @ 01:34 am EDT
I can't log in.
A typical login problem is where your username shows up in the Who's Online block but you still get the login form instead of the user settings (and admin options, if you're an admin).
First, some background information: When you login, i.e. when you enter a valid username and password, Geeklog creates a session for you. What the Who's Online block displays are actually only the valid sessions at the moment, which, as you found out when you have that problem, does not always mean the same as logged-in users. Once a session has been created, Geeklog will send out a cookie containing that session's id. After that, Geeklog will attempt to read back that cookie and compare the session id with the session id it has stored in the database. Only when those two are identical will you be recognised as being logged in.
So, in most cases, the problem is with the cookies. Here are some of the most common causes:
- Your browser does not accept cookies. That's usually a simple settings in your browser's preferences. In Intenet Explorer, you may also need to lower security for the site slightly.
- Something, e.g. a Proxy or a (personal) firewall, may be filtering the cookies.
- You are using frame forwarding or some other means of "hiding" the real URL of your site. Browsers, however, will only accept cookies from the real domain. You should set the
$_CONF['cookiedomain']variable to point to the real domain, not to the domain that's displayed in the browser's URL field in such a case.
$_CONF['cookiedomain']may also help when you have more than one Geeklog site under one domain (e.g. on different subdomains or subfolders).
- Whitespace at the end of your config.php or lib-common.php can also prevent you from logging in. The problem is that this whitespace is actually sent to the browser and it is sent before the cookies. That, however, is not allowed by HTTP and the browser will not accept the cookies. So make sure you don't have whitespace in those files.
You should actually see warning messages flashing up briefly when you have a "whitespace problem". However, they can be hard to spot on a fast connection and PHP may also be configured not to display warning messages in the first place.
- The site has been running an earlier version of Geeklog (pre-1.3.8) before. The problem here is that cookies have changed slightly in Geeklog 1.3.8. Try deleting your cookies (for that site).
- (only for versions older than 1.4.0) If your site is running on PHP 5, make sure that you have
register_long_arrays = Onin your php.ini. Also see Geeklog on PHP 5.