php / php/php-src

if query parameter value processing is different when value is empty or null

Offen
#12,106 7 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Extension: standard Feature Status: Needs Triage
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

The following code:

CASE 1:

<?php
$url = "http://localhost:8964/?soap";
CASE1:
parse_url($url);
echo var_dump(parse_url($url));
$query = parse_str(parse_url($url)["query"], $result);
echo var_dump($result);
$http_query  = http_build_query($result);
echo $http_query;

//CASE2 assign query param value to null 

$result["soap"]=null;
echo $http_query;

//CASE 3 - replicate same as case 2 but in other form  and results are different.
$arr = array('test' => null);

echo http_build_query($arr);

?>
array(5) {
  ["scheme"]=>
  string(4) "http"
  ["host"]=>
  string(9) "localhost"
  ["port"]=>
  int(8964)
  ["path"]=>
  string(1) "/"
  ["query"]=>
  string(4) "soap"
}
array(1) {
  ["soap"]=>
  string(0) ""
}
soap=soap=

But I expected this output instead:
CASE1: soap=
CASE2: soap
CASE3 soap

PS: if query param value is empty string or null , but query param should be in url.

PHP Version

PHP 8.1.2

Operating System

No response

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere die drei Fälle mit parse_url(), parse_str() und http_build_query() unter Verwendung der Beispiel-URL und der Arrays. Lies die vorhandenen Tests für diese Funktionen und vergleiche den Umgang mit fehlenden, leeren Zeichenketten und null-Werten. Als erledigt gilt die Aufgabe, wenn die vorgesehene Query-Darstellung durch Tests dokumentiert ist und die beobachteten Ausgaben mit diesem Verhalten übereinstimmen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.