Newsgroup: it.comp.www.php
Titolo: controllo su campo di testo

come posso fare ad impedire che in un campo di testo possano essere inserite
2 volte parole uguali?
è una chat in flash e php, e sto cercarndo di impedire il login multiplo, lo
stesso nik 2 volte..
Il codice che gestisce il login è questo:
<?
header("Expires: ".gmdate("D, d M Y H:i:s")."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
?>
<?
?>
<?
/*$nickname = str_replace ("\n"," ", $_POST[nickname]);
$nickname = str_replace ("<", " ", $_POST[nickname]);
$nickname = str_replace (">", " ", $_POST[nickname]);
$nickname = stripslashes ($_POST[nickname]);*/
$nickname = str_replace ("\n"," ", $nickname);
$nickname = str_replace ("<", " ", $nickname);
$nickname = str_replace (">", " ", $nickname);
$nickname = stripslashes ($nickname);
?>
<?
/* count lines for sound section   */
$chat_file3 = "login.txt";
$lines3 = file($chat_file3);
$count3 = count($lines3);
echo "&count3=$count3";
/* end count for sound */
?>
&login=
<?
$date = date( "H:i");
$chat_file = "login.txt";
$chat_lenght =10;
$max_single_msg_lenght = 50000;
$max_file_size = $chat_lenght * $max_single_msg_lenght;
$file_size= filesize($chat_file);
if ($file_size > $max_file_size) {
$lines = file($chat_file);
$a = count($lines);
$u = $a - $chat_lenght;
for($i = $a; $i >= $u ;$i--){
$msg_old =  $lines[$i] . $msg_old;
}
$deleted = unlink($chat_file);
$fp = fopen($chat_file, "a+");
$fw = fwrite($fp, $msg_old);
fclose($fp);
}
/* Segue modifica per azzeramento file di chat */
if ($nickname == "Clear"){
  $fp = fopen("chat.txt", "a+");
  fwrite($fp, "\nCiaoAdmin, per pulire i file fai   LOGOUT\n\n\n");
  fclose($fp);
  $nickname = "Admin";
}
/* Precede modifica  per azzeramento file di chat */
if ($nickname != ""){
  $fp = fopen($chat_file, "a+");
  $fw = fwrite($fp, "$date - $nickname\n");
  fclose($fp);
}
$lines = file($chat_file);
$a = count($lines);
$u = $a - $chat_lenght;
for($i = $a; $i >= $u ;$i--){
  echo $lines[$i];
}
?>
qualcuno sa darmi una mano?
Grazie  :)
Paola

 stesso nik 2 volte..
Pechè semplicemente non controlli se lo stesso Nick è già loggato, in quel
caso impedisci il login.
--------------------------------------------------
www.tiipsi.com
M A R C O L A N D, Survival meets destiny
Fun, action and .... more.

 stesso nik 2 volte..
Scusa ma non e' chiaro quale sia il tuo problema.
Vuoi impedire che in un campo testo vengano scritte due paroli uguali
o che non si possano loggare due utenti con lo stesso nickname ??

 o che non si possano loggare due utenti con lo stesso nickname ??
che non si possano loggare due utenti con lo stesso nickname
Paola


 È esattamente quello che non so come fare :(
Paola

 stesso nik 2 volte..
Dipende da come li registri: nel tuo codice usi
if ($nickname != ""){
  $fp = fopen($chat_file, "a+");
  $fw = fwrite($fp, "$date - $nickname\n");
  fclose($fp);
}
per cui sarà tutto più noioso, lento e complicato, al contrario di un
database.
Se nel tuo file hai solo i login attivi (e come li disattivi? il timeout è
previsto? tieni attiva la connessione se l'utente scrive?) basta
controllare, riga per riga, che nel file non ci sia già il login appena
inserito. Sul manuale guarda le funzioni trim(), file(), explode(),
substr()...
Potresti anche usare le funzioni di sistema (con exec e fratelli) per
trovare le righe corrispondenti ad un certo pattern, usando grep (sotto
linux).
Con un database dovresti fare una semplice query, ma dipende da cosa
contiene la tabella (tutti i log - un elenco di utenti attivi - boh)
Ti consiglio vivamente di aggiungere i lock sui file ( flock() ) o -meglio-
di usare un database.
Ludovico


 Grazie, proverò a cercare un po' di notizie su ciò che mi hai detto..
purtroppo di php so poco o niente.. :(
Mi piacerebbe usare un database, ma non so nemmeno da dove cominciare... ora
come ora  sia i login che la chat sono  scritti su file txt.
Grazie  delle  info
Paola