У меня простой спокойный api с php
<?php
require "../ConfigBaza.php";
$proizvodid = $_GET['proizvodid'];
$naziv = $_GET['naziv'];
$pdv = $_GET['pdv'];
$aa = $_GET['akcijski_artikal'];
$a = $_GET['aktivan'];
$slika = $_GET['slika'];
$jm = $_GET['jm'];
$opis = $_GET['opis'];
$katbr = $_GET['katbr'];
$sql = "INSERT INTO Proizvod (PROIZVODID, NAZIV, PDV, AKCIJSKI_ARTIKAL, AKTIVAN, SLIKA, JM, OPIS, KATBR) VALUES ('$proizvodid', '$naziv', '$pdv', '$aa', '$a', '$slika', '$jm', '$opis', '$katbr')";
if ($mysqli->query($sql))
{
echo("1");
}
else
{
echo("0" . "<br>");
echo("PROIZVODID = " . $proizvodid . "<br>");
echo("NAZIV = " . $naziv . "<br>");
echo("PDV = " . $pdv . "<br>");
echo("Akcijski Artikal = " . $aa . "<br>");
echo("Aktivan = " . $a . "<br>");
echo("SLIKA = " . $slika . "<br>");
echo("JM = " . $jm . "<br>");
echo("OPIS = " . $opis . "<br>");
echo("KATBR = " . $katbr . "<br>");
}
?>
И когда я ввожу URL-адрес следующим образом:
/Php/Proizvodi/Novi.php?proizvodid=3410&naziv=REVIZIJA%20200*200%20GIPS&pdv=20&akcijski_artikal=1&aktivan=1&slika=&katbr=74-1800%20P%20#2.012N3IZ&jm=kom&opis=Revizioni%20otvor
Он не выполняет sql, и по какой-то причине jm возвращает пустое значение, а opis возвращает пустое значение, даже если в этом нет необходимости.
Параметр URL с именем opis или jm отсутствует. Все, что находится после хэш-метки, является целью привязки, а не параметром URL. Таким образом, 2.012N3IZ&jm=kom&opis=Revizioni%20otvor не будет анализироваться как параметры.






Я думаю, вы могли бы искать что-то в этом роде https://www.designcise.com/web/tutorial/how-to-get-key-value-pair-from-url-query-string-in-php
В этом примере они используют parse_str ($ _ SERVER ['QUERY_STRING'], $ output); чтобы получить необработанные значения без кодировки URL.
Я считаю, что это связано с наличием # в строке URL-адреса.
Сервер не может получить доступ к переменным за пределами #, они доступны только из внешнего интерфейса.
Надеюсь это поможет.
Возможный дубликат Почему хеш-часть URL-адреса недоступна на стороне сервера?