Archief - Login script werkt niet voor 1 enkele gebruiker

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Dubbelpunt

Legacy Member
Wij gebruiken volgend script zodat mensen op onze site kunnen inloggen, dit werkt voor iedere gebruiker, behalve voor 1 persoon: deze persoon logt in, maar als hij dan eender welke andere pagina bezoekt dan is hij terug uitgelogd :eek:

dan logt hij opnieuw in zonder problemen, hij is dan ingelogd... dan klikt hij op een link (eender welke link op onze site) en hoppaaaa, hij is terug uitgelogd :eek:


Aan wat kan dit in godsnaam lukken? Ik heb het met mijn eigen ogen gezien. Ik heb zelfs firefox geïnstalleerd en ook daar zelfde probleem op zijn pc!


PHP:
function login( $username=null,$passwd=null, $remember=0, $userid=NULL ) {
		global $acl, $_VERSION;

		$bypost = 0;

		// if no username and password passed from function, then function is being called from login module/component
		if (!$username || !$passwd) {
			$username 	= stripslashes( strval( mosGetParam( $_POST, 'username', '' ) ) );
			$passwd 	= stripslashes( strval( mosGetParam( $_POST, 'passwd', '' ) ) );
			$passwd 	= md5( $passwd );

			$bypost 	= 1;

			// extra check to ensure that Joomla! sessioncookie exists
			if (!$this->_session->session_id) {
				mosErrorAlert( _ALERT_ENABLED );
				return;
			}

			josSpoofCheck(NULL,1);
		}

		$row = null;
		if (!$username || !$passwd) {
			mosErrorAlert( _LOGIN_INCOMPLETE );
			exit();
		} else {
			if ( $remember && strlen($username) == 32 && strlen($passwd) == 32 && $userid ) {
			// query used for remember me cookie
				$harden = mosHash( @$_SERVER['HTTP_USER_AGENT'] );

				$query = "SELECT id, name, username, password, usertype, block, gid"
				. "\n FROM #__users"
				. "\n WHERE id = " . (int) $userid
				;
				$this->_db->setQuery( $query );
				$this->_db->loadObject($user);

				$check_username = md5( $user->username . $harden );
				$check_password = md5( $user->password . $harden );

				if ( $check_username == $username && $check_password == $passwd ) {
					$row = $user;
				}
			} else {
			
                $query = "SELECT id, name, username, password, usertype, block, gid"
                . "\n FROM #__users"
                . "\n WHERE (username = ". $this->_db->Quote( $username )
                . "\n OR email = ". $this->_db->Quote( $username )
                . "\n OR userNumber = ". $this->_db->Quote( $username )
                . "\n ) AND password = ". $this->_db->Quote( $passwd )
                ;


				$this->_db->setQuery( $query );
				$this->_db->loadObject( $row );
			}

			if (is_object($row)) {
				// user blocked from login
				if ($row->block == 1) {
					mosErrorAlert(_LOGIN_BLOCKED);
				}

				// fudge the group stuff
				$grp = $acl->getAroGroup( $row->id );
				$row->gid = 1;
				if ($acl->is_group_child_of( $grp->name, 'Registered', 'ARO' ) || $acl->is_group_child_of( $grp->name, 'Public Backend', 'ARO' )) {
					// fudge Authors, Editors, Publishers and Super Administrators into the Special Group
					$row->gid = 2;
				}
				$row->usertype = $grp->name;

				// initialize session data
				$session 			=& $this->_session;
				$session->guest 	= 0;
				$session->username 	= $row->username;
				$session->userid 	= intval( $row->id );
				$session->usertype 	= $row->usertype;
				$session->gid 		= intval( $row->gid );
				$session->update();

				// check to see if site is a production site
				// allows multiple logins with same user for a demo site
				if ( $_VERSION->SITE ) {
					// delete any old front sessions to stop duplicate sessions
					$query = "DELETE FROM #__session"
					. "\n WHERE session_id != ". $this->_db->Quote( $session->session_id )
					. "\n AND username = ". $this->_db->Quote( $row->username )
					. "\n AND userid = " . (int) $row->id
					. "\n AND gid = " . (int) $row->gid
					. "\n AND guest = 0"
					;
					$this->_db->setQuery( $query );
					$this->_db->query();
				}

				// update user visit data
				$currentDate = date("Y-m-d\TH:i:s");

				$query = "UPDATE #__users"
				. "\n SET lastvisitDate = ". $this->_db->Quote( $currentDate )
				. "\n WHERE id = " . (int) $session->userid
				;
				$this->_db->setQuery($query);
				if (!$this->_db->query()) {
					die($this->_db->stderr(true));
				}

				// set remember me cookie if selected
				$remember = strval( mosGetParam( $_POST, 'remember', '' ) );
				if ( $remember == 'yes' ) {
					// cookie lifetime of 365 days
					$lifetime 		= time() + 365*24*60*60;
					$remCookieName 	= mosMainFrame::remCookieName_User();
					$remCookieValue = mosMainFrame::remCookieValue_User( $row->username ) . mosMainFrame::remCookieValue_Pass( $row->password ) . $row->id;
					setcookie( $remCookieName, $remCookieValue, $lifetime, '/' );
				}
				mosCache::cleanCache();
			} else {
				if ( $bypost ) {
				
					mosErrorAlert(_LOGIN_INCORRECT);
				} else {
					$this->logout();
					mosRedirect('index.php');
				}
				exit();
			}
		}
	}

Grish

Legacy Member
Aangezien dat je gebruik maakt van cookies zal ik het toch maar vragen: Ben je zeker dat hij zijn cookies enabled heeft staan?

Dubbelpunt

Legacy Member
ik heb het zojuist getest: tools - options - privacy - advanced

X Override automatic cookie handling

First-Party Cookies: Block
Third-party Cookies: Block

disable 'Always allow session cookies'



nadien ga ik naar onze website, log in en browse door verschillende pagina's en ik blijf ingelogd
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan