display_username : $user; my $old_remote = LJ::load_user($username); return BML::redirect("$LJ::SITEROOT/") unless $old_remote; my $html = LJ::run_hook("logout_page_html", $old_remote, get_ret => $GET{ret}, post_ret => $POST{ret}, nojs => $nojs); if ($html) { $title = $ML{'.title.loggedout'}; $body .= $html; } else { return BML::redirect("$LJ::SITEROOT/"); } }; if ($u) { if ($POST{'action:killall'}) { $u->logout_all or die "Failed to log out all sessions."; $body = $ML{'.loggedout.killedall'}; $logged_out_html->(); return; } my $cursess = $u->session if $u; if ($cursess && $user eq $u->{'user'} && $sessid == $cursess->id) { $u->logout; # Redirect within the site if ret=1 my $referer = BML::get_client_header('Referer'); if ($GET{'ret'} == 1 && $referer && $referer =~ /\Q$LJ::DOMAIN\E/) { my $uniq = Apache->request->notes('uniq'); if ($uniq) { LJ::MemCache::set("loginout:$uniq", 1, time() + 15); } return BML::redirect("$referer"); } # Redirect to offsite uri if allowed. if ($POST{'ret'}) { my $redir_host = $1 if $POST{'ret'} =~ m#^http://([\.:\w-]+)#i; return BML::redirect($POST{'ret'}) if $LJ::REDIRECT_ALLOWED{$redir_host}; } $logged_out_html->(); } else { if ($POST{ret_fail} && $POST{ret_fail} =~ m!^http://([\.:\w-]+)!i && $LJ::REDIRECT_ALLOWED{$1}) { return BML::redirect($POST{ret_fail} . LJ::eurl('incorrect_sessid')); } $body .= "
"; # do they have any other sessions? my $udbr = LJ::get_cluster_reader($u); unless ($udbr) { $body = ""; return undef; } my $curid = $u->{'_session'}->{'sessid'} || 0; my $sessions = $udbr->selectcol_arrayref("SELECT sessid FROM sessions WHERE ". "userid=$u->{'userid'} AND timeexpire > UNIX_TIMESTAMP() ". "AND sessid <> $curid"); if (@$sessions) { $body .= ""; } } } else { if ($POST{ret_fail} && $POST{ret_fail} =~ m!^http://([\.:\w-]+)!i && $LJ::REDIRECT_ALLOWED{$1}) { return BML::redirect($POST{ret_fail} . LJ::eurl('no_user')); } $logged_out_html->(); } return; } _code?> head<= <=head body=> page?>