From dae55a4d46c1c776c58ccf4e5bb0fd9df2142f4d Mon Sep 17 00:00:00 2001 From: "Matteo Nastasi (mop)" Date: Tue, 30 Jan 2007 08:48:52 +0000 Subject: [PATCH] consolidata gestione del nickname --- web/brisk.phh | 39 +++++++++++++++++++++++++++++++++------ web/index.php | 6 +++--- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/web/brisk.phh b/web/brisk.phh index 79db2f8..31f0238 100644 --- a/web/brisk.phh +++ b/web/brisk.phh @@ -558,7 +558,13 @@ class brisco { if (strncmp($user_mesg, "/nick ", 6) == 0) { log_main($user->sess, "chatt_send BEGIN"); - $name_new = str_replace(' ', '_', substr(trim(substr($user_mesg, 6)),0,12)); + if (($name_new = validate_name(substr($user_mesg, 6))) == FALSE) { + $user->comm[$user->step % COMM_N] = "gst.st = ".($user->step+1)."; "; + $user->comm[$user->step % COMM_N] .= sprintf('chatt_sub("%s","Il nickname deve contenere almeno una lettera o una cifra.");', $dt.NICKSERV, xcape($name_new)); + $user->step++; + + return; + } $user_mesg = "COMMAND ".$user_mesg; // Search dup name // change @@ -665,6 +671,7 @@ class brisco { * * RETURN VALUE: * if ($idx != -1 && ret == FALSE) => duplicated nick + * if ($idx == -2 && ret == FALSE) => invalid name * if ($idx == -1 && ret == FALSE) => no space left * if (ret == TRUE) => SUCCESS */ @@ -673,6 +680,11 @@ class brisco { $idx = -1; $idfree = -1; + if (($name_new = validate_name($name)) == FALSE) { + $idx = -2; + return (FALSE); + } + log_auth("XXX", sprintf("ARRIVA: [%s]", $sess)); if (validate_sess($sess) == FALSE) $sess = ""; @@ -686,7 +698,7 @@ class brisco { if ($idfree == -1 && strcmp("", $this->user[$i]->sess) == 0) { $idfree = $i; } - if (strcmp($this->user[$i]->name, $name) == 0) { + if (strcmp($this->user[$i]->name, $name_new) == 0) { $idx = $i; break; } @@ -694,7 +706,7 @@ class brisco { if ($idx == -1) $idx = $idfree; - log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name)); + log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name_new)); if ($idx != -1 && $i == MAX_PLAYERS) { /* SUCCESS */ @@ -706,12 +718,12 @@ class brisco { else { $this->user[$idx]->sess = $sess; } - $this->user[$idx]->name = $name; + $this->user[$idx]->name = $name_new; $this->user[$idx]->stat = "room"; $this->user[$idx]->subst = "standup"; $this->user[$idx]->laccwr = time(); - log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name)); + log_main("XXX", sprintf("TROVATO LIBERO A [%d] sess [%s] name [%s]", $idx, $sess, $name_new)); return ($this->user[$idx]); } @@ -1488,10 +1500,25 @@ function calculate_points(&$table) $table->mult = 1; } -function validate_sess($sess) { +function validate_sess($sess) +{ if (strlen($sess) == SESS_LEN) return (TRUE); else return (FALSE); } + +function validate_name($name) +{ + $name_new = str_replace(' ', '_', substr(trim($name),0,12)); + + for ($i = 0 ; $i < strlen($name_new) ; $i++) { + $c = $name_new[$i]; + if (($c >= "a" && $c <= "z") || ($c >= "A" && $c <= "Z") || ($c >= "0" && $c <= "9")) + return ($name_new); + } + + return (FALSE); +} + ?> diff --git a/web/index.php b/web/index.php index 50f7f9f..171f2aa 100644 --- a/web/index.php +++ b/web/index.php @@ -57,8 +57,6 @@ function main() if ($ACTION == "login" && isset($name)) { $bri->garbage_manager(TRUE); /* try login */ - $name = substr($name, 0, 12); - $name = str_replace(" ", "_", $name); if (($user = &$bri->add_user(&$sess, &$idx, $name)) != FALSE) { $ACTION = "room"; @@ -72,7 +70,9 @@ function main() } else { /* Login Rendering */ - if ($idx == -1) + if ($idx == -2) + $body .= '
Il nickname deve contenere almeno una lettera o una cifra.
'; + else if ($idx == -1) $body .= '
Spiacenti, non ci sono più posti liberi. Riprova più tardi.
'; else $body .= '
Il tuo nickname è già in uso.
'; -- 2.17.1