Seite 1 von 2

Werde oft als Anonymous eingeloggt

Verfasst: 22.12.2005 17:00
von Seether
Hi möchte die Login-Routine von phpbb auf dem Rest meiner Seite einsetzen. Das klappt auch recht gut, allerdings werde ich "manchmal" als Anonymous eingeloggt obwohl ich natürlich meinen Usernamen und Passwort eingebe.

Folgendes habe ich festgestellt:
-Bei Eingabe eines nicht vorhandenen Usernamen wird der Login natürlich nicht ausgeführt
-Bei Eingabe eines falschen Passworts scheitert der Login auch, aber an einer anderen Stelle im Script.
-Bei richtiger Eingabe von Usernamen und Passwort werden 2 Sessions angelegt. Einmal für den User und einmal eben für Anonymous....


Hier der Code.

Code: Alles auswählen

define("IN_LOGIN", true);
define('IN_PHPBB', true);
$phpbb_root_path = 'phpbb/';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Set page ID for session management
//
$userdata = session_pagestart($user_ip, PAGE_LOGIN);
init_userprefs($userdata);
//
// End session management
//

// session id check
if (!empty($HTTP_POST_VARS['sid']) || !empty($HTTP_GET_VARS['sid']))
{
	$sid = (!empty($HTTP_POST_VARS['sid'])) ? $HTTP_POST_VARS['sid'] : $HTTP_GET_VARS['sid'];
}
else
{
	$sid = '';
}

if( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) || isset($HTTP_POST_VARS['logout']) || isset($HTTP_GET_VARS['logout']) )
{
	 if( ( isset($HTTP_POST_VARS['login']) || isset($HTTP_GET_VARS['login']) ) && (!$userdata['session_logged_in'] || isset($HTTP_POST_VARS['admin'])) )
	{
		 $username = isset($HTTP_POST_VARS['username']) ? phpbb_clean_username($HTTP_POST_VARS['username']) : '';
		$password = isset($HTTP_POST_VARS['password']) ? $HTTP_POST_VARS['password'] : '';

		$sql = "SELECT user_id, username, user_password, user_active, user_level 	FROM " . USERS_TABLE . "	WHERE username = '" . str_replace("\\'", "''", $username) . "'";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(GENERAL_ERROR, 'Error in obtaining userdata', '', __LINE__, __FILE__, $sql);
		}

		if( $row = $db->sql_fetchrow($result) )
		{
			if( $row['user_level'] != ADMIN && $board_config['board_disable'] )
			{
				
				redirect(append_sid("index6.$phpEx", true));
			}
			else
			{
				if( md5($password) == $row['user_password'] && $row['user_active'] )
				{
					$autologin = ( isset($HTTP_POST_VARS['autologin']) ) ? TRUE : 0;

					$admin = (isset($HTTP_POST_VARS['admin'])) ? 1 : 0;
               $session_id = session_begin($row['user_id'], $user_ip, PAGE_INDEX, FALSE, $autologin, $admin);

					if( $session_id )
					{
						$url="index.php";
      			$sid=$userdata['session_id'];
      			redirect_login($url."?sid=$sid");
					}
					else
					{
						message_die(CRITICAL_ERROR, "Couldn't start session : login", "", __LINE__, __FILE__);
					}
				}
				else
				{
					$url="index.php?kategorie=Community&f2=";
					redirect_login($url);
				}
			}
		}
		else
		{
			$url="index.php?kategorie=Community&f1=";
			redirect_login($url);
		}
	}
	else if( ( isset($HTTP_GET_VARS['logout']) || isset($HTTP_POST_VARS['logout']) ) && $userdata['session_logged_in'] )
	{
		if( $userdata['session_logged_in'] )
		{
			session_end($userdata['session_id'], $userdata['user_id']);
		}
		$url="index.php";
		redirect_login($url);
  }
  else
  {
      $url="index.php";
      $sid=$userdata['session_id'];
      redirect_login($url."?sid=$sid");
  }
}
else
{
	$url="index.php?kategorie=Communnity";
	redirect_login($url);
}

S.

Verfasst: 22.12.2005 17:36
von Martin Truckenbrodt
Hallo
appendsid()

Gruß Martin

Verfasst: 22.12.2005 18:17
von Seether
Und das soll was bringen? Hängt doch nur die SID hinten dran....


S.

Verfasst: 22.12.2005 18:26
von fanrpg
Seether hat geschrieben:Und das soll was bringen? Hängt doch nur die SID hinten dran....


S.
Genau deswegen ja, kann manchmal schon hilfreich sein.

Verfasst: 22.12.2005 18:38
von Seether
Ähm...wie ihr oben sehen könnt, hänge ich die SID hinten dran...

S.

Verfasst: 22.12.2005 18:54
von Martin Truckenbrodt
Hallo,
und das funzt so?
Probier halt mal appendsid() aus.

Gruß Martin

Verfasst: 22.12.2005 18:57
von Seether
Wo soll da der Unterschied sein ob ein Programm für mich die SID dran hängt oder ich?


S.

Verfasst: 22.12.2005 19:08
von fanrpg
Seether hat geschrieben:Wo soll da der Unterschied sein ob ein Programm für mich die SID dran hängt oder ich?


S.
Na ja einmal wird die sid per cookie übergeben das andere mal halt per GET.
Aber eigentlich ist das auch ok die sid per GET zu übergeben.

Verfasst: 22.12.2005 19:25
von Seether
Ok, ich glaube wir reden aneinander vorbei.

append_sid() macht nichts weiter als an einen link hinten ?sid=$SID dranzuhängen. Das hat mit den Cookies ja nichts zu tun.

Append_sid() habe ich entfernt und hänge dafür selber die SID dran. Soweit alles i.O.

Aber irgendwo ist der Wurm drin. Ich <i>vermute</i> es hat was mit der IP zu tun. Anhand der IP sucht sich das Script die Session raus und gelangt, warum auch immer, zur Sessions von Anonymous...


S.

Verfasst: 22.12.2005 19:28
von fanrpg
Seether hat geschrieben:Ok, ich glaube wir reden aneinander vorbei.

append_sid() macht nichts weiter als an einen link hinten ?sid=$SID dranzuhängen. Das hat mit den Cookies ja nichts zu tun.

Append_sid() habe ich entfernt und hänge dafür selber die SID dran. Soweit alles i.O.

Aber irgendwo ist der Wurm drin. Ich <i>vermute</i> es hat was mit der IP zu tun. Anhand der IP sucht sich das Script die Session raus und gelangt, warum auch immer, zur Sessions von Anonymous...


S.
Nein append_sid() hängt nicht immer eine SID ran sondern nur wenn das nicht über die Cookiemethode möglich ist.