• 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..?


  • ModSenior

    Si, puoi mandare codice html in output.
    Continuo a non capire perchè fai un ciclo che ti controlli tutti i nick, consumi risorse del server preziose senza motivo.
    Il ciclo è inutile, tu non devi scorrere tutta la tabella, ma controllare solo che ci sia un record che identifichi che l'utente che sta scrivendo un messaggio sia bannato.


  • User Attivo

    Sto provando nel togliere il while come dici te.. ma non mi funziona..non fa il controllo..fa cmq scrivere anche se si è bannati
    [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 id_user,bannato FROM minichat";

    if(mysql_num_rows(mysql_query("SELECT id_user,bannato FROM minichat WHERE id_user = 'bannato' ")) > 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+=':-+'">"
    ;
    }?>[/php]


  • ModSenior

    Ciao,

    [php]
    id_user = 'bannato'
    [/php]

    Credo che dovevi mettere una variabile avente come valore, il nick dell'utente.


  • User Attivo

    ok provo ad inserire il nick una variabile..:)


  • User Attivo

    Continua a non funzionare...il nick anche se bannato continua scrivere

    [php]
    $sql_select="SELECT id_user,bannato FROM minichat";

    $nick='id_user';
    if(mysql_num_rows(mysql_query("SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ")) > 0)
    die('Sei bannato');

    [/php]

    sto facendo un casino di prove....

    [php]
    $sql_select="SELECT id_user,bannato FROM minichat";

    $nick='id_user';
    if(mysql_num_rows(mysql_query("SELECT bannato FROM minichat WHERE id_user = '$nick' ")) > 0)
    die('Sei bannato');

    [/php]

    manco va...

    [php]
    $sql_select="SELECT id_user,bannato FROM minichat";

    $nick='id_user';
    if(mysql_num_rows(mysql_query("SELECT bannato FROM minichat WHERE bannato = '$nick' ")) > 0)
    die('Sei bannato');

    [/php]


  • ModSenior

    Stampa la query:
    [php]
    echo "SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ";
    [/php]


  • User Attivo

    aggiungendo quest query mi da un errore else

    [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 id_user,bannato FROM minichat";

    $nick='id_user';
    if(mysql_num_rows(mysql_query("SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ")) > 0)
    die('Sei bannato');
    echo "SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ";

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

    syntax error, unexpected T_ELSE in /membri/italiawebchat/minichat.php


  • ModSenior

    Ciao,

    L'else che usi, viene usato per qualche if? Vedo un solo if, a cui mancano le parentesi e di conseguenza considera solo la riga successiva.


  • User Attivo

    Ok...ho riordinato un po lo script...e ora non mi da nessun errore...

    [php]
    <?php
    //Apro la sessione e...
    session_start();
    // Sessione impostata a 10 min
    ini_set('session.gc_maxlifetime', '1800');

    include "config.php"; // file di connessione al Db

    //verifico che dopo il login io abbia la chiave di sessione ad 1
    if($_SESSION['logged']==1)

    //se si... mostra il form per linvio dei messaggi
    echo "<form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="36"></textarea>
    <input type="submit" value="Invia"><br>
    <img src="bold.gif" OnClick="document.chat.text.value+='****'">
    <img src="italic.gif" OnClick="document.chat.text.value+='**'">
    <img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
    <img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"

    ;
    //altrimenti fai questo...
    else
    echo 'Mi dispiace ma per partecipare alla <br>chat devi prima iscriverti';
    //mi collego alla tabelle che contiene i nick bannati
    $sql_select="SELECT id_user,bannato FROM minichat";

    $nick='id_user';
    if(mysql_num_rows(mysql_query("SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ")) > 0)
    die('Sei bannato');
    echo "SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ";

    ?>[/php]counque con la stringa
    [php]

    echo "SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ";

    [/php]mi stampa a video SELECT id_user,bannato FROM minichat WHERE id_user = 'id_user'
    </form>
    </div>
    quindi mi sa che la variabile nick non mi recupera nulla


  • ModSenior

    Quindi la query è giusta.
    Il controllo se è bannato non devi farlo prima di mostrare il modulo?


  • User Attivo

    si...ma io dovrei mostare il modulo per l invio dei messaggi ai solo loggati...:?


  • ModSenior

    [php]
    <?php
    //Apro la sessione e...
    session_start();
    // Sessione impostata a 10 min
    ini_set('session.gc_maxlifetime', '1800');

    include "config.php"; // file di connessione al Db

    //verifico che dopo il login io abbia la chiave di sessione ad 1
    if($_SESSION['logged']==1)

    //se si... mostra il form per linvio dei messaggi
    echo "<form action="index.php" name="chat" method="POST">
    <textarea rows="2" name="text" cols="36"></textarea>
    <input type="submit" value="Invia"><br>
    <img src="bold.gif" OnClick="document.chat.text.value+='****'">
    <img src="italic.gif" OnClick="document.chat.text.value+='**'">
    <img src="faccine/smile.gif" OnClick="document.chat.text.value+=':-)'">
    <img src="faccine/faccia.gif" OnClick="document.chat.text.value+=':-+'">"

    ;
    elseif(mysql_num_rows(mysql_query("SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ")) > 0)
    die('Sei bannato');
    //altrimenti fai questo...
    else
    echo 'Mi dispiace ma per partecipare alla <br>chat devi prima iscriverti';
    //mi collego alla tabelle che contiene i nick bannati
    $sql_select="SELECT id_user,bannato FROM minichat";

    ?>
    [/php]

    $nick deve avere come valore l'id/nick dell'utente che visita la pagina altrimenti come fai a stabilire se è bannato? Mi sono accorto solo ora che dai una costante fissa alla query, visto che la variabile assume un solo valore indipendentemente dall'utente che visualizza la pagina.


  • User Attivo

    quindi per dare il nome utente alla variabile $nick devo per forza fare un ciclo che controlli il record "id_user" che contiene il nick di chi scrive e ricavarmi il nome del nick stesso...giusto?


  • ModSenior

    Il nick non è salvato in una variabile di sessione/cookie?


  • User Attivo

    No.
    Questa è la pagina minichat2 su cui io poi mostro a video i dati provenienti da minichat 1 che contiene il form per l inviod ei messaggi

    [PHP]
    <?
    include "config.php"; // file di connessione al Db

    $sql_select="SELECT id_user, testo,tempo FROM minichat ORDER BY id DESC LIMIT 10";
    $query_select= @mysql_query($sql_select) or die (mysql_error());

    while($row=mysql_fetch_array($query_select))
    {
    $row['testo'] = str_replace(":-)", "<img_src='/faccine/smile.gif'>", $row['testo']);

    $row['testo'] = str_replace(":-+", "<img_src='/faccine/faccia.gif'>", $row['testo']);

    $row['testo'] =str_replace("**","<strong>",$row['testo']);

    $row['testo'] = str_replace("**","</strong>",$row['testo']);

    $row['testo'] = str_replace("*","<em>",$row['testo']);

    $row['testo'] = str_replace("*","</em>",$row['testo']);

    $stringa=$row['testo'];

    $nuova_stringa = wordwrap($stringa, 48, "<br />\n");
    

    $nuova_stringa = str_replace("<img_src", "<img src", $row['testo']);

    echo"<table>

    <th colspan="2">Messaggi</th>

    </table>

    </div></td>
    </tr>
    </table>
    </div>
    ".$row['id_user'].": </td><td>".$nuova_stringa."</td><td>".$row['tempo']."</tr>";

    }
    ?>
    [/PHP]
    il tutto è recuperato da un ciclo while..pure il nick


  • ModSenior

    Scusa, ma nella pagina di invio, come fai a passare alla query di insert l'id/nick dell'utente che ha postato il messaggio se non hai questa informazione?


  • User Attivo

    Scusami ho fatto confusione...il form per l invio dei messaggi punta index.php
    che sarebbe questa
    [PHP]
    <?

    include "minichat.php";
    include "config.php";
    if(isset($_POST)){

    $id_user="";
    $text="";

    $id_user=$_SESSION['nickname'];

    $text=htmlentities($_POST['text']);

    if ((empty($text))== false) // se $text non è vuoto o nullo
    {
    $sql = "INSERT INTO minichat (id_user, testo,tempo) VALUES ('$id_user','$text',CURRENT_TIME())";
    $query= @mysql_query ($sql) or die (mysql_error());

    $recuperoid=mysql_insert_id();
    $trim_id=$recuperoid-60;

    $sql_delete="DELETE FROM minichat WHERE id<'$trim_id'";
    $query= @mysql_query ($sql_delete) or die (mysql_error());

    }
    }else{
    }
    [/PHP]

    come variabile che recupera il nick c'è $_SESSION['nickname'] ...
    dovrei usare questa..