Gå til innhold

[Løst] Inkludere ekstern variabel


Anbefalte innlegg

Heisann!

 

Jeg lurer på hvordan man inkluderer en ekstern variabel.

Altså ikke en annen fil på web serveren, men fra et annen nettside.

 

Har prøvd med:

<?php
   include ('http://gxdesign.tk/updates/PasswordGenerator/update.php');
   echo $version;
   $current_version = "0.9.8";
?>

 

Og i filen jeg prøver å hente står det:

<?php
$version = '1.0.0';
if ($current_version < $version){
	$update = "
<h1><center>
	You got version: ".$current_version."<br />
	And we recommend that you update to version: ".$version."<br />
</center></h1>";
echo $update;
}
?>

 

 

Men jeg får ikke printet ut $update :cry:

Lenke til kommentar
Videoannonse
Annonse

Det ville vært en php-risiko om man kunne hente alle andre sine php-koder ved å bare kalde til dem... right? Kunne hentet alle databasepassord etc...

 

 

Jeg skrev en kommentar her på hvordan jeg ville gått frem får å gjøre noe i den duren:

https://www.diskusjon.no/index.php?showtopic=1388531

 

 

Da har jeg gjort slik:

<?php
   $version = file_get_contents('http://gxdesign.tk/updates/PasswordGenerator/update.txt');
   $current_version = "1.0.0";
   if ($version > $current_version){
       $update = "
    <h1><center>
        You got version: $current_version<br />
        And we recommend that you update to version: $version<br />
    </center></h1>";
   }
?>

 

og update.txt er:

1.0.1

Lenke til kommentar

Se der ja, det var ikke værre (litt ekkelt å bruke txt?).

 

Ser noen saker jeg er litt skeptisk til.. Hvor det er string, der det burde være int.

$current_version og $version er string.

 

Men du forsøker sammenligne størrelsen på tallene.. Du må omformatere det til int, for at det ikke skal være buggy.

 

Du gjør dem om til int ganske enkelt:

<?php
   $version = file_get_contents('http://gxdesign.tk/updates/PasswordGenerator/update.txt');
   $version = (int)$version;
   $current_version = 1.0.0;
   if ($version > $current_version){
       $update = "
           <h1><center>
               You got version: $current_version<br />
               And we recommend that you update to version: $version<br />
           </center></h1>";
   }
?>

 

Ekstern kode kan være phpfil (om ønsket); (lettere å hente fra database etc..).

<?php
//om du vil kan du hente versjonen fra en database eller slik 
$version = "1.0.0";
echo $version;

file_get_contents henter f.eks alt som er synelig (kildekoden til siden).

Endret av warpie
Lenke til kommentar

Se der ja, det var ikke værre (litt ekkelt å bruke txt?).

 

Ser noen saker jeg er litt skeptisk til.. Hvor det er string, der det burde være int.

$current_version og $version er string.

 

Men du forsøker sammenligne størrelsen på tallene.. Du må omformatere det til int, for at det ikke skal være buggy.

 

Du gjør dem om til int ganske enkelt:

<?php
   $version = file_get_contents('http://gxdesign.tk/updates/PasswordGenerator/update.txt');
   $version = (int)$version;
   $current_version = 1.0.0;
   if ($version > $current_version){
       $update = "
           <h1><center>
               You got version: $current_version<br />
               And we recommend that you update to version: $version<br />
           </center></h1>";
   }
?>

 

Ekstern kode kan være phpfil (om ønsket); (lettere å hente fra database etc..).

<?php
//om du vil kan du hente versjonen fra en database eller slik 
$version = "1.0.0";
echo $version;

file_get_contents henter f.eks alt som er synelig (kildekoden til siden).

 

Da har jeg gjort det du sa, bruker nå php, men jeg fikk ikke til (int)$version.

Men uansett, nå funker det :D

Endret av Goldfiner
Lenke til kommentar

Man kan naturligvis ikke konvertere en versjon-streng til en integer. Hvordan ser dere egentlig for dere at en integer kan representere tre tallverdier? Jeg satt sammen en lite eksempel som bruker regulære uttrykk for å hente ut delene av versjonen, som man kan bruke til å sammenlikne med.

 

<?php

   $string = file_get_contents(..);

   if (preg_match("/^(\d+)\.(\d+)\.(\d+)$/", $string, $matches)) {
       $major = $matches[1];
       $minor = $matches[2];
       $build = $matches[3];
       echo "Latest version is {$major}.{$minor}.{$build}.";
   }

Endret av Jonas
  • Liker 1
Lenke til kommentar

Ellers hvis man ikke er så fryktelig glad i regex:

 

function get_version_int($ver) {
$ver_int = 0;
$i = 0;
foreach(array_reverse(explode(".", $ver)) as $sub_ver) {
	$ver_int += $sub_ver << 8*$i++;
}
return $ver_int;
}

print get_version_int("0.9.8"); // 2312
print get_version_int("0.9.8") > get_version_int("0.8.32"); // true

// da gjør man det slik:
$version = file_get_contents(..);
$current_version = "1.0.0";
if(get_version_int($version) > get_version_int($current_version))
do_something();

 

Fungerer fra versjon 0.0.0.0 til 127.255.255.255 siden vi bruker signed 32-bit integer.

 

Verdt å merke seg at ingen av del-versjonene må være høyere enn 255, da blir sammenlikningen feil. En annen ting er at f. eks. "1.0.0" regnes som kort for "0.1.0.0" og at "1.0.1.0" dermed ikke er det samme som "1.0.1"! Blir dog ikke rot om man er konsistent med versjonstallene og bruker samme antall hver gang.

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...