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 @@
- Binternet
@@ -10,23 +10,21 @@
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 "
";
}
include "misc/footer.php";
+
?>