Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157

    Controllo versione minima PHP

    Ciao. Premetto che è solo da due settimane che studio il PHP ed ho ancora molti dubbi... Ho creato un'applicazione semplice semplice, che richiede di aver installato sul proprio computer una versione superiore a 5.1 di PHP. Per distribuire il programma (che nella fattispecie è un mini-forum), volevo creare uno script che controllasse la versione di PHP installata e che avvisasse qualora fosse installata una versione meno recente.

    L'impostazione iniziale che ho scritto, è la seguente (ho inserito una versione maggiore, anche se non è ancora esistente, per verificare il messaggio di errore):

    codice:
    <?php
    $versione_php = "5.3.1";
    $errore = array();
    
    function versione($php)
    {
          $this->versione_php = $php;
    }
    
    function verifica()
    {
          $phpver = phpversion();
        
          if($phpver < $this->versione_php)
          {
                 $errore[] = "La versione non è aggiornata";
          }
    }
    ?>
    Però mi dà errore (Unexpected T_VAR) quando provo lo script... qualcuno sabrebbe dirmi cosa sbaglio?

  2. #2
    posta l'errore completo.

    comunque:

    usi una classe ma non l'hai dichiarata.

    E anche se l'hai dichiarata ma non hai postato tutto il codice, i membri non sono dichiarati nel modo giusto.

    in php 4 vanno preceduti da var
    in php 5 da public-protected-private

  3. #3
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157
    Quindi dovrebbe essere così per PHP4?

    codice:
    <?php
    var $versione_php = "5.3.1";
    var $phpver = phpversion();
    
    function versione($php)
    {
          $this->versione_php = $php;
    }
    
    function verifica()
    {
          $errore = array();
          
        
          if($phpver < $this->versione_php)
          {
                 $errore[] = "La versione non è aggiornata";
          }
    }
    ?>
    E per PHP5 come faccio?

  4. #4
    perchè stai facendo confusione... se dichiari una variabile esterna alle funzioni, non la puoi richiamare con $this->nomevar...

    Dovresti metterla come globale, e richiamarla dalla funzione... Non l'ho mai usate le variabili globali, ma potresti ancora meglio, mettere in una costante il valore che ti serve:

    define("VERSIONE","5.1"); //o come la vuoi dichiarare...

    e poi nella funzione la chiami normalmente senza $

    codice:
    define("VERSIONE","5.1"); //o come la vuoi dichiarare...
    
    function errori()
    {
          $phpver = phpversion();
          if($phpver < VERSIONE)
          {
                 $errore[] = "La versione non è aggiornata";
          }
    return $errore;
    }
    $errori = errori();
    if (!$errori)
    {
    tutto ok!
    }
    else
    {
    mandi in output il contenuto di $errori
    }
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  5. #5
    Sei un po' confuso.

    1. Stai creando una classe, ma la classe dov'è?????

    2. Dichiari una proprietà "$vesione_php", gli dai un valore, e poi con il metodo "versione" ci si aspetta un'altro valore

  6. #6
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157
    In effetti il codice di djhell funziona... per pura curiosità, se volessi mantenere

    var $version_php = "";

    come diverrebbe il codice? Dovrei creare una classe...

  7. #7
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157
    codice:
    <?php
    class verificaversione
    {
           var $versione_php = "5.3.1";
           var $phpver = phpversion();
    
           function versione($php)
           {
                  $this->versione_php = $php;
           }
    
           function verifica()
           {
                 $errore = array();
          
                 if($phpver < $this->versione_php)
                 {
                            $errore[] = "La versione non è aggiornata";
                 }
           }
    }
    ?>
    Così va bene? Perché questa volta mi dice:

    Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:\Program Files\Apache Server\htdocs\prova.php on line 5

  8. #8
    non andrebbe, ma non scomodare una classe per così poco....
    ti basta una riga invece di tanto casino, comunque, se proprio ci tieni, dovresti farla così:

    togliere un pò di qua, e aggiungere un pò di là...

    (bada che php4 non lo uso ma mi pare andasse var...)
    e comunque, provalo e se non và, significa che non và, senza bisogno di chiedere che lo provino altri, no?

    codice:
    class verificaversione
    {
           var $versione_php = "5.3.1";
           var $phpver = phpversion();
    var $errori;
    
           function verifica()
           {
                 if($this->phpver < $this->versione_php)
                 {
                            $this->errori[] = "La versione non è aggiornata";
                 }
            }
    }
    ?>
    ...::: DESIDERARE E' UMANO :::...
    ...::: POSSEDERE E' DIVINO :::...
    ...::: HAVE A NICE DAY :::...
    (¯`·.¸¸.->ĐĮ ĦΞŁŁ<-.¸¸.·`¯)
    http://www.djhellclub.com

  9. #9
    Sì così funziona.
    Ma non è una classe e forse è meglio così.
    Infatti se qualche disgraziato avesse una versione inferiore alla 4 non sarebbe supportato il paradigma ad oggetti e dunque si produrrebbe un errore

  10. #10
    Utente di HTML.it L'avatar di xshell
    Registrato dal
    Apr 2008
    Messaggi
    157
    Il tuo codice mi restituisce lo stesso errore di prima:

    Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:\Program Files\Apache Server\htdocs\prova.php on line 5

    comunque riguardo quello che ha detto maurizio... perché non è una classe se c'è "class verificaversione {}"?

    Vi prego... sono ancora all'inizio... mi si confondono le idee (come avete notato prima).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.