- Home
- Categorie
- Coding e Sistemistica
- Coding
- Creare un sistema di ban su minichat
-
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?
-
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..
-
Si devi usare $_SESSION['nickname'] per la query.
-
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]
-
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.
-
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 = '".$_SESSIstranamente 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
-
Devi fare un echo, e usare far eseguire quello in phpmyadmin.
Phpmyadmin non può prenderti la variabile di sessione.