diff --git a/core/urls.php b/core/urls.php index 72dc1b79..61a58549 100644 --- a/core/urls.php +++ b/core/urls.php @@ -116,3 +116,8 @@ function make_http(string $link): string return $link; } + +function referer_or(string $dest): string +{ + return $_SERVER['HTTP_REFERER'] ?? $dest; +} diff --git a/ext/bulk_actions/main.php b/ext/bulk_actions/main.php index 3e217c7e..6df198b3 100644 --- a/ext/bulk_actions/main.php +++ b/ext/bulk_actions/main.php @@ -182,10 +182,7 @@ class BulkActions extends Extension } $page->set_mode(PageMode::REDIRECT); - if (!isset($_SERVER['HTTP_REFERER'])) { - $_SERVER['HTTP_REFERER'] = make_link(); - } - $page->set_redirect($_SERVER['HTTP_REFERER']); + $page->set_redirect(referer_or(make_link())); } } diff --git a/ext/comment/main.php b/ext/comment/main.php index 76f8c01e..29effc54 100644 --- a/ext/comment/main.php +++ b/ext/comment/main.php @@ -226,11 +226,7 @@ class CommentList extends Extension send_event(new CommentDeletionEvent(int_escape($event->get_arg(1)))); $page->flash("Deleted comment"); $page->set_mode(PageMode::REDIRECT); - if (!empty($_SERVER['HTTP_REFERER'])) { - $page->set_redirect($_SERVER['HTTP_REFERER']); - } else { - $page->set_redirect(make_link("post/view/" . $event->get_arg(2))); - } + $page->set_redirect(referer_or(make_link("post/view/" . $event->get_arg(2)))); } } else { $this->theme->display_permission_denied(); diff --git a/ext/image_hash_ban/main.php b/ext/image_hash_ban/main.php index 93304c35..8140b2ef 100644 --- a/ext/image_hash_ban/main.php +++ b/ext/image_hash_ban/main.php @@ -105,7 +105,7 @@ class ImageBan extends Extension } $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER['HTTP_REFERER']); + $page->set_redirect(referer_or(make_link())); } } elseif ($event->get_arg(0) == "remove") { $user->ensure_authed(); @@ -113,7 +113,7 @@ class ImageBan extends Extension send_event(new RemoveImageHashBanEvent($input['d_hash'])); $page->flash("Image ban removed"); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER['HTTP_REFERER']); + $page->set_redirect(referer_or(make_link())); } elseif ($event->get_arg(0) == "list") { $t = new HashBanTable($database->raw_db()); $t->token = $user->get_auth_token(); diff --git a/ext/not_a_tag/main.php b/ext/not_a_tag/main.php index 52b9fee6..795059a5 100644 --- a/ext/not_a_tag/main.php +++ b/ext/not_a_tag/main.php @@ -113,7 +113,7 @@ class NotATag extends Extension ["tag"=>$input['c_tag'], "redirect"=>$input['c_redirect']] ); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER['HTTP_REFERER']); + $page->set_redirect(referer_or(make_link())); } elseif ($event->get_arg(0) == "remove") { $user->ensure_authed(); $input = validate_input(["d_tag"=>"string"]); @@ -123,7 +123,7 @@ class NotATag extends Extension ); $page->flash("Image ban removed"); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER['HTTP_REFERER']); + $page->set_redirect(referer_or(make_link())); } elseif ($event->get_arg(0) == "list") { $t = new NotATagTable($database->raw_db()); $t->token = $user->get_auth_token(); diff --git a/ext/pm/main.php b/ext/pm/main.php index 28b9bf6c..564d4a5a 100644 --- a/ext/pm/main.php +++ b/ext/pm/main.php @@ -167,7 +167,7 @@ class PrivMsg extends Extension $cache->delete("pm-count-{$user->id}"); log_info("pm", "Deleted PM #$pm_id", "PM deleted"); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER["HTTP_REFERER"]); + $page->set_redirect(referer_or(make_link())); } } } @@ -182,7 +182,7 @@ class PrivMsg extends Extension send_event(new SendPMEvent(new PM($from_id, $_SERVER["REMOTE_ADDR"], $to_id, $subject, $message))); $page->flash("PM sent"); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect($_SERVER["HTTP_REFERER"]); + $page->set_redirect(referer_or(make_link())); } } break; diff --git a/ext/rule34/main.php b/ext/rule34/main.php index 32d7fd20..a0c577b6 100644 --- a/ext/rule34/main.php +++ b/ext/rule34/main.php @@ -118,14 +118,14 @@ class Rule34 extends Extension ['is_admin'=>$input['is_admin'] ? 't' : 'f', 'id'=>$input['user_id']] ); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect(@$_SERVER['HTTP_REFERER']); + $page->set_redirect(referer_or(make_link())); } } if ($event->page_matches("tnc_agreed")) { setcookie("ui-tnc-agreed", "true", 0, "/"); $page->set_mode(PageMode::REDIRECT); - $page->set_redirect(@$_SERVER['HTTP_REFERER'] ?? "/"); + $page->set_redirect(referer_or("/")); } if ($event->page_matches("admin/cache_purge")) {