Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    Pulsante invertitore di scritta

    Salve a tutti!
    A me servirebbe uno script php un po' complesso che cercherò di spiegare al meglio.
    Ci deve essere un pulsante che possono cliccare solo due persone che vengono identificate con il loro ip della rete (io e un'altro) per gli altri il pulsante rimarrà in disabled. Cliccando su questo famoso pulsantino una scritta di fianco cambia: Server Acceso (colore verde) Server Spento (colore rosso). Il problema è che quando si ricarica la pagina bisogna mantenere l'ultima informazione data se lo setto spento quando ricarico deve essere visualizzata la scritta spento capito?
    Come posso fare?

  2. #2
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    php+ajax+mysql per memorizzare gli stati del pulsante
    If you think your users are idiots, only idiots will use it. DropBox

  3. #3
    Sì, ok grazie ma il problema è che proprio non saprei da dove partire come codice di base ... mi potresti dare un consiglio?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Personalmente ti sconsiglio di utilizzare gli indirizzi IP per identificare gli utenti: se per esempio usi un proxy o riavvii il modem sarai identificato come un altro utente.

    Dopo questa piccola premessa, devi pensare ad una seconda cosa: gli indirizzi IP di questi due utenti li conosci e sai che rimarranno sempre quelli?

    Se la risposta è sì, puoi anche assegnarli manualmente ad una variabile (tra poco ti farò vedere come), altrimenti dovresti salvarli nel DB

    Veniamo al pulsante adesso.
    Per cominciare, hai bisogno di una tabella nel DB che salvi lo stato del server; penso possa bastare anche una cosa del genere:

    codice:
    ID_SERVER: mediumint(8) AUTO_INCREMENT
    STATUS: tinyInt(1)
    
    -------------------------------
    |    ID_SERVER   |   STATUS   | 
    -------------------------------
    |       1        |      1     |
    -------------------------------
    Il codice base per mostrare il tutto potrebbe essere qualcosa di simile:

    Codice PHP:
    /* Impostazioni predefinite
     * Il pulsante, all'inizio sarà sempre disattivo
     * Il server, all'inizio, sarà sempre offline
    */
    $toggleButton false;
    $serverStatus false;

    $sql mysql_query("SELECT `status` FROM `nome_tabella` WHERE `id` = '1'"); //Seleziono la riga nel DB relativa al server
    if(mysql_num_rows($sql)){ //Se la riga è presente
        
    $data mysql_fetch_assoc($sql);
        
    $serverStatus $data["status"]; //Memorizzo "nome_tabella"."status"
    }

    if(
    $_SERVER['REMOTE_ADDR'] == "IL TUO IP" || $_SERVER['REMOTE_ADDR']  == "IL SECONDO IP"//Se l'IP corrisponde
        
    $toggleButton true//Attivo il bottone
        
    if($toggleButton//Se il bottone è attivo lo mostro
        
    echo "<button>Cliccami</button>";
    else 
    //Altrimenti lo disabilito
        
    echo "<button disabled>Non puoi cliccarmi</button>";

    if(
    $serverStatus//Se il server è attivo
        
    echo "<span style=\"color:green\">Server Attivo</span>";
    else 
    //Se il server non è attivo
        
    echo "<span style=\"color:red;\">Server Spento</span>"
    Anche se ti consiglio di non mostrare proprio il bottone, se l'utente non è autorizzato. Com'è adesso chiunque potrebbe modificare l'HTML della pagina e cliccare ugualmente sul pulsante

    Fammi sapere se fino a qua hai domande, se va tutto bene continuo con i codici

    Thinker

  5. #5
    Grazie mille va tutto bene avrei un'unica domanda: qual'è l'altro modo senza mettersi a creare un'intero database con gli utenti qualificati per permessi di bloccare questo pulsante?
    Se creiamo un form in un'altra pagina che va a fare action su quest'altra con solo la scritta? Forse è meglio Per il resto tutto chiare e tutto va bene
    se va tutto bene continuo con i codici
    penso che puoi continuare, grazie sei troppo gentile

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Uhm beh, di metodi ce ne sono tanti, ma dipende sempre dalle tue necessità
    Puoi distinguere gli utenti tramite IP come hai pensato inizialmente, ma come ti ho detto potrebbero esserci dei problemi usando proxy e cose di questo genere.
    Puoi usare i Cookie, per memorizzare le sessioni, ma l'utente andrebbe perso cambiando browser o facendo un po' di pulizia nel pc.
    Puoi usare un file di testo per memorizzare i dati principali, ma chiunque potrebbe vederlo e se punti ad avere molti utenti (o per lo meno più di 10 ) sarebbe poco pratico e insicuro.

    Il metodo migliore è senza dubbio affidarsi ad un DB, in modo da poter gestire bene tutto anche con mille utenti.

    Se il sito è un lavoro personale, e sai che lo userai soltanto tu, puoi lavorare in locale (ci sono centinaia di guide al riguardo), o semplicemente creare un cookie che conosci solo tu e mostrare determinati contenuti SOLO se quel cookie è presente. Ma se ci saranno molti utenti te lo sconsiglio vivamente

    Se creiamo un form in un'altra pagina che va a fare action su quest'altra con solo la scritta?
    E' proprio quel che volevo fare ^^ Quindi, nel codice precedente dovrai sostituire quel pulsante con un form che invia i dati alla pagina elabora.php. Di seguito il codice di quest'ultima, ma se hai problemi a creare il form dimmelo che posto subito

    Codice PHP:
    if($_SERVER['REQUEST_METHOD'] === 'POST'){ //Se l'utente arriva a questa pagina tramite un form
            
        
    $sql mysql_query("SELECT `status` FROM `nome_tabella` WHERE `id` = '1'"); //Seleziono la riga nel DB relativa al server 
        
    if(mysql_num_rows($sql)){ //Se la riga è presente 
            
    $data mysql_fetch_assoc($sql); 
            
    $serverStatus $data["status"]; //Memorizzo "nome_tabella"."status" 
        

            
        if(
    $serverStatus)
            
    $nuovoStatus 0;
        else
            
    $nuovoStatus 1;
            
        if(!
    mysql_query("UPDATE `nome_tabella` SET `status` =  '".$nuovoStatus."' WHERE `id` = '1';")) //Se si verifica un errore
            
    die(mysql_error()); //Interrompe la pagina e lo mostra
            
        
        
    if($nuovoStatus//Se il server è attivo 
            
    echo "<span style=\"color:green\">Server Attivo</span>"
        else 
    //Se il server non è attivo 
                
    echo "<span style=\"color:red;\">Server Spento</span>";

    In questo modo, a prescindere da cosa invia il form, la pagina elabora.php prende il valore attualmente presente nel DB e lo inverte.

  7. #7
    ok tutto perfetto ora però mi dovresti fare un riepilogo: codice del database, codice php pagina elaborazione e per il codice del pulsante che nome devo dare al bottone e che nome al form? Va bene un codice tipo questo?
    codice:
    <form method="POST" action="nome.php" name="???">
    <input type="submit" name="???" value="Cambia Stato"></form>
    che nome?
    Grazie e ciao!

  8. #8
    ah dimenticavo ultima cosa (scusate se riscrivo subito sotto ma non mi fa modificare il mio messaggio precedente dice che non ho i privilegi...): la tabella del database per favore mi potresti dare il codice completo con il nome e tutto da inserire in PhpMyAdmin su altervista in sql:
    Eseguendo query SQL sul server "localhost":
    hai capito cosa intendo? inoltre mi spieghi quale voce devo modificare per inserire il nome del mio database?
    Grazie tante e scusa se ti sto facendo impazzire!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    227
    Se non ricordo male, su Altervista puoi avere un solo DB per ogni account. E inoltre non credo ci sia la necessità di avere più Db per un sito del genere
    I codici finali dovrebbe essere circa così:

    SQL Vai in PhpMyAdmin, clicca su SQL (o Esegui SQL) e incolla:

    codice:
    CREATE TABLE `lista_server` (
      `id` mediumint(8) NOT NULL AUTO_INCREMENT,
      `status` tinyint(1) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
    
    
    INSERT INTO `lista_server` (`id`, `status`) VALUES (1, 1);
    In questo modo, tutti i server saranno memorizzati in questa tabella, dove la colonna 'status' può avere come valori 0=Spento o 1=Acceso, e la colonna ID incrementa il suo valore automaticamente ogni volta che inserisci un nuovo server. Volendo puoi aggiungere la colonna "nome del server", se ne hai bisogno

    Pagina status.php
    Codice PHP:
    /* Impostazioni predefinite 
     * Il pulsante, all'inizio sarà sempre disattivo 
     * Il server, all'inizio, sarà sempre offline 
    */ 
    $toggleButton false
    $serverStatus false

    $sql mysql_query("SELECT `status` FROM `lista_server` WHERE `id` = '1'"); //Seleziono la riga nel DB relativa al server 
    if(mysql_num_rows($sql)){ //Se la riga è presente 
        
    $data mysql_fetch_assoc($sql); 
        
    $serverStatus $data["status"]; //Memorizzo "lista_server"."status" 


    if(
    $_SERVER['REMOTE_ADDR'] == "IL TUO IP" || $_SERVER['REMOTE_ADDR']  == "IL SECONDO IP"//Se l'IP corrisponde 
        
    $toggleButton true//Attivo il bottone 
         
    if($toggleButton//Se il bottone è attivo lo mostro 
        
    echo "<form name=\"toggleServer\" method=\"post\" action=\"./elabora.php\"><input type=\"submit\" value=\"1\" name=\"sendUpdate\" /></form>"
    else 
    //Altrimenti lo disabilito 
        
    echo "<button disabled>Non puoi cliccarmi</button>"
    Pagina elabora.php
    Codice PHP:
    if($_SERVER['REQUEST_METHOD'] === 'POST'){ //Se l'utente arriva a questa pagina tramite un form 
        
        
    if((!isset($_POST["sendUpdate"])) || (empty($_POST["sendUpdate"]))) // Per prevenire l'errore undefined index, inizializzo la variabile nel caso in cui sia vuota
            
    $_POST["sendUpdate"] = false;
            
           if(
    $_POST["sendUpdate"]){
            
    $sql mysql_query("SELECT `status` FROM `lista_server` WHERE `id` = '1'"); //Seleziono la riga nel DB relativa al server  
            
    if(mysql_num_rows($sql)){ //Se la riga è presente  
                
    $data mysql_fetch_assoc($sql);  
                
    $serverStatus $data["status"]; //Memorizzo "lista_server"."status"  
            
    }  
                 
            if(
    $serverStatus
                
    $nuovoStatus 0
            else 
                
    $nuovoStatus 1
                 
            if(!
    mysql_query("UPDATE `lista_server` SET `status` =  '".$nuovoStatus."' WHERE `id` = '1';")) //Se si verifica un errore 
                
    die(mysql_error()); //Interrompe la pagina e lo mostra 
                 
             
            
    if($nuovoStatus//Se il server è attivo  
                
    echo "<span style=\"color:green\">Server Attivo</span>";  
            else 
    //Se il server non è attivo  
                    
    echo "<span style=\"color:red;\">Server Spento</span>"
        }



  10. #10
    Uffi... fino alla cosa dell'ip ci siamo però poi quando clicco il bottone nada dice:
    Nessun Database Selezionato
    Cosa manca da modificare? I codici sono identici ai tuoi a parte gli ip che ho messo e naturalmente ho creato la tabella nel database Come mai?

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.