Доброго времени суток. Проблема такая, есть форма регистрации и функции регистрации, на локальной машине всё работает правильно. В сети не работает кирилица, т.е. на латинице можно зарегистрироваться, а на кирилице нет, хотя новости я на кирилице добавляю и всё работает. Не даёт даже логин кирилицей набрать, может регулярное выражение не правильно написал? Подскажите где ошибка? Вот код: HTML: <? if("Регистрация"==$_POST["register"]){ $my->u_login=$_POST["login"]; $my->u_passwd=$_POST["pass1"]; $my->u_email=$_POST["email"]; echo($my->user_add($_POST["pass1"], $_POST["pass2"])); } ?> <table width='100%' border='1' cellpadding='5' cellspacing='0'> <form action="<?=$_SERVER["PHP_SELF"]."/?page=register";?>" method="post"> <tr><td>Логин</td><td><input type="text" name="login" value="<?echo $_POST["login"];?>"></td></tr> <tr><td>Выберите пароль</td><td><input type="password" name="pass1" value=""></td></tr> <tr><td>Повторите пароль</td><td><input type="password" name="pass2" value=""></td></tr> <tr><td>Адрес электронной почты</td><td><input type="text" name="email" value="<?echo $_POST["email"];?>"></td></tr> <tr><td colspan='2' align='center'><input type="submit" name="register" value="Регистрация"></td></tr> </form> </table> PHP: <? function user_add($pwd1, $pwd2){ $this->error = 0; if(!$this->error=$this->set_login($this->u_login)){ $pwd1=$this->set_pwd($pwd1); if(!$this->error || $pwd1){ $pwd2=$this->set_pwd($pwd2); if($this->error || !$pwd2){ $this->error=407;} else{ if(!$this->error=$this->set_email($this->u_email)){ $this->sql_run("select u_login from stj_user where u_login='".$this->u_login."'"); if(mysql_num_rows($this->sql_res)){$this->error=404;} else{ $this->sql_run("INSERT INTO t_user(u_login, u_pwd, u_email, u_dt_create) VALUES('".$this->u_login."', '".md5($pwd1)."', '".$this->u_email."', '".date("Y-m-d",time())."')"); } } } } } return $this->error; } function set_login($login){ $this->error=0; $login=trim(eregi_replace(" +", " ", $login)); if(preg_match("/^[-0-9А-ЯA-Z_@\s]+$/i", $login)){$this->u_login=$login;} else{ $this->u_login=""; $this->error=405; } return $this->error; } ?>
Странно. В других формах я пишу кирилицей и ни каких проблем нет. Всё записывается в базу и читается из неё.
<? echo setlocale(LC_ALL, '0'); ?> выдаёт: С Это что за локаль? и устанвка setlocale(LC_ALL, 'rus'); в функции проверки логина не помогла(