diff options
author | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-02-11 02:16:28 +0000 |
---|---|---|
committer | Paul S. Owen <psotfx@users.sourceforge.net> | 2002-02-11 02:16:28 +0000 |
commit | 67d98023355e9e14f88c595bca005243fb2235b4 (patch) | |
tree | ba5893f1d658f80df432c0e8fc58ae9ee2a565f0 | |
parent | bd6bd36d489a4cf1d2da9e283a32ad20441b8843 (diff) | |
download | forums-67d98023355e9e14f88c595bca005243fb2235b4.tar forums-67d98023355e9e14f88c595bca005243fb2235b4.tar.gz forums-67d98023355e9e14f88c595bca005243fb2235b4.tar.bz2 forums-67d98023355e9e14f88c595bca005243fb2235b4.tar.xz forums-67d98023355e9e14f88c595bca005243fb2235b4.zip |
Add a login redirect for users not logged in who attempt to visit restricted forums ... also shows a forum/post doesn't exist for hidden forums/topics/posts if user is logged in but not authed to view them
git-svn-id: file:///svn/phpbb/trunk@2079 89ea8834-ac86-4346-8a33-228a782c2dd0
-rw-r--r-- | phpBB/viewforum.php | 10 | ||||
-rw-r--r-- | phpBB/viewtopic.php | 39 |
2 files changed, 28 insertions, 21 deletions
diff --git a/phpBB/viewforum.php b/phpBB/viewforum.php index aecc3e8c6b..9b8648140b 100644 --- a/phpBB/viewforum.php +++ b/phpBB/viewforum.php @@ -77,11 +77,10 @@ else // If the query doesn't return any rows this isn't a valid forum. Inform // the user. // -if( !$total_rows = $db->sql_numrows($result) ) +if( !($forum_row = $db->sql_fetchrow($result)) ) { message_die(GENERAL_MESSAGE, 'Forum_not_exist'); } -$forum_row = $db->sql_fetchrow($result); // // Start session management @@ -100,10 +99,15 @@ $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row); if( !$is_auth['auth_read'] || !$is_auth['auth_view'] ) { + if ( !$userdata['session_logged_in'] ) + { + $redirect = POST_FORUM_URL . "=$forum_id" . ( ( isset($start) ) ? "&start=$start" : "" ); + header("Location: " . append_sid("posting.$phpEx?redirect=viewforum.$phpEx&$redirect", true)); + } // // The user is not authed to read this forum ... // - $message = sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); + $message = ( !$is_auth['auth_view'] ) ? $lang['Forum_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); message_die(GENERAL_MESSAGE, $message); } diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 4cb16b03bd..ee4ab85bdf 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -160,16 +160,15 @@ $sql = "SELECT t.topic_id, t.topic_title, t.topic_status, t.topic_replies, t.top WHERE $join_sql AND f.forum_id = t.forum_id $order_sql"; -if( !$result = $db->sql_query($sql) ) +if( !($result = $db->sql_query($sql)) ) { message_die(GENERAL_ERROR, "Couldn't obtain topic information", "", __LINE__, __FILE__, $sql); } -if( !$total_rows = $db->sql_numrows($result) ) +if( !($forum_row = $db->sql_fetchrow($result)) ) { - message_die(GENERAL_MESSAGE, 'Topic_post_not_exist', "", __LINE__, __FILE__, $sql); + message_die(GENERAL_MESSAGE, 'Topic_post_not_exist'); } -$forum_row = $db->sql_fetchrow($result); $forum_id = $forum_row['forum_id']; @@ -182,16 +181,6 @@ init_userprefs($userdata); // End session management // -$forum_name = $forum_row['forum_name']; -$topic_title = $forum_row['topic_title']; -$topic_id = $forum_row['topic_id']; -$topic_time = $forum_row['topic_time']; - -if(!empty($post_id)) -{ - $start = floor(($forum_row['prev_posts'] - 1) / $board_config['posts_per_page']) * $board_config['posts_per_page']; -} - // // Start auth check // @@ -200,10 +189,14 @@ $is_auth = auth(AUTH_ALL, $forum_id, $userdata, $forum_row); if( !$is_auth['auth_view'] || !$is_auth['auth_read'] ) { - // - // The user is not authed to read this forum ... - // - $message = sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); + if ( !$userdata['session_logged_in'] ) + { + $redirect = ( isset($post_id) ) ? POST_POST_URL . "=$post_id" : POST_TOPIC_URL . "=$topic_id"; + $redirect .= ( isset($start) ) ? "&start=$start" : ""; + header("Location: " . append_sid("posting.$phpEx?redirect=viewtopic.$phpEx&$redirect", true)); + } + + $message = ( !$is_auth['auth_view'] ) ? $lang['Topic_post_not_exist'] : sprintf($lang['Sorry_auth_read'], $is_auth['auth_read_type']); message_die(GENERAL_MESSAGE, $message); } @@ -211,6 +204,16 @@ if( !$is_auth['auth_view'] || !$is_auth['auth_read'] ) // End auth check // +$forum_name = $forum_row['forum_name']; +$topic_title = $forum_row['topic_title']; +$topic_id = $forum_row['topic_id']; +$topic_time = $forum_row['topic_time']; + +if ( !empty($post_id) ) +{ + $start = floor(($forum_row['prev_posts'] - 1) / $board_config['posts_per_page']) * $board_config['posts_per_page']; +} + // // Is user watching this thread? This could potentially // be combined into the above query but the LEFT JOIN causes |