Zmienna w tworzeniu linku

0

Chcę zrobić tak, że przychodząca zmienna ma wpływ na konstrukcję linku na stronie.

Najprościej tłumacząc wysyłam 3 osobom link

Osoba nr 1: https://www.stronka.pl/index.php?id=1
Osoba nr 2: https://www.stronka.pl/index.php?id=2
Osoba nr 3: https://www.stronka.pl/index.php?id=3

I osoby odwiedzające stronę przez ten link widzą stronę z buttonem o różnej konstrukcji linku.

Próbowałem tak:

<a href="https://www.stronka.pl/index.php?id=$id"><img src="https://www.stronka.pl/button.png"></a>

Jednak zmienna nie jest wstawiana do linku. W linku jest po prostu $id a nie wartość id
Oczywiście wcześniej wywołuję zmienną $id = $_REQUEST['id'];

Jak zrobić, żeby było dobrze ?

3
<?php
  if (array_key_exists('id', $_GET)) {
    $id = $_GET['id'];
  } else {
    $id = null; // co jak ktoś wejdzie na https://www.stronka.pl/index.php?
  }

  if ($id) {
    $link = '/index.php?' . http_build_query(['id' => $id]);
  } else {
    $link = '/index.php';
  }
?>
<!DOCTYPE html>
<html>
<body>
  <a href="<?= htmlSpecialChars($link) ?>">
    <img src="https://www.stronka.pl/button.png">
  </a>
</body>
</html>
0
<?php
$id = $_REQUEST['id'];
echo '<a href="https://www.stronka.pl/index.php?id='.$id.'"><img src="https://www.stronka.pl/button.png"></a>';
2
hzmzp napisał(a):
<?php
$id = $_REQUEST['id'];
echo '<a href="https://www.stronka.pl/index.php?id='.$id.'"><img src="https://www.stronka.pl/button.png"></a>';

http://localhost:8086/file.php?id=%22%3E%3Cscript%3Ealert(%22you%20have%20been%20hacked%22)%3B%3C%2Fscript%3E

😉

PS: view-source:
screenshot-20240501180742.png

2
hzmzp napisał(a):

jestem tego świadomy, ale sądząc po złożoności pytania, stwierdziłem że twoja odpowiedź może go przerosnąć

Rozumiem.

Ale @rankor chce zrobić generowanie linków po query paramsie i wyświetlić je w widoku HTML. To nie jest prosta rzecz - składa się z wielu elementów:

  • Query param - HTTP
  • Parametr może być opcjonalny - logika programu (potencjalnie brakuje parametru)
  • Decyzja jaki link wygenerować jak parametru nie ma - logika programu
  • Budowanie nowego linka - budowanie URL (potencjalny url-injection)
  • Wyświetlanie linka - renderowanie HTML (potencjalny XSS)

To nie jest prosty temat, i nie należy ukrywać jego skomplikowania.

1 użytkowników online, w tym zalogowanych: 0, gości: 1