- Home
- Categorie
- Coding e Sistemistica
- Coding
- Creare un sistema di ban su minichat
-
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..?
-
Cosa ti stampa quell'echo?
Deve stampare il numero di record che trova, qundi dire se è bannato o no.
-
Non mi stampa nulla...non mi esce nessun numero..esce la pagina normale come è esempre uscita...:bho:
-
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..?
-
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.
-
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]
-
Ciao,
[php]
id_user = 'bannato'
[/php]Credo che dovevi mettere una variabile avente come valore, il nick dell'utente.
-
ok provo ad inserire il nick una variabile..:)
-
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]
-
Stampa la query:
[php]
echo "SELECT id_user,bannato FROM minichat WHERE id_user = '$nick' ";
[/php]
-
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
-
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.
-
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
-
Quindi la query è giusta.
Il controllo se è bannato non devi farlo prima di mostrare il modulo?
-
si...ma io dovrei mostare il modulo per l invio dei messaggi ai solo loggati...:?
-
[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.
-
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?
-
Il nick non è salvato in una variabile di sessione/cookie?
-
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
-
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?