Sida 1 av 1

Ändra dir vid login

Postat: 2007-02-11 12:45
av skinkan
Då drar vi en till fråga då :)

När man loggar in på forumet kommer man ju automatiskt till index, men om man vill att man ska hamna någon annan stans, hur gör man då? Eller går det över huvud taget?

//Skinkan

Postat: 2007-02-12 07:26
av Marcus
Ja, du kan ju ändra i filen login.php. Där finns något som styr vart man hamnar om det går bra att logga in.

/marcus

Postat: 2007-03-03 12:35
av Rehn
Jag svarar åt skinkan:

Visst finns det grejer man kan ändra där, exempelvis...

Kod: Markera allt

if( $session_id )
					{
						$url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
						redirect(append_sid($url, true));
					}
eller...

Kod: Markera allt

				$redirect = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : '';
				$redirect = str_replace('?', '&', $redirect);

				if (strstr(urldecode($redirect), "\n") || strstr(urldecode($redirect), "\r"))
				{
					message_die(GENERAL_ERROR, 'Tried to redirect to potentially insecure url.');
				}

				$template->assign_vars(array(
					'META' => "<meta http-equiv=\"refresh\" content=\"3;url=login.$phpEx?redirect=$redirect\">")
				);

				$message = $lang['Error_login'] . '<br /><br />' . sprintf($lang['Click_return_login'], "<a href=\"login.$phpEx?redirect=$redirect\">", '</a>') . '<br /><br />' .  sprintf($lang['Click_return_index'], '<a href="' . append_sid("index.$phpEx") . '">', '</a>');
Det finns mycket redirect i de raderna, men ingen av oss fattar ju någonting av detta. Några mer konkreta tips?

Postat: 2007-03-03 13:20
av Kail
Den andra delen av koden rör redirects som sker när man tex försöker svara på en tråd och uppmanas logga in, och sedan tas tillbaka till tråden efter att man gjort det.

Ändra detta:

Kod: Markera allt

if( $session_id )
               {
                  $url = ( !empty($HTTP_POST_VARS['redirect']) ) ? str_replace('&', '&', htmlspecialchars($HTTP_POST_VARS['redirect'])) : "index.$phpEx";
                  redirect(append_sid($url, true));
               }
Ersätt index.$phpEx med t ex faq.$phpEx, $phpEx ersätts med den filändelse som används. PHP-filer kan nämligen heta både php, phtml eller html beroende på hur webbservern är konfigurerad.

Postat: 2007-03-03 14:10
av Rehn
Det fungerade utmärkt, tack så mycket. :)

En fråga till:
När jag nu kommit till min andra sida, som inte riktigt tillhör forumet, och vill få fram user_id för den som loggat in, hur gör jag då? Finns det gömt någonstans i en cookie? Om så är fallet, hur får jag fram värdet därifrån?

Postat: 2007-03-03 18:42
av Kail
Det finns lagrat i en sessionsvariabel. Vet inte exakt vilken men prova söka på phpbb.com.

Postat: 2007-03-03 18:44
av Kail
Hittade den:
http://www.phpbb.com/phpBB/viewtopic.ph ... 82#2872782

På samma sätt borde antingen detta:

Kod: Markera allt

   'USERID' => $userdata['userid'], 
eller detta:

Kod: Markera allt

   'USERID' => $userdata['uid'], 
plocka fram UID för dig. Infoga med:
{USERID}

Postat: 2007-03-05 20:13
av Rehn
Nu ligger dessvärre vår sida nere tillfälligt så jag kan inte testa, men om jag har fattat det hela rätt fungerar det alltså såhär:
När man loggat in på forumet och redirectats till inte_forumet.php räcker det där med att jag skriver..

Kod: Markera allt

$authid->assign_vars(array('USERID' => $userdata['userid']));
..för att $authid ska innehålla userid för den som just loggade in.

Har jag fattat det hela rätt?

Postat: 2007-03-06 03:58
av Kail
Nej, du måste lägga till det i template-arrayen, det är den som används för att bygga sidan. Den ska finnas i slutet av din PHP-fil.

Postat: 2007-03-07 20:02
av Rehn
Det kanske bara är jag som är dum nu, men fungerar template-grejer till mer än att bara skriva ut saker? Jag vill att userid för den som just har loggat in ska sparas i variabeln $authid, och jag fattar inte alls hur det ska gå till.
Kanske har du just förklarat hur det ska gå till, men i så fall har jag inte fattat det.