• User Attivo

    Creare un sistema di ban su minichat

    Salve a voi tutti,
    sto creando una minichat interna al mio sito su cui possono scrivere soltanto gli utenti registrati.
    Ora vorrei fare in modo di poter fare un sistema che mi consenta di bannare gli utenti scorretti della minichat...come potrebbe essere realizzata la cosa?

    Grazie come sempre:)


  • ModSenior

    Ciao carlitos1982,
    Puoi inserire i nick bannati in una tabella e al momento che l'utente invia un messaggio, controllare che questi non sia stato bannato.


  • User Attivo

    Quindi,dovrei crearmi due pagine,cioè...
    una su cui siano presenti tutti i nick iscritti al sito..con di fianco un campo imput che se selezionato mi consenti di recuperare il nome del nick e di inserirlo nella tabella "bannati".
    Poi nel form della minichat che consente di inviare i messaggi inserisco un controllo che verifichi se sia presente il nick nella tabella "bannati"...se si potrei impostare un messaggio "sei stato bannato dalla chat,riprova piu' tardi!",invece se no consentire di poter scrivere.
    Giusto?
    Un altra cosa...nella prima pagina con la lista dei nick con il campo imput..siccome vorrei rendere questa pagina visibile solo a me dovrei impostare un controllo che dovrebbe non solo verificare che l utente sia loggato ma che il nick corrisponda al mio....dico bene?Altrimenti poi la pagina sarebbe visibile a chiunque fosse loggato e conoscesse il nome della pagina:(


  • ModSenior

    A che ti serve una pagina con tutti i nick? Ti basta controllare che il nick che è salvato ina una variabile di sessione non sia bannato dalla chat.
    Per la pagina di amministrazione, ovviamente devi proteggerla.


  • User Attivo

    La pagina con i nick mi servirebbe per inserire nel database alla tabella"bannati" il nick che voglio bannare..altrimenti questi nick che voglio bannare dovrei inserirli manualmente nel database o sbaglio..?:?


  • ModSenior

    Beh se ti fai un modulo dove inserisci il nick, e il nick ti va a finire direttamente nella tabella bannati non è la stessa cosa?


  • User Attivo

    Si:)
    ed è anche piu' sbrigativo:D
    Ovviamente anche questa pagina deve esser protetta....e su ciò vorrei chidere una cosa....come faccio a rendere accessibile la pagina solo a me...e non a tutti gli iscritti..?


  • ModSenior

    Un form di login, oppure la proteggi con un file htaccess.


  • User Attivo

    Ok,opto per la prima soluzione:)
    Ora che ho le idee piu' chiare comincio col progettare il tutto..:wink3:


  • User Attivo

    Ok...ho creato tutto ciò che riguarda il modulo riguardante i nick da banner e fatto in modo che il tutto sia accessibile solo da me...

    Ora velocemente sono passato alla pagina minichat.php che contiene ilform per l invio dei messaggi inserendo il controllo che mi hai detto..

    [php]
    <?php
    //Apro la sessione e...
    session_start();
    // Sessione impostata a 10 min
    ini_set('session.gc_maxlifetime', '1800');
    //verifico che dopo il login io abbia la chiave di sessione ad 1
    if($_SESSION['logged']==1)

    //se si...
    include "config.php"; // file di connessione al Db
    //mi collego alla tabelle che contiene i nick bannati
    $sql_select="SELECT bannati FROM utenti ";
    $query_select= @mysql_query($sql_select) or die (mysql_error());

    while($row=mysql_fetch_array($query_select))
    //recupero i nomi dei nick bannati
    $stringa=$row['bannati'];
    //controllo se il nickname di chi scrive e uguale al nick presente nella variabile$stringa
    if($_SESSION[nickname]=='$stringa')
    echo "sei stato bannato";
    else {
    echo "<form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="26"></textarea>
    <div id="invia"><input type="submit" value="Invia"></div><br>
    <img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
    <img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
    ;
    }?>
    </div></form>
    [/php]Non mi funziona...il nick che ho provato a bannare continua a scrivere...quindi che il controllo che ho impostato non funziona..


  • ModSenior

    Ciao,
    Credo che hai fatto la cosa più complessa di quanto lo sia realmente.
    Tu hai aggiunto un campo alla tabella utenti.
    Sopra parlavamo di crearne una con i soldi bannati, e controlla che l'utente sia bannato.
    Che mi sembra più semplice e che consumi meno risorse.


  • User Attivo

    Si,infatti quella tabella utenti che ho creato contiene solo il campo bannati,cioè sarebbe a tabella in cui vanno vanno a finire gli utenti che voglio bannare.
    Poi ho recuperato il nickname e fatto un confronto con il campo recuperato tramite query...ma non mi funziona:?


  • ModSenior

    Allora non è più semplice fare:
    [php]
    if(mysql_num_rows(mysql_query("SELECT bannati FROM utenti WHERE nickname = '$_SESSION[nickname]'")) > 0)
    die('Sei bannato');
    [/php]


  • User Attivo

    Nulla da fare continua a non funzionare...anche se il nick è bannato continua a scrivere
    [PHP]
    <?php
    //Apro la sessione e...
    session_start();
    // Sessione impostata a 10 min
    ini_set('session.gc_maxlifetime', '1800');
    //verifico che dopo il login io abbia la chiave di sessione ad 1
    if($_SESSION['logged']==1)

    //se si...
    include "config.php"; // file di connessione al Db
    //mi collego alla tabelle che contiene i nick bannati
    $sql_select="SELECT bannati FROM utenti ";

    $query_select= @mysql_query($sql_select) or die (mysql_error());

    if(mysql_num_rows(mysql_query("SELECT bannati FROM utenti WHERE nickname = '$_SESSION[nickname]'")) > 0)
    die('Sei bannato');

    else {
    echo "<form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="26"></textarea>
    <div id="invia"><input type="submit" value="Invia"></div><br>
    <img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
    <img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
    ;
    }?>
    </div></form>[/PHP]


  • ModSenior

    Se fai:
    [php]
    echo mysql_num_rows(mysql_query("SELECT bannati FROM utenti WHERE nickname = '$_SESSION[nickname]'"));
    [/php]
    Dovrebbe dare 0, quindi o la varaibile di sessione non ha valore, oppure non c'è un record che indichi che quel nick è bannato.


  • User Attivo

    Ho inserito la stringa che mi hai dato te.. ma non mi da nessun 0:?


  • User Attivo

    Allora,ho pensato di fare un altra cosa...per la minichat ho una taballa in cui ho già un recordi che mi recupera il nickname di chi scrive,in questa stessa tabella potrei inserire il record bannati e fare il controllo frail record 'id_user' che mi contiene il nick di chi scrive e quello 'bannati' ...si..?


  • ModSenior

    Cosa ti stampa quell'echo?
    Deve stampare il numero di record che trova, qundi dire se è bannato o no.


  • User Attivo

    Non mi stampa nulla...non mi esce nessun numero..esce la pagina normale come è esempre uscita...:bho:


  • User Attivo

    Ok,ho risolto facendo cosi'
    [php]
    <?php
    //Apro la sessione e...
    session_start();
    // Sessione impostata a 10 min
    ini_set('session.gc_maxlifetime', '1800');
    //verifico che dopo il login io abbia la chiave di sessione ad 1
    if($_SESSION['logged']==1)

    //se si...
    include "config.php"; // file di connessione al Db
    else "Devo loggarti";
    //mi collego alla tabella minichat che contiene i due campi che mi interessano
    $sql_select="SELECT id_user,bannato FROM minichat";

    $query_select= @mysql_query($sql_select) or die (mysql_error());
    while($row=mysql_fetch_array($query_select))
    //recupero i nomi dei nick
    $stringa=$row['id_user'];
    //qui' avviene il confronto
    if(mysql_num_rows(mysql_query("SELECT bannato FROM minichat WHERE bannato = '$stringa'")) > 0)
    die('Sei bannato');

    else {
    echo "<form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="26"></textarea>
    <div id="invia"><input type="submit" value="Invia"></div><br>
    <img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
    <img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"
    ;
    }?>
    </div></form>
    [/php]Ora non mi resta che creare un altro piccolo form che mi consenta non solo di aggiungere i nick che voglio bannarea ma anche di cancellarli dal ban;)

    Grazie Thedarkita:)

    un ultima cosa..questa parte di codice qui'
    [PHP]
    die('Sei bannato');
    [/PHP]
    può essere ancora modificabile??nel senso posso implentarci dentro del codice html o un immagine..?