Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Aiuto per visualizzazione immagine da directory

    Salve a tutti,

    ho bisogno di aiuto per visualizzare la bandiera della nazione dell'utente che si collega al mio sito (http://www.palana.it). Ad essere sincero ho rimaneggiato del codice prelevato dalla rete il risultato è questo:
    Codice PHP:
    <?php
     
    // Must include this
    include("geoiploc.php");

    function 
    getYJLINKS($default_font_family,$yj_copyrightear,$yj_templatename,$show_tools,$show_fres,$show_rtlc,$validators_off,$totop_off){
        
        
    $allLinks = array();

        if((
    function_exists('toolbox_urls') && $show_tools == 1) || $validators_off == || $totop_off == 1){
            echo 
    '<div class="validators">';
            if(
    $validators_off == 1){
                
    $allLinks[] ='<a href="http://jigsaw.w3.org/css-validator/check/referer?profile=css3" target="_blank" title="CSS Validity">CSS Valid</a>';
                
    $allLinks[] ='<a href="http://validator.w3.org/check/referer" target="_blank" title="XHTML Validity">XHTML Valid</a>';
            }
            if(
    $totop_off == 1){
                
    $allLinks[] ='<a class="yjscroll" href="#stylef'.$default_font_family.'">Top</a>';
            }
            if (
    function_exists('toolbox_urls') && $show_tools == 1):
            global 
    $font_size;
            global 
    $font_direction;
                if (
    $show_fres == 1):
                    
    $allLinks[] = '<a id="fontSizePlus" class="fs" href="javascript:;" rel="nofollow">+</a>';
                    
    $allLinks[] = '<a id="fontSizeMinus"  class="fs" href="javascript:;" rel="nofollow">-</a>';
                    
    $allLinks[] = '<a id="fontSizeReset"  class="fs" href="javascript:;" rel="nofollow">reset</a>';
                endif;
                if (
    $show_rtlc == 1):
                    
    $allLinks[] = '<a class="tdir" href="'.$font_direction[1].'" rel="nofollow">RTL</a>';
                    
    $allLinks[] = '<a class="tdir" href="'.$font_direction[2].'" rel="nofollow">LTR</a>';
                endif;
            endif;
            echo 
    implode(' | ',$allLinks);
            echo 
    '</div>';
        }
    // you may load this from a database
        
    $ip $_SERVER["REMOTE_ADDR"];

    // listing Country Flags Images
        
    $dir 'images/flags';
        
    $file_display = array('png');
         if (
    file_exists ($dir) == false) {
        echo 
    'Directory \''$dir'\' not found!';
        }
         else{
        
    $dir_contents scandir($dir);
        foreach(
    $dir_contents as $file) {
        
    $file_type strtolower(end(explode('.'$file)));
         If(
    $file !== '.' && $file !== '..' && in_array($file_type$file_display) == true)
         echo 
    '<div class="yjsgcp">Palana.it &reg; 1994 - '.$yj_copyrightear.' :: Tutti i diritti riservati :: Realizzazione Palana.it &boxv;&boxv; Utente rilevato: IP: '$ip ', '.getCountryFromIP($ip" NamE ").' ('.getCountryFromIP($ip"code").'-'.getCountryFromIP($ip"AbBr").') '; echo '<img src="'$dir'/'$file'" alt="'$file'" /> </div>';
    //   echo '<div class="yjsgcp">Palana.it &reg; 1994 - '.$yj_copyrightear.' :: Tutti i diritti riservati :: Realizzazione Palana.it &boxv;&boxv; Utente rilevato: IP: '. $ip . ', '.getCountryFromIP($ip, " NamE ").' ('.getCountryFromIP($ip, "code").'-'.getCountryFromIP($ip, "AbBr").') '; echo '<img src="', $dir, '/', $file, '" alt="', $file, '" /> </div>';
            
    }
        }
    }
    ?>
    Sono partito dal DB geoip contenuto il geoiploc.php e ho inserito il codice PHP per visualizzare, infondo alla pagina, Utente rilevato: IP: xxx.xxx.xxx, Italy (IT-ITA). Ovviamente il problema è quello di far visualizare SOLTANTO la bandiera del Paese da cui si collega l'utente. Stante che ogni bandiera è identificata dal prefisso del paese - in questo caso IT già ricavato dal codice - dovrebbe essere possibile utilizzare il parametro
    Codice PHP:
    getCountryFromIP($ip"code"
    , dove "code" è appunto la sigla abbreviata del Paese, dunque il prefisso it del file-bandiera it.png per chi si collega dall'Italia.
    Spero di essere stato chiaro. Grazie per l'aiuto che vorrete darmi.
    Ultima modifica di Daddy1951; 08-01-2015 a 02:45

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Se getCountryFromIP($ip, "code") ti restituisce iT, puoi visualizzare l'immagine con
    Codice PHP:
    // questo se i nomi delle immagini sono tutti lowercase
    $code strtolower(getCountryFromIP($ip"code"));

    // se i codici sono tutti uppercase usa strtoupper
    // se sono mischiati, allora redili uniformi rinominando i file
    // su server Linux iT.png è diverso da it.png, se cerchi il primo,
    // ma il file si chiama come il secondo
    // ti verrà detto che il file cercato non esiste

    echo "<img src='/path/cartella/immagini/" $code ".png />"

  3. #3

    Quasi OK

    Grazie Aklhazred, però

    1
    Codice PHP:
    $code strtolower(getCountryFromIP($ip"code")); 
    è a posto,

    2 Rispetto a
    Codice PHP:
     echo "<img src='/path/cartella/immagini/" $code ".png />"
    risulta più "in sintonia" con il resto
    Codice PHP:
      echo '<img src="'$dir'/'$code'.png" /> 
    . Dunquw OK ma...

    3 come puoi vedere il codice it va bene e il file individuato e visualizzato è esattamente it.png, il problema è però duplice: a) all'inizio vengono riportati anche tre spazi vuoti che, per quanto ho capito, corrispondono a quelli tipici della directory, cioè thumb.db, .(un punto) e ..(due punti). Non so se si possono cancellare (nella cartella sul server non sono visibili) e in qualche modo si devono escludere.

    4 in ogni caso, troppa grazia sant'antonio, si direbbe! La visualizzazione NON SI FERMA fintanto che non viene raggiunto l'ultimo file (sono più di 240). Può dipendere da
    Codice PHP:
     $dir'/' 
    ? Spero di no... Che dici?

    Grazie ancora.

  4. #4

    Quasi OK ma... integrazione

    Credo di essermi sbarazzato dei tre-tre "disturbatori": thumb.db, "un punto" e "due punti" con

    Codice PHP:
     if($file == '..' || $file == '.') {continue;} 
    Resta il "loop" per più di 240 "it.png" ! Come si ferma??? Voglio scendere

    Con un pò di aiuto... Prima o poi... Grazie...

  5. #5
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Non hai bisogno di nessun loop. Hai tutte le informazioni che ti servono. Chiediti a che ti serve scannerizzare tutta la cartella con le immagini. Conosci "$code" e questo basta. La risposta che ti ha dato Alhazred è valida, adattala al tuo caso.
    Ultima modifica di .Kurt; 08-01-2015 a 19:13

  6. #6

    Ciao .Kurt

    Adattando... adattando... sono arrivato qui:

    Codice PHP:
    // you may load this from a database
        
    $ip $_SERVER["REMOTE_ADDR"];

    // listing Country Flags Images
        
    $dir 'images/flags';
        
    $file_display = array('png');
             if (
    file_exists ($dir) == false) {
        echo 
    'Directory \''$dir'\' not found!';
        }
        else{
        
    $dir_contents scandir($dir);
        foreach(
    $dir_contents as $file) {
        
    $file_type strtolower(end(explode('.'$file)));
        If(
    $file !== '.' && $file !== '..' && in_array($file_type$file_display) == true)
        if(
    $file == '..' || $file == '.') {
        continue;
        }
        
    $code strtolower(getCountryFromIP($ip"code"));
        echo 
    '<div class="yjsgcp">Palana.it &reg; 1994 - '.$yj_copyrightear.' :: Tutti i diritti riservati :: Realizzazione Palana.it &boxv;&boxv; Utente rilevato: IP: '$ip ', '.getCountryFromIP($ip" NamE ").' ('.getCountryFromIP($ip"code").'-'.getCountryFromIP($ip"AbBr").') '; echo '<img src="'$dir'/'$code'.png" /> </div>';
            }
        }

    I suggerimenti di Alhazred sono si stati preziosi... Il tuo intervento è invece troppo... attuale: si rivolge ai "meritevoli", ai "capaci", a quelli di grande intuito... Insomma: i "bravi", professionisti che "parlano il PHP" come loro prima lingua.
    Costori NON HANNO BISOGNO di chiedere aiuto per una correzione a quattro righe di codice. Non vanno per forum, Conoscono "$code" e questo loro basta.

    Ciao .Kurt...

  7. #7
    Utente di HTML.it L'avatar di .Kurt
    Registrato dal
    Jul 2007
    Messaggi
    654
    Modificalo con
    codice:
        // you may load this from a database
        $ip = $_SERVER["REMOTE_ADDR"];
    
        // listing Country Flags Images
        $dir = 'images/flags';
        
        $code = strtolower(getCountryFromIP($ip, "code"));
        echo '<div class="yjsgcp">Palana.it &reg; 1994 - '. $yj_copyrightear .' :: Tutti i diritti riservati :: Realizzazione Palana.it &boxv;&boxv;';
        echo 'Utente rilevato: IP: '. $ip . ', '.getCountryFromIP($ip, " NamE ").' ('.getCountryFromIP($ip, "code").'-'.getCountryFromIP($ip, "AbBr").') ';
        echo '<img src="', $dir, '/', $code, '.png" /> </div>';
    Tieni in considerazione che potresti non avere un images/flags/abc.png, quindi potrebbe avere senso controllare la sua esistenza con file_exists per gestire questo caso.

  8. #8
    No... Non funziona...

    Riguardo poi ai files contenuti nella dir images/flags sono TUTTI nella forma: it.png (Italy), fr.png (France), cu.png (Cuba), ecc., dove it o fr o cu corrisponde, appunto, a $code ...

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.