Ciao a tutti, sono nuovo su HTML.it ma è da anni che lo seguo.
Mi sono imbattuto su un enorme dilemma: posso far sparire il label di un form dopo averlo compilato, ma trattenendo i dati inviati?
Forse dettagliando ci capiamo meglio:
Ho seguito alla lettera una guida su come creare una semplicissima chat in PHP e AJAX, e fin qui nessun problema, funziona perfettamente! C'è solo un enooorme problema, i campi sono quelli essenziali: nickname e messaggio; il problema sta nel label del nickname, è modificabile in qualsiasi momento.
Quindi, esempio, se mi registro in chat come Mario, chiunque può chiamarsi Mario e scrivere a nome mio.
Ora mi chiedo se si potrebbe fare qualcosa di simile:
Mi registro come Mario, do l'OK, mi sparisce il label del nickname, compare quello del messaggio (o può anche già esserci) e posso scrivere in tutta tranquillità come Mario.
Tuttavia, in quanto c'è il tempo per il reload, bisogna evitare (forse tramite cache) che dopo il riavvio della pagina, compaia nuovamente il label del nickname, quindi che i dati restino salvati.
Questo è il mio problema, chi riesce ad aiutarmi?
Qui ci sono i file che utilizzo per la chat:
index.php
codice:
<html>
<head>
<title>Chat php</title>
<script language="javascript" type="text/javascript">
<!--
var httpObject = null;
var link = "";
var timerID = 0;
function getHTTPObject(){
if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
else if (window.XMLHttpRequest) return new XMLHttpRequest();
else {
alert("Il tuo browser non supporta AJAX.");
return null;
}
}
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();
}
}
function setAll(){
if(httpObject.readyState == 4){
var response = httpObject.responseText;
var objDiv = document.getElementById("result");
objDiv.innerHTML = response;
objDiv.scrollTop = objDiv.scrollHeight;
}
}
function doWork(){
if(document.getElementById('nic').value.length<1||document.getElementById('msg').value<1)
{
alert("Ci sono dei campi vuoti!");
}
else{
httpObject = getHTTPObject();
if (httpObject != null) {
link="messaggio.php?nick="+document.getElementById('nic').value+
"&msg="+document.getElementById('msg').value;
httpObject.open("GET", link , true);
httpObject.onreadystatechange = setOutput;
httpObject.send(null);
}
}
}
function doReload(){
httpObject = getHTTPObject();
var randomnumber=Math.floor(Math.random()*10000);
if (httpObject != null) {
link = "messaggio.php?all=1&rnd="+randomnumber;
httpObject.open("GET", link , true);
httpObject.onreadystatechange = setAll;
httpObject.send(null);
}
}
function UpdateTimer() {
doReload();
timerID = setTimeout("UpdateTimer()", 3000);
}
function keypressed(e){
if(e.keyCode=='13'){
doWork();
}
}
</script>
</head>
<body onLoad="UpdateTimer();">
<div id="result">
<?php
$data = file("msg.html");
foreach ($data as $line) {
echo $line;
}
?>
</div>
<div id="sender" align="center" onKeyUp="keypressed(event);">
<label>Nickname</label><input type="text" name="nic" size="30" id="nic" /><br />
<label>Messaggio</label><textarea name="msg" id="msg" cols="30"
rows="3"></textarea><br />
<button onClick="doWork();">Invia</button>
</div>
</body>
</html>
messaggio.php
codice:
<?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=stripslashes(htmlentities($_GET['msg'], ENT_QUOTES));
$data=date("d-m-y");
$ora=date("G:i:s");
$line = "<p><span>$nick: </span><span>$msg ($data $ora)</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;
}
?>
Il terzo ed ultimo è un file vuoto chiamato msg.txt e serve a contenere quanto scritto in chat.
Vi prego aiutatemi! Sono ormai ore che ci provo senza esiti positivi! 


