From 012d22cbb0d6fe47978c7e7386e57bb09a2ecfb4 Mon Sep 17 00:00:00 2001 From: Danii Saahir <158811885+danii-saahir@users.noreply.github.com> Date: Fri, 10 May 2024 14:30:41 +0800 Subject: [PATCH] Update search.php Fixes urlencode() receiving null as a parameter. Add check to ensure that $data is not null. --- search.php | 103 +++++++++++++++++++++++++++++++---------------------- 1 file changed, 61 insertions(+), 42 deletions(-) diff --git a/search.php b/search.php index 1673129..f0d51e8 100644 --- a/search.php +++ b/search.php @@ -1,8 +1,8 @@ <?php - $query = htmlspecialchars(trim($_REQUEST["q"])); - echo $query; +$query = htmlspecialchars(trim($_REQUEST["q"])); +echo $query; ?> - Binternet @@ -10,23 +10,21 @@

Binternet

strlen($query) || strlen($query) > 64) - { - header("Location: ./"); - die(); - } + if (1 > strlen($query) || strlen($query) > 64) { + header("Location: ./"); + die(); + } - echo "value=\"$query\""; + echo "value=\"$query\""; ?> > array( - "query"=>$query - ) - ); - if ($bookmark != null) - $data_param_obj["options"]["bookmarks"] = array($bookmark); +$prepare_search_curl_obj = function ($query, $bookmark) use ( + $url, + $header_function, + $csrftoken +) { + $data_param_obj = [ + "options" => [ + "query" => $query, + ], + ]; + if ($bookmark != null) { + $data_param_obj["options"]["bookmarks"] = [$bookmark]; + } $data_param = urlencode(json_encode($data_param_obj)); - $headers = array(); - if ($csrftoken != null) - { + $headers = []; + if ($csrftoken != null) { $headers[] = "x-csrftoken: $csrftoken"; $headers[] = "cookie: csrftoken=$csrftoken"; } $finalurl = $url; - if ($bookmark == null) + if ($bookmark == null) { $finalurl = "$url?data=$data_param"; + } $ch = curl_init($finalurl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADERFUNCTION, $header_function); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - if ($bookmark != null) - { + if ($bookmark != null) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, "data=$data_param"); } return $ch; }; -$search = function($query, $bookmark) use($prepare_search_curl_obj) -{ +$search = function ($query, $bookmark) use ($prepare_search_curl_obj) { $ch = $prepare_search_curl_obj($query, $bookmark); $response = curl_exec($ch); $data = json_decode($response); - $images = array(); + $images = []; echo "
"; - foreach ($data->{"resource_response"}->{"data"}->{"results"} as $result) - { + if ( + $data && + property_exists($data, "resource_response") && + property_exists($data->{"resource_response"}, "data") && + property_exists($data->{"resource_response"}->{"data"}, "results") + ) { + foreach ( + $data->{"resource_response"}->{"data"}->{"results"} + as $result + ) { $image = $result->{"images"}->{"orig"}; $url = $image->{"url"}; array_push($images, $url); echo ""; - echo ""; + echo ""; } + } else { + echo "

No results found.

"; + } echo "
"; $result = new SearchResult(); $result->images = $images; - if (property_exists($data->{"resource_response"}, "bookmark")) + if ( + $data && + property_exists($data, "resource_response") && + property_exists($data->{"resource_response"}, "bookmark") + ) { $result->bookmark = $data->{"resource_response"}->{"bookmark"}; + } return $result; }; $result = $search($query, $bookmark); -if ($result->bookmark != null) -{ +if ($result->bookmark != null) { $query_encoded = urlencode($query); $bookmark_encoded = urlencode($result->bookmark); - $csrftoken_encoded = urlencode($csrftoken); + $csrftoken_encoded = $csrftoken ? urlencode($csrftoken) : ""; + echo "

Next page




"; } include "misc/footer.php"; + ?>