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


  • ModSenior

    Si devi usare $_SESSION['nickname'] per la query.


  • User Attivo

    Continua far scrivere anche chi è bannato

    [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 = '".$_SESSION['nickname'] ."'.")) > 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]


  • ModSenior

    Cao,
    Vedo un punto nella query, quindi credo che la query ti dia errore.
    Prova a stamparla, e ad eseguirla dal phpmyadmin, per vedere se la query va bene o il problema è la query.


  • User Attivo

    Ok,
    allora sono andato su phpmyadmin e ho digitato questa query
    [PHP]
    "SELECT id_user,bannato FROM minichat WHERE id_user = '".$_SESSION[ 'nickname']. "'."
    [/PHP]
    </span></span>
    mi da questo errore..
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"SELECT id_user,bannato FROM minichat WHERE id_user = '".$_SESSI

    stranamente però lanciando lo script da remoto non mi da nessun errore..
    ho provato anche questa query
    [PHP]
    "SELECT id_user,bannato FROM minichat WHERE id_user = '".$_SESSION[ 'nickname']. "'"[/PHP]</span></span>
    stesso errore di prima...
    questi errori però me li da sul phpmyadmin mentre se lancio lo script non mi da nessun errore


  • ModSenior

    Devi fare un echo, e usare far eseguire quello in phpmyadmin.
    Phpmyadmin non può prenderti la variabile di sessione.