Avatar billede donlup Nybegynder
25. maj 2005 - 20:07 Der 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?
Avatar billede nielle Nybegynder
25. maj 2005 - 20:08 #1
Dv lægger den simpelthen i $_SESSION
Avatar billede sukos Juniormester
25. maj 2005 - 20:09 #2
Du får ikke noget nemmere end sessions!
Avatar billede schwarz84 Nybegynder
25. maj 2005 - 20:12 #3
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.
Avatar billede nielle Nybegynder
25. maj 2005 - 20:14 #4
Den 3. mulighed er at skrive variablen til en tekst fil og så genindlæse den fra den nye side.
Avatar billede nielle Nybegynder
25. maj 2005 - 20:26 #5
Noget kode:

===== side1.php =====

<%php
session_start();

// ... Lah-di-lah

$MeaningOfLifeTheUniverseAndEverything = 42;
$_SESSION("VærdAtHuske") = $MeaningOfLifeTheUniverseAndEverything;

// ... Mere lah-di-lah

header("Location: side2.php");
%>


===== side2.php =====

<%php
session_start();

// ... Lah-di-lah

$MeaningOfLifeTheUniverseAndEverything = $_SESSION("VærdAtHuske");
echo "Livet, Universet og Alting: " . $MeaningOfLifeTheUniverseAndEverything;

// ... Mere lah-di-lah
%>
Avatar billede nielle Nybegynder
25. maj 2005 - 20:27 #6
... og en udemærket tutorial om $_SESSION:

http://www.phpfreaks.com/tutorials/41/0.php
Avatar billede donlup Nybegynder
25. maj 2005 - 20:33 #7
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
Avatar billede Slettet bruger
25. maj 2005 - 21:14 #8
<%php

Hvad er det for noget?
Avatar billede sukos Juniormester
25. maj 2005 - 21:17 #9
:O)
Hvis asp_tags er sat til on i php.ini, så vil det også virke
Avatar billede Slettet bruger
25. maj 2005 - 21:23 #10
oki, det ser lidt sygt ud synes jeg :o)
Avatar billede nielle Nybegynder
25. maj 2005 - 21:24 #11
"<%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.
Avatar billede sukos Juniormester
25. maj 2005 - 21:26 #12
<?php

må jo li'som være den korrekte måde at starte et php doc!

Hvor har du læst at <%php er "den rigtige måde" ???
Avatar billede nielle Nybegynder
25. maj 2005 - 21:29 #13
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.
Avatar billede nielle Nybegynder
25. maj 2005 - 21:32 #14
> Hvor har du læst at <%php er "den rigtige måde" ???

Fra hestens egen mund:

http://docs.php.net/en/ini.html#ini.asp-tags
Avatar billede Slettet bruger
25. maj 2005 - 21:34 #15
->nielle

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.
Avatar billede nielle Nybegynder
25. maj 2005 - 21:35 #16
> oki, det ser lidt sygt ud synes jeg :o)

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.
Avatar billede sukos Juniormester
25. maj 2005 - 21:35 #17
Ja, muligheden for at bruge det kan være der!
Men hvis nu du kikker på http://docs.php.net/en/tutorial.html
ser du ikke nogen brug af <%php
Avatar billede sukos Juniormester
25. maj 2005 - 21:36 #18
Iøvrigt er muligheden pr. default slået fra i php.ini
Avatar billede Slettet bruger
25. maj 2005 - 21:36 #19
Hvis de ikke har enablet ASP-tags, _skal_ de vel have <?, i stedet for <% ?
Avatar billede nielle Nybegynder
25. maj 2005 - 21:36 #20
Selvfølgelig er den acceptabel. Det er måske bare mig som er stokkonservativ. :^)
Avatar billede nielle Nybegynder
25. maj 2005 - 21:37 #21
Det har du s* da ret i. :^|
Avatar billede nielle Nybegynder
25. maj 2005 - 21:38 #22
...men så er det "<?php" og ikke bare "<?".
Avatar billede donlup Nybegynder
25. maj 2005 - 22:35 #23
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
Avatar billede sukos Juniormester
25. maj 2005 - 22:45 #24
Ja, ok! :O)
Men du får ikke noget nemmere end sessions.

Og måden med <%php er vist meget lidt brugt :O)
Avatar billede nielle Nybegynder
25. maj 2005 - 22:48 #25
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å.
Avatar billede kargo1 Nybegynder
26. maj 2005 - 00:50 #26
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
?>
Avatar billede donlup Nybegynder
26. maj 2005 - 11:00 #27
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
Avatar billede nielle Nybegynder
27. maj 2005 - 17:25 #28
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. :^|
Avatar billede donlup Nybegynder
27. maj 2005 - 18:41 #29
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?
Avatar billede nielle Nybegynder
27. maj 2005 - 19:19 #30
Kan sagtens følge dig. Jeg syens bare at det burde siges.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester