Jag är inte bra åp att beskriva, så förstår du inte, så beror det nog snarare på at jag är kass, än att du är det ;) men i korthet:
När man lägger till värden i länkar på sättet som du gjort, så hamnar de i arrayen $_GET
Klickar man på din länk som du gav som exempel så kunde du (antar jag) förut hämta ut värdet "ensida" ur $ID variabeln, korrekt?
Nu skulle du då behöva hämta den från $_GET['ID']
Likadant skulle $_GET['test'] innehålla värdet som låg i variabeln $test som du skrev till länken.
Använder du formulär så skall det ju finnas en metod för hur datan skickas
<form name="ettNamn" action="enSida.php" method="post">
alternativt
<form name="ettNamn" action="enSida.php" method="get">
har du ett input fält med namnet text kommer nu värdet som stoppades in i detta fält att kunna hämtas i $_POST['text'] resp. $_GET['text'] beroende på vilken metod du angav i form-taggen.
Den säkerhetsrisk som föreligger är ju om man har en sida som förväntar sig data från ett formulär skickat med metoden post, globala variabler är på, och någon plitar in samma varaibel namn med egna värden bakom adressen till den sidan.
Så hur som haver så är det enda säkra sättet att på mottagarsidan, i det anropade scriptet, som tar emot värdena, att kolla att de värden verkligen kan stämma. (Typ att värdena inte innehåller några elaka tecken som kan bråka med scriptet eller servern eller att det är av förväntad datatyp etc.)
Men iaf. för att svara på din ursprungsfråga, hur du får det att funka, på alla ställen där du tidigare hämtade värden ur variabler som har samma namn som i adressen
<a href=\"index.php?[b]ID[/b]=ensida&[b]test[/b]=$test\">Länk</a>
blir ju
$ID och $test i detta fallet, skall ersättas med $_GET['ID'] och $_GET['test']
Och vad gäller säkerhet, för att inte manipulera querystringen, kontrollera som sagt värdena, att de kan stämma efter att du tagit emot dem.
Hoppas det var till nytta
MVH Patrik
/r: kodfel
/r2: pinsamt stavfel