Øsse Skrevet 24. juni 2010 Del Skrevet 24. juni 2010 (endret) Hei! jeg er ultrafersk på PHP bare sånn at det er sagt. Jeg har følgende kode i index.php: <footer> <!-- <div.class="footer"> --> <h2>Footer</h2> <!-- Denne er skjult som standard med styles --> <?php $kommando = "lsb_release -ds"; echo ("<p>Kommandoen <code>" . $kommando . "</code> gir følgende output: <code>" . system($kommando) . "</code>.</p>"); ?> </footer> som gir følgende rare output: <footer> <!-- <div.class="footer"> --> <h2>Footer</h2> <!-- Denne er skjult som standard med styles --> Ubuntu 8.04.4 LTS <p>Kommandoen <code>lsb_release -ds</code> gir følgende output: <code>Ubuntu 8.04.4 LTS</code>.</p> </footer> På en eller annen mistenkelig måte echo-er PHP resultatet av system call-et en ekstra gang før den blir bedt om det. Jeg har og prøvd å sette inni kommandostrengen direkte, uten bruk av en variabel. Dette gir samme resultat. Hva er det som skjer her? Endret 24. juni 2010 av Øsse Lenke til kommentar
Loomy Skrevet 24. juni 2010 Del Skrevet 24. juni 2010 Det som skjer er at system() som standard printer resultatet. Når du da echo'er OG system'er (hvis du skjønner ) blir det gjort to ganger. For å løse det kan du bruke den valgfrie 2.parameteren return_var (se manualen: http://no2.php.net/manual/en/function.system.php) slik at det blir: system($kommando, true); Da vil den kun returnere verdien, slik at du kan lagre den i en variabel eller echo'e den, istedenfor å printe den ut direkte. Lenke til kommentar
Øsse Skrevet 24. juni 2010 Forfatter Del Skrevet 24. juni 2010 (endret) Dumme meg! Du skjønner, jeg hadde et lite uhell og klarte å slette index.php og nå prøver jeg å bygge den ipp igjen men jeg husker ikke alt. Jeg tipper jeg splittet det avsnittet opp i to seperate echo-er. Jeg fikk en feilmelding da jeg prøvde system($kommando, true); Fikk følgende: Fatal error: Only variables can be passed by reference in blablabla on line blabla. Fant en annen kommando som heter exec(), den gjør visst akkurat det samme som system() men den skriver ikke resultatet Endret 24. juni 2010 av Øsse Lenke til kommentar
TheRealL Skrevet 24. juni 2010 Del Skrevet 24. juni 2010 <footer> <!-- <div.class="footer"> --> <h2>Footer</h2> <!-- Denne er skjult som standard med styles --> <?php $kommando = "lsb_release -ds"; $exec = `$kommando`; echo ("<p>Kommandoen <code>" . $kommando . "</code> gir følgende output: <code>" . $exec . "</code>.</p>"); ?> </footer> Problem solved Hvis du putter ting i `` så vil det bli executed. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå