25. maj 2005 - 20:07Der er
29 kommentarer og 1 løsning
Over førsel af en variable fra side til side i php
Davs jeg skal have overført en variable i php fra en side til en anden, jeg bruger header("Location: ../$file"); til at sende den nye header. Nogen som har en god ide og overførsel via en session er overvejet men der må være en lettere måde. fx en post ting eller bare en ganske almindelig variable?
Hvis du gerne vil have variablen med som en del af forespørgselen (så man eksempelvis kan linke direkte til resultatsiden) kan du lave det som en get-forespørgsel, men ellers er nielle's foreslag det mest oplagte. Med en get-forespørgsel sender du simpelthen argumenterne med efter URLen med & mellem argumenterne og ? mellem URL og argumenter. Eksempel: URL?variable1=value1&variable2=value2 Det kommer lidt an på situationen hvad der er mest hensigtsmæssigt.
Jeg mener en gang jeg har lavet noget html post fra php til noget andet men jeg er ikke sikke på hvordan men indtil videre har jeg lavet det med en session, jeg syntes bare ikke det virker videre smart at skulle starte en session for at lukke den igen på næste side
"<%php" er den rigtige måde at starte en PHP-sekvens på.
Mange systemer er dog sat op til også at acceptere den noget kortere "<%". Efter min mening skal man holde sig langt væk fra denne, idet man ikke kan være sikker på at koden senere kan flyttes til et andet system (hvis det ikke er sat op til at acceptere den *dovne* version). Se sukos' kommentar 25/05-2005 21:17:54.
donlup> Jeg kan ikke forstå hvad du har imod SESSION. Det er rent faktisk denne slags ting den er beregnet til. Der er et par alternative løsninger - bl.a. noget over den POST-løsning du husker svagt - men alle vil resultere i en hel del mere kode end brugen af $_SESSION.
Jeg lægger et svar, men kun 15 points for et spørgsmål som dette, tak. Tag du bare resten tilbage igen.
At det er en ekstra feature der er blevet lagt ind i php efter version 3.0.4 betyder vel netop, at dette ikke er den rigtige måde at gøre det på, men at den er acceptabel.
Sygt? Well, enhver sin egen smag. Men hvis du vil vide hvad der er virkeligt sygt, så prøv du bare at efterrette 100 php-filer fordi at du er flyttet over på et webhotel som ikke har enablet ASP-tags.
for meget med jer :P det var ikke en debat om hvor man enleder et php script men en lidt lettere måde en sessions jeg ledte efter jeg acceptere ikke sessions som et svar da jeg selv forslog det
Ok, havde ikke lige set at du allerede havde nævnt sessions. Afvis bare mit svar - men sessions er både den rigtige og den nemmeste måde at gøre det på.
Hej Jeg er enig i, at sessions er det letteste og det mest oplagte, men hvis du helst vil undgå dem, er her et par alternativer:
1. JAVASCRIPT Du kan udskrive en formular i den første side og sende den afsted med et body-tag som: <body onload="java script:document.minformular.submit()">
Eller du kan sende dine variabler med URL'en: ... <html osv... <script language="JavaScript" type="text/javascript"> <!-- function redirect() { document.location="side2.php?minvariabel=<?php echo $minvariabel; ?>"; } //--> </script> <body onload="java script:redirect();">
2. INCLUDE-FIL Med PHP kan du skrive PHP-kode til en tekst-fil, som du derefter kan indsætte med include_once eller require_once. Eksempel-kode til generering af en include-fil:
<?php $variabelFil = 'variabler.inc'; $variabler = '<?php' . "\r\n" . '$var1 = "En variabel";' . "\r\n" . '$var2 = "En anden variabel";' . "\r\n" . '?>' . "\r\n"; if ($filPointer = fopen($variabelFil, 'w')) { if ($succes = fwrite($filPointer, $variabler)) { fclose($filPointer); } else die ('Disk I/O fejl'); } else die ('Kunne ikke oprette ' . $variabelFil); // send header ?>
Jeg vil gøre opmærksom på disse muligheder allerede er forslået af Kommentar: schwarz84 25/05-2005 20:12:29 og af Kommentar: nielle 25/05-2005 20:14:10
Da jeg selv valgte at løse det med sessions og jeg ikke ser et lettere forslag lukker jeg nu selv dette spørgsmål
Nu er der jo altså nogen spørgsmål, som kun kan besvares med et negativt "Nej, det kan ikke lade sig gøre" eller, som i dette tilfælde, "Nej, sessions er både den simpleste og mest korrekte måde at gøre det på". Den slags svar er vel også berettiget til points?
Ikke at jeg ønsker nogle af dine points, i dette tilfælde, men jeg synes pr. princip at der er et eller andet galt med at folk tager points tilbage blot fordi at svaret gik dem imod. :^|
Jeg må sige jeg kan se hvad du mener, men jeg søgte en alternativ og hvis muligt lettere måde en session. Det er ikke fordi jeg er imod at give dig eller nogen anden points men jeg syntes ikke det at det ville være korrekt at give points til en anden for en løsning som jeg selv forslog? hvis du kan følge mig i det?
Kan sagtens følge dig. Jeg syens bare at det burde siges.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.