Permalänk

PHP: Variabel mellan dokument?

Hej!

Hur kan man skicka en variabel mellan 2st php dokument?
Har ett som listar alla posterna i min DB vill ha en länk där som är uppbyggd såhär

<a href="delete.php?id=<?php echo $RS1['id']?>">

som sen gör att man i delete.php kan få ut variablen id ?

Går det?

Visa signatur
Permalänk
Inaktiv

Ja, det går. Du lägger bara länken innanför en while-loop

<a href="delete.php?id=<?=$rs['id']?>"><?=$rs['postnamn']?></a>

Permalänk

jo så långt har jag också fattat men hur kommer jag åt det i nästa dokument?

Visa signatur
Permalänk
Medlem

$_GET['id']

Visa signatur

//Iceberg - In Trance We Trust!
www.iceberg.se

Permalänk
Medlem

i delete.php kommer variabeln $_GET['id'] innehålla värdet av $RS1['id']

EDIT:
långsam som vanligt..

Visa signatur

The difference between stupidity and genius - the latter has limits

Permalänk

Haha det funkade inte innan hade glömt understrecket

Visa signatur
Permalänk
Avstängd

Ett bra tips på ett sid bytnings system som är riktigt enkelt att använda templates med är följande.

skulle du skriva följande:
<a href="index.php?page=din_sida_tva"> länk </a>

Så hoppar du till functionen, " function_du_vill_hoppa_till(); "

Kan mixtra hur mycket som hälst med denna teknik, den är att rekommendera

Kod:

switch((isset($_GET[page]) ? $_GET['page'] : "index"))
{
case "index" : index();
break;

//sida 2
case "din_sida_tva" : function_du_vill_hoppa_till();
break;

default : index();
break;
}

Lycka till

Visa signatur
Permalänk
Medlem

ehmm, varför inte bara en simpel if-sats?

<?php
if(isset($_GET['page'])) {
include($_GET['page'] . ".php");
} else {
include("index.php");
?>

Lite lättare.

Visa signatur

//Iceberg - In Trance We Trust!
www.iceberg.se

Permalänk
Hedersmedlem

iceberg: Av den här anledningen.

Permalänk
Medlem

I min mening blir det mer läsbart på detta vis:

<?php if (isset($_GET['page'])) { switch ($_GET['page']) { // innehållet i switch-satsen här. } } ?>

Indentering och placering av curly braces är självklart upp till er
Jag tycker dock att det här demonstrerar tydligare vad det är som pågår, vilket underlättar enormt när man måste gå tillbaka till koden.

edit
Sedan kan man självklart lägga till en else-sats utifall ingen page-variabel är satt, som laddar index sidan eller motsvarande.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Kennel
iceberg: Av den här anledningen.

Då kan man ju bara köra funktionen file_exist()
Så den kollar ifall det är en fil dvs inga fula injektions, man kan ju även stoppa det på lite andra sätt, det var bara ett exempel.

Visa signatur

//Iceberg - In Trance We Trust!
www.iceberg.se

Permalänk
Hedersmedlem

iceberg: Visst, men file_exist(); fungerar på alla filer. På ett linux system kan du helt enkelt skriva i ?p=/etc/passwd så visas /etc/passwd.

Visserligen läggs .php till men man kan fortfarande ha rätt kul med den funktionen.

Citat:

Citat från Kennels artikel
Ett annat klassiskt misstag är att inkludera PHP-skript enbart baserat på vad som anges i URL:en. Det kan ibland vara praktiskt att skicka med en parameter till ett skript och att låta denna parameter bestämma vilket skript eller vilken sida som skall visas för besökaren. Man skulle t.ex. kunna tänka sig att man har ett skript index.php och att detta skript visar olika sidor beroende på vad man anger för page i URL:en. Skriver man in index.php?page=about.php skall sidan about.php inkluderas. Skriptet index.php kanske då kör följande kod:

include $_GET['page'];

En mycket dålig idé. En illvillig användare kan bara byta ut about.php mot något annat skript som han/hon kanske inte har tillgång till vanligtvis eller kanske t.o.m. en känslig fil någon annanstans på hårdisken på servern. Om man anropat skriptet med t.ex. page=/etc/passwd hade det skrivit ut innehållet i passwd-filen (om det är ett *NIX-system). Tro mig när jag säger att det är en dålig idé.

En vanligt förekommande åsikt är att problemet kan lösas genom att tvinga dit en filändelse på slutet av det som skall inkluderas. Såhär:

include $_GET['page'].'.php';

Detta löser dock inte problemet. Om magic_quotes_gpc är avstängt i php.ini (vilket det bör vara), kan man komma runt skyddet genom att anropa skriptet med t.ex. page=/etc/passwd%00 där %00 representerar tecknet NUL (vilket PHP tolkar som slutet på en sträng). Att bara smälla dit en filändelse på slutet är alltså en dålig idé det också.

Visa signatur

Vim
Kinesis Classic Contoured (svart), Svorak (A5)
Medlem i signaturgruppen Vimzealoter.