Visualizzazione dei risultati da 1 a 9 su 9

Discussione: innerHTML sfoglia ip

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125

    innerHTML sfoglia ip

    la cosa e' abbastanza semplice, ma ho bisogno solo di un po di pazienza per spiegarvi cosa devo fare

    allora....vorrei visualizzare in una cella un susseguirsi di indirizzi ip da un ip_star a un ip_stop.


    La mia funzione prende una stringa formattata cosi
    "192.168.0.1-192.168.0.200;192.168.3.1-192.168.3.40"

    come vedete start e stop sono separati da " - " mentre piu coppie di range ip sono separate dal " ; "

    allora con una serie di split separo il tutto fino ad avere l'ultimo byte dell'indirizzo ip in una var e a questo punto uso una funzione semplice che incrementa questa var...(tipo contatore)


    ecco il codice
    Codice PHP:
    secondi=0;
    stop=0;

    function 
    conta_all(str_range){ 
        
    arr_ip str_range.split(';');
        for(
    i=0;i<arr_ip.length-1;i++){
            
    range arr_ip[i];
            
    ar_range range.split('-');
            
    start_ip ar_range[0];
            
    stop_ip ar_range[1];
            
    byt_start start_ip.split('.');
            
    byt_stop stop_ip.split('.');
            
            
    secondi byt_start[3];
            
    stop byt_stop[3];
            
    ip_str byt_start[0]+"."+byt_start[1]+"."+byt_start[2];
            
    conta();
            
        }




    function 
    conta(){
     if(
    secondi==stop){ 
         
    autoClose();
     }else { 
          
    document.getElementById('range_count').innerHTML"Sfoglia il gruppo" "
    "
    ip_str+"."+secondi
          
    secondi++ ;
      
    setTimeout("conta()"100
     }





    //uso della funzione


    conta_all("192.168.0.1-192.168.0.200;192.168.3.1-192.168.3.40"); 
    ovviamente dovete avere una tabella con un <TD id="range_count"></td>



    se provate noterete che si vede solo uno sfoglio delle 2 coppie....non da 1 a 200 e poi da 1 a 40

    grazie a tutti per la pazienza
    ciao

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Dal momento in cui si lavora con i timer bisogna capire che i programmi js non si comportano più in maniera sequenziale.

    Se guardi lo script sotto vedrai che la logica è del tutto diversa.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    
    <table summary="">
    <tr>
    <td id="range_count"></td>
    </tr>
    </table>
    
    <script language="JavaScript" type="text/javascript">
    <!--
    secondi = 0; 
    stop    = 0; 
    ind     = 0;
    
    function conta_all(str_range){ 
        arr_ip = str_range.split(';'); 
    		//------ Primo range
    		ind    = 0;
    		conta_single_range(arr_ip[ind]);
    		//------ Conta
    		conta();
    } // function conta_all(str_range)
    
    
    function conta_single_range(str_range2){ 
        ar_range = str_range2.split('-'); 
        start_ip  = ar_range[0]; 
        stop_ip   = ar_range[1]; 
        byt_start = start_ip.split('.'); 
        byt_stop  = stop_ip.split('.'); 
             
        secondi   = byt_start[3]; 
        stop      = byt_stop[3]; 
        ip_str    = byt_start[0]+"."+byt_start[1]+"."+byt_start[2]; 
    } // function conta_single_range(str_range2)
    
    
    function conta() { 
     if (secondi > stop) {
    	if (ind >= arr_ip.length-1) {
    	 //------- Se tutti i range sono stati trattati mi fermo
    	 return;
    	} else {
       //------- Passo al range successivo
    	 ind++;
    	 conta_single_range(arr_ip[ind]);
    	} //if (ind > arr_ip.length-1) 
     } // if (secondi == stop)
     
     document.getElementById('range_count').innerHTML= "Sfoglia il gruppo" + "
    "+ ip_str+"."+secondi; 
     secondi++ ; 
     setTimeout("conta()",200);
    } // function conta()
    
    
    
    
    //uso della funzione 
    conta_all("192.168.0.180-192.168.0.200;192.168.3.1-192.168.3.40");
    
    //-->
    </script>
    
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    grande! era proprio quello che mi serviva. grazie mille

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    ....raga....restando con il codice postato da badaze....
    come posso modificarlo in modo che lo sfoglio lo faccia anche su range piu grandi
    tipo
    da 192.168.0.22 a 192.168.2.45

    questo implica che deve sfogliare
    da 192.168.0.22 a 192.168.0.254
    poi da 192.168.1.1 a 192.168.1.254
    e infine da 192.168.2.1 a 192.168.2.45

    qualche idea?

    il top ovviamente sarebbe portare il codice a far ciclare i contatori su tutti i 4 byte del ip non solo sull'ultimo.....

    help....

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Prova questo... ma è da testare.

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    
    <html>
    <head>
    <title>Untitled</title>
    </head>
    <body>
    
    <table summary="">
    <tr>
    <td id="range_count"></td>
    </tr>
    </table>
    
    <script language="JavaScript" type="text/javascript">
    <!--
    IP_var1  = 0; 
    IP_var2  = 0;
    IP_var4  = 0; 
    IP_var3  = 0; 
    
    IP_Stop1 = 0; 
    IP_Stop2 = 0; 
    IP_Stop4 = 0; 
    IP_Stop3 = 0; 
    
    ind      = 0;
    
    function conta_all(str_range){ 
        arr_ip = str_range.split(';'); 
    		//------ Primo range
    		ind    = 0;
    		conta_single_range(arr_ip[ind]);
    		//------ Conta
    		conta();
    } // function conta_all(str_range)
    
    
    function conta_single_range(str_range2){ 
        ar_range  = str_range2.split('-'); 
        start_ip  = ar_range[0]; 
        stop_ip   = ar_range[1]; 
        byt_start = start_ip.split('.'); 
        byt_stop  = stop_ip.split('.'); 
        //----------- Parte variabile
    		IP_var1   = byt_start[0]; 
        IP_var2   = byt_start[1];			
    		IP_var3   = byt_start[2]; 
        IP_var4   = byt_start[3];	
    	  //----------- Fine del ciclo
    	 	IP_Stop1  = byt_stop[0]; 
        IP_Stop2  = byt_stop[1]; 		
    	 	IP_Stop3  = byt_stop[2]; 
        IP_Stop4  = byt_stop[3]; 		
    		
    		// ip_str    = byt_start[0]+"."+byt_start[1]; 
    } // function conta_single_range(str_range2)
    
    function getIP_var() {
     return IP_var1+'.'+IP_var2+'.'+IP_var3+'.'+IP_var4;
    } // function getIP_var()
    
    function getIP_Stop() {
     return IP_Stop1+'.'+IP_Stop2+'.'+IP_Stop3+'.'+IP_Stop4;
    } // function getIP_Stop()
    
    
    function getLongIP_var() {
     return getSLongIP(IP_var1)+'.'+getSLongIP(IP_var2)+'.'+getSLongIP(IP_var3)+'.'+getSLongIP(IP_var4);
    } // function getIP_var()
    
    function getLongIP_Stop() {
     return getSLongIP(IP_Stop1)+'.'+getSLongIP(IP_Stop2)+'.'+getSLongIP(IP_Stop3)+'.'+getSLongIP(IP_Stop4);
    } // function getIP_Stop()
    
    function getSLongIP(aValue) {
     a = new String();
     a = aValue.toString();
     if (a.length == 1) {
      ret = "00"+a;
    	return ret;
     } // if (a.length == 1)
     if (a.length == 2) {
      ret = "0"+a;
    	return ret;
     } // if (a.length == 2)
     if (a.length == 3) {
      ret = a;
    	return ret;
     } // if (a.length == 3) 
    } // function getSLongIP(aValue)
    
    function incIP_var() {
     //----- Incremento 4° IP
     IP_var4++ ; 
     if (IP_var4 > 255) {
      IP_var3++;
    	IP_var4 = 0;
     } // if (IP_var4 > 255)
     
     //----- Incremento 3° IP
     if (IP_var3 > 255) {
      IP_var2++;
    	IP_var3 = 0; 
     } //  if (IP_var3 > 255)
     
     //----- Incremento 2° IP
     if (IP_var2 > 255) {
      IP_var1++;
    	IP_var2 = 0; 
     } //  if (IP_var2 > 255)
      
    } // function incIP_var()
    
    function conta() { 
     if (getLongIP_var() >  getLongIP_Stop()) {
    	if (ind >= arr_ip.length-1) {
    	 //------- Se tutti i range sono stati trattati mi fermo
    	 return;
    	} else {
       //------- Passo al range successivo
    	 ind++;
    	 conta_single_range(arr_ip[ind]);
    	} //if (ind > arr_ip.length-1) 
     } // if (IP_var4 == IP_Stop4)
     
     document.getElementById('range_count').innerHTML= "Sfoglia il gruppo" + "
    "+getIP_var(); 
     incIP_var();
    
     setTimeout("conta()",200);
    } // function conta()
    
    
    
    
    //uso della funzione 
    conta_all("192.168.0.250-192.168.1.20;192.168.3.1-192.168.3.40");
    
    
    
    //-->
    </script>
    
    </body>
    </html>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    funziona bene solo che il 3 byte passa da 1 a 3 immediatamente
    nel senso salta tipo da 192.168.1.20 a 192.168.3.1...

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da stiffa
    funziona bene solo che il 3 byte passa da 1 a 3 immediatamente
    nel senso salta tipo da 192.168.1.20 a 192.168.3.1...
    Mi puoi dare un esempio ?
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2005
    Messaggi
    2,125
    te lo ho scritto
    salta da 192.168.1.20 a 192.168.3.1...e da li va avanti.....

    non sfoglia i range 192.168.2.XXX

  9. #9
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Originariamente inviato da stiffa
    te lo ho scritto
    salta da 192.168.1.20 a 192.168.3.1...e da li va avanti.....

    non sfoglia i range 192.168.2.XXX
    Siccome non sono a casa mia, ho ripreso il codice da me postato senza fare nessuna modifica.

    //uso della funzione
    conta_all("192.168.1.20-192.168.3.1");

    Funziona benissimo. Ho visto sfogliare gli indirizzi :
    da 192.168.1.20 a 192.168.1.255
    poi da 192.168.2.1 a 192.168.2.255
    e infine 192.168.3.0 e 192.168.3.1
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

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.