Ciao mi servirebbe una mano a modificare alcune cose di una chat...
chi mi puo dare una mano...
Ciao mi servirebbe una mano a modificare alcune cose di una chat...
chi mi puo dare una mano...
Che tipo di chat è?
Ha un nome specifico???
Fornisci maggiori informazioni e vedremo cosa si potrà fare
Vi elenco cosa devo fare...
ringrazio chi mi aiuterà
1)la formattazione del testo come qui su altervista quando uno mette un messaggio
tipo la impossibilita di mettere immagini o di modificare il colore del testo
2)se uno scrive un link tipo www.altervista.org la possibilità che si apra la pagina
3)al momento del login quando uno mette un link volevo fare in modo
che 2 persone con lo stesso nome non potevano scrivere (ma non voglio usare il db)...
4)a destra della chat di mettere tutti gli utenti connessi in chat
5)quando un utente fa il sulla pagina che succeda un avvertimento
tipo la chat sul genere di msn
posto i codici...
index.php
message.phpCodice PHP:
<?php
session_start();
function createForm(){
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table align="center">
<tr><td colspan="2">Please eneter a nickname to login!</td></tr>
<tr><td>Your name: </td>
<td><input class="text" type="text" name="name" /></td></tr>
<tr><td colspan="2" align="center">
<input class="text" type="submit" name="submitBtn" value="Login" />
</td></tr>
</table>
</form>
<?php
}
if (isset($_GET['u'])){
unset($_SESSION['nickname']);
}
// Process login info
if (isset($_POST['submitBtn'])){
$name = isset($_POST['name']) ? $_POST['name'] : "Unnamed";
$_SESSION['nickname'] = $name;
}
$nickname = isset($_SESSION['nickname']) ? $_SESSION['nickname'] : "Hidden";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Micro Chat</title>
<link href="style/style.css" rel="stylesheet" type="text/css" />
<script language="javascript" type="text/javascript">
<!--
var httpObject = null;
var link = "";
var timerID = 0;
var nickName = "<?php echo $nickname; ?>";
// Get the HTTP Object
function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Your browser does not support AJAX.");
return null;
}
}
// Change the value of the outputText field
function setOutput(){
if(httpObject.readyState == 4){
var response = httpObject.responseText;
var objDiv = document.getElementById("result");
objDiv.innerHTML += response;
objDiv.scrollTop = objDiv.scrollHeight;
var inpObj = document.getElementById("msg");
inpObj.value = "";
inpObj.focus();
}
}
// Change the value of the outputText field
function setAll(){
if(httpObject.readyState == 4){
var response = httpObject.responseText;
var objDiv = document.getElementById("result");
objDiv.innerHTML = response;
objDiv.scrollTop = objDiv.scrollHeight;
}
}
// Implement business logic
function doWork(){
httpObject = getHTTPObject();
if (httpObject != null) {
link = "message.php?nick="+nickName+"&msg="+document.getElementById('msg').value;
httpObject.open("GET", link , true);
httpObject.onreadystatechange = setOutput;
httpObject.send(null);
}
}
// Implement business logic
function doReload(){
httpObject = getHTTPObject();
var randomnumber=Math.floor(Math.random()*10000);
if (httpObject != null) {
link = "message.php?all=1&rnd="+randomnumber;
httpObject.open("GET", link , true);
httpObject.onreadystatechange = setAll;
httpObject.send(null);
}
}
function UpdateTimer() {
doReload();
timerID = setTimeout("UpdateTimer()", 5000);
}
function keypressed(e){
if(e.keyCode=='13'){
doWork();
}
}
//-->
</script>
</head>
<body onload="UpdateTimer();">
<div id="main">
<div id="caption">Micro Chat</div>
<div id="icon"> </div>
<?php
if (!isset($_SESSION['nickname']) ){
createForm();
} else {
$name = isset($_POST['name']) ? $_POST['name'] : "Unnamed";
$_SESSION['nickname'] = $name;
?>
<div id="result">
<?php
$data = file("msg.html");
foreach ($data as $line) {
echo $line;
}
?>
</div>
<div id="sender" onkeyup="keypressed(event);">
Your message: <input type="text" name="msg" size="30" id="msg" />
<button onclick="doWork();">Send</button>
</div>
<?php
}
?>
</div>
</body>
msg.htmlCodice PHP:
<?php
if (isset($_GET['msg'])){
if (file_exists('msg.html')) {
$f = fopen('msg.html',"a+");
} else {
$f = fopen('msg.html',"w+");
}
$nick = isset($_GET['nick']) ? $_GET['nick'] : "Hidden";
$msg = isset($_GET['msg']) ? htmlspecialchars($_GET['msg']) : ".";
$line = "<p><span class=\"name\">$nick: </span><span class=\"txt\">$msg</span></p>";
fwrite($f,$line."\r\n");
fclose($f);
echo $line;
} else if (isset($_GET['all'])) {
$flag = file('msg.html');
$content = "";
foreach ($flag as $value) {
$content .= $value;
}
echo $content;
}
?>
dove vengono salvati i dati
Per formattare il testo, come qui su altervista hai bisogno di javascript, e delle espressioni regolari in PHP. Per i link bastano solo delle espressioni regolari.
Posto alcune parti del codice che ho utilizzato per creare una mia chat...
Per usare questa funziona basta creare diversi bottoni, attrbuendogli l'evento onclick="tag('b')", poi ovviamente devi crearne altri con diverso tipo di tagCodice PHP:
<script type="text/javascript">
<!--
function tag(tipo) {
var obj = document.getElementById("msg");
var start = obj.selectionStart;
var end = obj.selectionEnd;
var str = obj.value.substr(start, end);
if(str != "") {
switch(tipo) {
case "b":
obj.value = obj.value.replace(str, "[b]" + str + "[/b]");
break;
case "s":
obj.value = obj.value.replace(str, "[s]" + str + "[/s]");
break;
/* continua tu per altri tag */
}
}
}
//-->
</script>
ma il testo va sottolineato se no non funziona...
Quello tocca a php farlo...
Codice PHP:
$cerca = array(
"/\[b\](.*?)\[\/b\]/",
"/\[s\](.*?)\[\/s\]/",
"/\[u\](.*?)\[\/u\]/",
"/\[url=\"(.*?)\"\](.*?)\[\/url\]/",
"/\[img\](.*?)\[\/img\]/",
"/(http:\/\/|www|[a-zA-Z0-9-]+\.|[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/"
);
$sostituisci = array(
"<b>\\1</b>",
"<s>\\1</s>",
"<u>\\1</u>",
"<a href=\"\\1\" target=\"_blank\">\\2</a>",
"<img src=\"\\1\" alt=\"\" />",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"
);
echo preg_replace($cerca, $sostituisci, $_GET["msg"]);
Ultima modifica di nokiagames : 12-06-2009 alle ore 13.14.18
Lo provato ma non sta funzionando...
lo messo dentro il file message.php
^^
Allora, prova così (message.php):
Codice PHP:
<?php
if (isset($_GET['msg'])){
if (file_exists('msg.html')) {
$f = fopen('msg.html',"a+");
} else {
$f = fopen('msg.html',"w+");
}
$cerca = array(
"/\[b\](.*?)\[\/b\]/",
"/\[s\](.*?)\[\/s\]/",
"/\[u\](.*?)\[\/u\]/",
"/\[url=\"(.*?)\"\](.*?)\[\/url\]/",
"/\[img\](.*?)\[\/img\]/",
"/(http:\/\/|www|[a-zA-Z0-9-]+\.|[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/"
);
$sostituisci = array(
"<b>\\1</b>",
"<s>\\1</s>",
"<u>\\1</u>",
"<a href=\"\\1\" target=\"_blank\">\\2</a>",
"<img src=\"\\1\" alt=\"\" />",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>"
);
$nick = isset($_GET['nick']) ? $_GET['nick'] : "Hidden";
$msg = isset($_GET['msg']) ? htmlspecialchars($_GET['msg']) : ".";
$msg = preg_replace($cerca, $sostituisci, $msg);
$line = "<p><span class=\"name\">$nick: </span><span class=\"txt\">$msg</span></p>";
fwrite($f,$line."\r\n");
fclose($f);
echo $line;
} else if (isset($_GET['all'])) {
$flag = file('msg.html');
$content = "";
foreach ($flag as $value) {
$content .= $value;
}
echo $content;
}
?>
non funziona XD perchè diventa
esempio
nomesito.altervista.org/www.google.it
Perchè manca http://
Quindi bisogna aggiungerlo manualmente alla stringa.
Il problema sta nel fatto che se viene inserito un link con http://, avrai un link simile a questo
http://http://www.google.it
Quindi bisogna modificare qualche altra cosa!
Prova...Codice PHP:
<?php
if (isset($_GET['msg'])){
if (file_exists('msg.html')) {
$f = fopen('msg.html',"a+");
} else {
$f = fopen('msg.html',"w+");
}
$cerca = array(
"/\[b\](.*?)\[\/b\]/",
"/\[s\](.*?)\[\/s\]/",
"/\[u\](.*?)\[\/u\]/",
"/\[url=\"(.*?)\"\](.*?)\[\/url\]/",
"/\[img\](.*?)\[\/img\]/",
"/(http:\/\/|www|[a-zA-Z0-9-]+\.|[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/",
"/http:\/\/http:\/\//"
);
$sostituisci = array(
"<b>\\1</b>",
"<s>\\1</s>",
"<u>\\1</u>",
"<a href=\"\\1\" target=\"_blank\">\\2</a>",
"<img src=\"\\1\" alt=\"\" />",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",
"http://"
);
$nick = isset($_GET['nick']) ? $_GET['nick'] : "Hidden";
$msg = isset($_GET['msg']) ? htmlspecialchars($_GET['msg']) : ".";
$msg = preg_replace($cerca, $sostituisci, $msg);
$line = "<p><span class=\"name\">$nick: </span><span class=\"txt\">$msg</span></p>";
fwrite($f,$line."\r\n");
fclose($f);
echo $line;
} else if (isset($_GET['all'])) {
$flag = file('msg.html');
$content = "";
foreach ($flag as $value) {
$content .= $value;
}
echo $content;
}
?>
Ultima modifica di nokiagames : 12-06-2009 alle ore 17.28.17
non funziona e non so il perchè...
niente lascia stare posso chiederti alcune cose che non so come fare...
la prima e nel login
voglio che quando l'utente mette il nome anche se scrive minuscolo o maiuscolo
il nome venga scritto solo la prima lettera maiuscola e poi tutto piccolo
e la seconda cosa come posso fare in modo che lui possa cambiare il tipo di font o colore del testo
Il codice di sopra l'ho modificato, avevo dimenticato uno slash finale. Prova ora e vedrai che funziona!!!
Allora per il login, non esiste niente di più semplice
Per il colore o tipo di font, intendi di creare dei tag per il font e per il colore?Codice PHP:
$_POST['name'] = ucfirst(strtolower($_POST['name']));
/* codice per il login.... */
EDIT: Per il form fai così:Codice PHP:
<?php
if (isset($_GET['msg'])){
if (file_exists('msg.html')) {
$f = fopen('msg.html',"a+");
} else {
$f = fopen('msg.html',"w+");
}
$cerca = array(
"/\[b\](.*?)\[\/b\]/",
"/\[s\](.*?)\[\/s\]/",
"/\[u\](.*?)\[\/u\]/",
"/\[url=\"(.*?)\"\](.*?)\[\/url\]/",
"/\[img\](.*?)\[\/img\]/",
"/(http:\/\/|www|[a-zA-Z0-9-]+\.|[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/",
"/http:\/\/http:\/\//",
"/\[font=(.*?)\](.*?)\[\/font\]/",
"/\[color\=(.*?)\](.*?)\[\/color\]/"
);
$sostituisci = array(
"<b>\\1</b>",
"<s>\\1</s>",
"<u>\\1</u>",
"<a href=\"\\1\" target=\"_blank\">\\2</a>",
"<img src=\"\\1\" alt=\"\" />",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",
"http://",
"<span style=\"font-size: \\1pt;\">\\2</span>",
"<span style=\"color: \\1;\">\\2</span>"
);
$nick = isset($_GET['nick']) ? $_GET['nick'] : "Hidden";
$msg = isset($_GET['msg']) ? htmlspecialchars($_GET['msg']) : ".";
$msg = preg_replace($cerca, $sostituisci, $msg);
$line = "<p><span class=\"name\">$nick: </span><span class=\"txt\">$msg</span></p>";
fwrite($f,$line."\r\n");
fclose($f);
echo $line;
} else if (isset($_GET['all'])) {
$flag = file('msg.html');
$content = "";
foreach ($flag as $value) {
$content .= $value;
}
echo $content;
}
?>
Codice HTML:<script type="text/javascript"> <!-- function size(n) { document.getElementById('msg').value += '[font='+n+'][/font]'; } function colore(hex) { document.getElementById('msg').value += '[color='+hex+'][/color]'; } //--> </script> <select> <option>Dimensione Carattere</option> <option onclick="size(6)">6</option> <option onclick="size(8)">8</option><option onclick="size(10)">10</option> <option onclick="size(12)">12</option><option onclick="size(14)">14</option> <option onclick="size(16)">16</option><option onclick="size(18)">18</option> </select> <select> <option>Colore Carattere</option> <option onclick="colore('#000000')" style="background-color:#000000">Nero</option> <option onclick="colore('blue')" style="background-color:blue">Blu</option> <option onclick="colore('#FF0000')" style="background-color:#FF0000">Rosso</option> <option onclick="colore('green')" style="background-color:green">Verde</option> <option onclick="colore('yellow')" style="background-color:yellow">Giallo</option> </select> <!-- altro codice -->
Ultima modifica di nokiagames : 12-06-2009 alle ore 17.58.08
$nick = $_GET['nick'] = ucwords(strtolower($_GET['nick']));
io ho fatto cosi non è meglio
ti ringrazio^^
per il cambio di colore cosa mi consigli come posso fare
L'ho scritto sopra, ho aggiunto qualche espressione regolare in message.php e il codice javascript e i vari tag per cambiare il carattere e colore.
il colore non funziona
la grandezza si...
come posso fare che quando si attiva la funziona tipo colore o grandezza il testo viene tutto selezionato
per il login
come posso fare per
if
se il campo e vuoto compare il messaggio di errore e si aggiorna la pagina
se nel campo ce scritto Inserire Nickname compare il messaggio di errore e si aggiorna la pagina
errore:<script type=\'text/javascript\'>alert(Nickname non valido!)</script>
Ultima modifica di hotmailpower : 12-06-2009 alle ore 19.58.50
Vorresti che la selezione venga "taggata"?
Se si devi modificare il codice che ti ho dato all'inizio.
E poi come ho detto sopra ti crei tanti bottoni tanti casi hai nello switch, ognuno con funzioni diverse ad esempio:Codice HTML:<script type="text/javascript"> <!-- function tag(tipo) { var obj = document.getElementById("msg"); var start = obj.selectionStart; var end = obj.selectionEnd; var str = obj.value.substr(start, end); switch(tipo) { case "b": obj.value = obj.value.replace(str, "[b]" + str + "[/b]"); break; case "s": obj.value = obj.value.replace(str, "[s]" + str + "[/s]"); break; case "font": var n = prompt("Inserisci la grandezza del testo", "12"); obj.value = obj.value.replace(str, "[font="+n+"][/font]"; break; case "color": var color = prompt("Inserisci il colore del testo", "red"); obj.value = obj.value.replace(str, "[color="+color+"][/color]"; break; } } //--> </script>
Codice HTML:<input type="button" onclick="tagga('b')" value="Grassetto" /> <input type="button" onclick="tagga('s')" value="Sbarrato" /> <input type="button" onclick="tagga('font')" value="Grandezza Testo" /> <input type="button" onclick="tagga('color')" value="Colore Testo" />
non funziona...
non fa niente ne seleziona^^
per il login
come posso fare per
if
se il campo e vuoto compare il messaggio di errore e si aggiorna la pagina
se nel campo ce scritto Inserire Nickname compare il messaggio di errore e si aggiorna la pagina
errore:<script type=\'text/javascript\'>alert(Nickname non valido!)</script>
Dipende da che browser stai utilizzando. Ho anche sbagliato funzione, nei bottoni ho messo tagga, quando la funzione è tag
Quindi dovrebbe essere così:
Per il login bisogna modificare la funzione createForm().Codice HTML:<input type="button" onclick="tag('b')" value="Grassetto" /> <input type="button" onclick="tag('s')" value="Sbarrato" /> <input type="button" onclick="tag('font')" value="Grandezza Testo" /> <input type="button" onclick="tag('color')" value="Colore Testo" />
Codice HTML:<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="login" onsubmit="return(controlla(this))"> <table align="center"> <tr><td colspan="2">Please eneter a nickname to login!</td></tr> <tr><td>Your name: </td> <td><input class="text" type="text" name="name" /></td></tr> <tr><td colspan="2" align="center"> <input class="text" type="submit" name="submitBtn" value="Login" /> </td></tr> </table> </form>Codice:// codice javascript.. function controlla(form) { if((form.name.value == "") ||(form.name.value == "Inserire Nickname")) { alert("Nickname non valido!"); window.location.reload(true); return false; } return true; }
sto diventanto scemo...
XD
ti posto i file modificati
index.php
dove l'utente chatta
login_chat.phpCodice PHP:
<? include("login_chat.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Chat</title>
<script type="text/javascript">
var httpObject = null;
var link = "";
var timerID = 0;
var nickName = "<?php echo $nickname; ?>";
// Get the HTTP Object
function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Your browser does not support AJAX.");
return null;
} }
// Change the value of the outputText field
function setOutput(){
if(httpObject.readyState == 4){
var response = httpObject.responseText;
var objDiv = document.getElementById("result");
objDiv.innerHTML += response;
objDiv.scrollTop = objDiv.scrollHeight;
var inpObj = document.getElementById("msg");
inpObj.value = "";
inpObj.focus();
} }
// Change the value of the outputText field
function setAll(){
if(httpObject.readyState == 4){
var response = httpObject.responseText;
var objDiv = document.getElementById("result");
objDiv.innerHTML = response;
objDiv.scrollTop = objDiv.scrollHeight;} }
// Implement business logic
function doWork(){
httpObject = getHTTPObject();
if (httpObject != null) {
link = "message.php?nick="+nickName+"&msg="+document.getElementById('msg').value;
httpObject.open("GET", link , true);
httpObject.onreadystatechange = setOutput;
httpObject.send(null);} }
// Implement business logic
function doReload(){
httpObject = getHTTPObject();
var randomnumber=Math.floor(Math.random()*10000);
if (httpObject != null) {
link = "message.php?all=1&rnd="+randomnumber;
httpObject.open("GET", link , true);
httpObject.onreadystatechange = setAll;
httpObject.send(null);
} }
function UpdateTimer() {
doReload();
timerID = setTimeout("UpdateTimer()", 5000);}
function keypressed(e){
if(e.keyCode=='13'){
doWork();} }
</script>
</head>
<body onLoad="UpdateTimer();">
<?
if (!isset($_SESSION['nickname']) ){
createForm();
} else {
$name = isset($_POST['name']) ? $_POST['name'] : "Utente";
$_SESSION['nickname'] = $name;
?>
<div id="logout" align="right">
<a href="?mode=exit" onclick="confirmClose('index.php');" title="Esci">
<font color="#FF0000">Esci</font></a></div>
<form name="inserisci" method="post" action="">
<table align="center" width="684" border="0" cellpadding="0" cellspacing="0">
<tr>
<td colspan="6">
<img src="immagini/chat_msn_01.png" width="684" height="60" alt=""></td>
</tr>
<tr>
<td colspan="3" rowspan="2">
<img src="immagini/chat_msn_02.png" width="619" height="47" alt=""></td>
<td colspan="2">
<img src="immagini/chat_msn_03.png" width="63" height="24" alt=""></td>
<td rowspan="6">
<img src="immagini/chat_msn_04.png" width="2" height="406" alt=""></td>
</tr>
<tr>
<td colspan="2">
<img src="immagini/chat_msn_05.png" width="63" height="23" alt=""></td>
</tr>
<tr>
<td rowspan="4">
<img src="immagini/chat_msn_06.png" width="178" height="359" alt=""></td>
<td colspan="3">
<div id="result">
<?$data = file("msg.html"); foreach ($data as $line) { echo $line; } ?>
</div>
</td>
<td rowspan="4">
<img src="immagini/chat_msn_08.png" width="16" height="359" alt=""></td>
</tr>
<tr>
<td colspan="3">
<input
class="messaggio" type="text" name="msg"
size="50" id="msg" value="Inserire Messaggio"
style="-moz-opacity:0.6;filter:alpha(opacity=60);"
onmouseover="cancellaTesto(this)" onmouseout="resetTesto(this)"
onmouseover="this.style.MozOpacity=2;this.filters.alpha.opacity=100"
onmouseout="this.style.MozOpacity=0.6;this.filters.alpha.opacity=60">
</td>
</tr>
<tr>
<td rowspan="2">
<img src="immagini/chat_msn_10.png" width="374" height="61" alt=""></td>
<td>
<input class="button1" type="button" name="submitBtn"
value="" onClick="doWork();"
style="-moz-opacity:0.3;filter:alpha(opacity=30);"
onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.MozOpacity=0.3;this.filters.alpha.opacity=30">
</td>
<td rowspan="2">
<img src="immagini/chat_msn_12.png" width="47" height="61" alt=""></td>
</tr>
<tr>
<td>
<img src="immagini/chat_msn_13.png" width="67" height="33" alt=""></td>
</tr>
</table>
</form>
<div align="center">
<img name="grassetto" border="0" src="img/bold.gif" alt="Grassetto"
onclick="tagga('b')"
style="-moz-opacity:0.3;filter:alpha(opacity=30);"
onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.MozOpacity=0.3;this.filters.alpha.opacity=30">
<img name="sottolineato" border="0" src="img/s.gif" alt="Sottolineato"
onClick="tag('u')"
style="-moz-opacity:0.3;filter:alpha(opacity=30);"
onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.MozOpacity=0.3;this.filters.alpha.opacity=30">
<img name="corsivo" border="0" src="img/c.gif" alt="Corsivo"
onClick="tag('i')"
style="-moz-opacity:0.3;filter:alpha(opacity=30);"
onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100"
onmouseout="this.style.MozOpacity=0.3;this.filters.alpha.opacity=30">
<? } ?>
</html>
</body>
utente prima fa il login
message.phpCodice PHP:
<? session_start(); function createForm(){ ?>
<script type="text/javascript">
#Controlla login chat
function controlla(form) {
if((form.name.value == "") ||(form.name.value == "Inserire Nickname")) {
alert("Nickname non valido!");
window.location.reload(true);
return false;}
return true;}
</script>
<form action="<?php echo $_server['php_self']; ?>" method="post" name="login" onsubmit="return(controlla(this))">
<table width="300" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td colspan="5">
<div class="img_login">
<div class="testo_login">
Inserisci il nickname per il login!
</div>
</div>
</td>
</tr>
<tr>
<td rowspan="4">
<img src="immagini/Immagine_02.gif" width="30" height="278" alt=""></td>
<td colspan="3">
<div class="img_user">
<input
class="testo_user" type="text" name="name" value="Inserire Nickname"
onfocus="cancellaTesto(this)" onblur="resetTesto(this)"
style="-moz-opacity:0.3;filter:alpha(opacity=30);"
onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100">
</div>
</td>
<td rowspan="4">
<img src="immagini/Immagine_04.gif" width="28" height="278" alt=""></td>
</tr>
<tr>
<td colspan="3">
<img src="immagini/Immagine_05.gif" width="242" height="184" alt=""></td>
</tr>
<tr>
<td rowspan="2">
<img src="immagini/Immagine_06.gif" width="85" height="70" alt=""></td>
<td>
<input class="button" type="submit" name="submitBtn" value=""
style="-moz-opacity:0.3;filter:alpha(opacity=30);"
onmouseover="this.style.MozOpacity=1;this.filters.alpha.opacity=100">
</td>
<td rowspan="2">
<img src="immagini/Immagine_08.gif" width="85" height="70" alt=""></td>
</tr>
<tr>
<td>
<img src="immagini/Immagine_09.gif" width="72" height="47" alt=""></td>
</tr>
</table>
</form>
<? }
if (isset($_GET['u'])){
unset($_SESSION['nickname']); }
// Process login info
if (isset($_POST['submitBtn'])){
$name = isset($_POST['name']) ? $_POST['name'] : "Utente";
$_SESSION['nickname'] = $name; }
$nickname = isset($_SESSION['nickname']) ? $_SESSION['nickname'] : "Hidden";
?>
Codice PHP:
<?php
$ora = date("H:i:s");
if (isset($_GET['msg'])){
if (file_exists('msg.html')) {
$f = fopen('msg.html',"a+");
} else {
$f = fopen('msg.html',"w+");}
$cerca = array(
"/\[b\](.*?)\[\/b\]/",
"/\[s\](.*?)\[\/s\]/",
"/\[u\](.*?)\[\/u\]/",
"/\[url=\"(.*?)\"\](.*?)\[\/url\]/",
"/\[img\](.*?)\[\/img\]/",
"/(http:\/\/|www|[a-zA-Z0-9-]+\.|[a-zA-Z0-9\.-]+@)(([a-zA-Z0-9-][a-zA-Z0-9-]+\.)+[a-zA-Z0-9-\.\/\_\?\%\#\&\=\;\~\!\(\)]+)/",
"/http:\/\/http:\/\//",
"/\[font=(.*?)\](.*?)\[\/font\]/",
"/\[color\=(.*?)\](.*?)\[\/color\]/"
);
$sostituisci = array(
"<b>\\1</b>",
"<s>\\1</s>",
"<u>\\1</u>",
"<a href=\"\\1\" target=\"_blank\">\\2</a>",
"<img src=\"\\1\" alt=\"\" />",
"<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",
"http://",
"<span style=\"font-size: \\1pt;\">\\2</span>",
"<span style=\"color: \\1;\">\\2</span>"
);
$nick = isset($_GET['nick']) ? $_GET['nick'] : "Hidden";
$nick = $_GET['nick'] = ucwords(strtolower($_GET['nick']));
$msg = isset($_GET['msg']) ? htmlspecialchars($_GET['msg']) : ".";
$msg = preg_replace($cerca, $sostituisci, $msg);
$line = "
<p>
<span class=\"name\">
$nick alle ore $ora scrive: </span>
<br>
<span class=\"txt\">$msg</span></p>";
fwrite($f,$line."\r\n");
fclose($f);
echo $line;
} else if (isset($_GET['all'])) {
$flag = file('msg.html');
$content = "";
foreach ($flag as $value) {
$content .= $value;
} echo $content; }
?>]
ora ti spiego cosa devo fare nel file login_chat.php
l'utente deve fare il login deve mettere un nome non puo essere Inserire nome
e deve controllare che non ci sia un altro utente con lo stesso nome
in caso lo avverte con un alert
deve che mette il nome e controlla che non ce ne sia uno uguale
stampa il nome in una tabella o fai tu con scritto
giovanni è online
poi nell file index.php
la possibilità al utente di personallizare la scritta con codici e inserimento di emoticons cosa mi consigli
e in fine quando un utente chiude la pagina o esce dalla finestra ci deve esse un messagio che gli dicce
sei sicuro che voi uscire se dice si il nome nella chat
giovanni è online scompare....
lo so che chiedo molto ma mi sai dare una mano ti ringrazioXD
Senza utilizzare un database mysql non sono in grado di aiutarti mi dispiace, diventa troppo complicata la cosa!!!
In index.php modifica questo tag:e in fine quando un utente chiude la pagina o esce dalla finestra ci deve esse un messagio che gli dicce
sei sicuro che voi uscire se dice si il nome nella chat
così:Codice HTML:<body onLoad="UpdateTimer();">
Codice HTML:<body onLoad="UpdateTimer();" onunload="return(confirm('sei sicuro che voi uscire'))">
ma usando il db pensi che si possa fare che ce la faresti^^...
Con il database, riuscirei subito a impostare offline un utente. Oppure cancellare i messaggi più vecchi di un giorno.
Per controllare su un utente ha già utilizzato un nickname ci sto pensando.
se ce la fai 6 un grande...XD
in codice che mi hai dato tu
<body onLoad="UpdateTimer();" onunload="return(confirm('sei sicuro che voi uscire'))">
se uno mette annula esce lo stesso..
Per controllare se un nickname è già utilizzato l'idea mi è venuta!!!
Allora, prima serve un file di testo dove andremo a salvare i nicknames.
E procediamo così:
Attiva PHP5 per poter utilizzare file_get/put_contents()Codice PHP:
<?php
$nick_usati = explode(" | ", file_get_contents("nicknames.txt"));
if(in_array($_GET["nick"], $nick_usati)) {
echo "Questo nickname ({$_GET["nick"]}) è già utilizzato da qualcuno...";
} else {
file_put_contents("nicknames.txt", $_GET["nick"] . " | ", FILE_APPEND | LOCK_EX);
echo "Nickname libero!!";
}
?>
Poi bisogna trovare un metodo per cancellare questi nicknames dal file.
non pensavo una cosa del genere...
Codice PHP:
$stringa="non so cosa mettere";
$scrivi_file=fopen("nicknames.txt","w");
fwrite($scrivi_file,$stringa);
fclose($scrivi_file);
}}
Perchè cambi metodo?
Al limite sostituisco le funzioni per php4
Codice PHP:
<?php
$file = fopen("nicknames.txt", "r");
$f = fread($file, filesize("nicknames.txt"));
fclose($file);
$nick_usati = explode(" | ", $f);
if(in_array($_GET["nick"], $nick_usati)) {
echo "Questo nickname ({$_GET["nick"]}) è già utilizzato da qualcuno...";
} else {
$fp = fopen("nicknames.txt", "a+");
fwrite($fp, $_GET["nick"] . " | ");
fclose($fp);
echo "Nickname libero!!";
}
?>
Ultima modifica di nokiagames : 13-06-2009 alle ore 19.11.50
no dicevo di usarlo per cancellare i nomi...
se no non so come fare^^
A scusa!!!!
Codice PHP:
$nicks = file_get_contents("nicknames.txt");
$scrivi = str_replace($_GET["nick"] . " | ", "", $nicks);
file_put_contents("nicknames.txt", $scrivi, LOCK_EX);
Ultima modifica di nokiagames : 13-06-2009 alle ore 19.34.01
potresti postare tutto il codice che riguarda login_chat.php
Ma così non va bene, pensavo che tu avessi la soluzione su come cancellare.
Così cancelli i nickname senza alcun criterio.
Se vuoi provare modifica la parte finale di login_chat.php
Codice PHP:
<? }
if (isset($_GET['u'])){
unset($_SESSION['nickname']); }
// Process login info
if (isset($_POST['submitBtn'])){
$name = isset($_POST['name']) ? $_POST['name'] : "Utente";
$_SESSION['nickname'] = $name;
}
$nick_usati = explode(" | ", file_get_contents("nicknames.txt"));
if(in_array($name, $nick_usati)) {
die("<script type=\"text/javascript\">alert(\"Questo nickname ({$name}) è già utilizzato da qualcuno..\")</script>");
} else {
file_put_contents("nicknames.txt", $name . " | ", FILE_APPEND | LOCK_EX);
$nickname = isset($_SESSION['nickname']) ? $_SESSION['nickname'] : "Hidden";
}
?>
Questo senza cancellare, aspetto che mi venga in mente la soluzione !