За последние 24 часа нас посетили 16668 программистов и 1718 роботов. Сейчас ищут 1752 программиста ...

проблема с русскими буквами при регистрации

Тема в разделе "PHP для новичков", создана пользователем Алексей Муратов, 12 фев 2008.

  1. Алексей Муратов

    Алексей Муратов Активный пользователь

    С нами с:
    9 апр 2007
    Сообщения:
    17
    Симпатии:
    0
    Доброго времени суток. Проблема такая, есть форма регистрации и функции регистрации, на локальной машине всё работает правильно. В сети не работает кирилица, т.е. на латинице можно зарегистрироваться, а на кирилице нет, хотя новости я на кирилице добавляю и всё работает. Не даёт даже логин кирилицей набрать, может регулярное выражение не правильно написал? Подскажите где ошибка?
    Вот код:
    HTML:
    1.  
    2. <?
    3. if("Регистрация"==$_POST["register"]){
    4. $my->u_login=$_POST["login"];
    5. $my->u_passwd=$_POST["pass1"];
    6. $my->u_email=$_POST["email"];
    7. echo($my->user_add($_POST["pass1"], $_POST["pass2"]));
    8. }
    9. ?>
    10.  
    11. <table width='100%' border='1' cellpadding='5' cellspacing='0'>
    12. <form action="<?=$_SERVER["PHP_SELF"]."/?page=register";?>" method="post">
    13. <tr><td>Логин</td><td><input type="text" name="login" value="<?echo $_POST["login"];?>"></td></tr>
    14. <tr><td>Выберите пароль</td><td><input type="password" name="pass1" value=""></td></tr>
    15. <tr><td>Повторите пароль</td><td><input type="password" name="pass2" value=""></td></tr>
    16. <tr><td>Адрес электронной почты</td><td><input type="text" name="email" value="<?echo $_POST["email"];?>"></td></tr>
    17. <tr><td colspan='2' align='center'><input type="submit" name="register" value="Регистрация"></td></tr>
    18. </form>
    19.  
    PHP:
    1.  
    2. <?
    3. function user_add($pwd1, $pwd2){
    4. $this->error = 0;
    5.   if(!$this->error=$this->set_login($this->u_login)){
    6.     $pwd1=$this->set_pwd($pwd1);
    7.     if(!$this->error || $pwd1){
    8.       $pwd2=$this->set_pwd($pwd2);
    9.       if($this->error || !$pwd2){ $this->error=407;}
    10.       else{
    11.         if(!$this->error=$this->set_email($this->u_email)){
    12.           $this->sql_run("select u_login from stj_user where u_login='".$this->u_login."'");
    13.           if(mysql_num_rows($this->sql_res)){$this->error=404;}
    14.           else{
    15.             $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())."')");
    16.           }
    17.         }
    18.       }
    19.     }
    20.   }
    21.  
    22. return $this->error;
    23. }
    24.  
    25. function set_login($login){
    26.   $this->error=0;
    27.   $login=trim(eregi_replace(" +", " ", $login));
    28.   if(preg_match("/^[-0-9А-ЯA-Z_@\s]+$/i", $login)){$this->u_login=$login;}
    29.   else{
    30.     $this->u_login="";
    31.     $this->error=405;
    32.   }
    33. return $this->error;
    34. }
    35. ?>
    36.  
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  3. Алексей Муратов

    Алексей Муратов Активный пользователь

    С нами с:
    9 апр 2007
    Сообщения:
    17
    Симпатии:
    0
    Странно. В других формах я пишу кирилицей и ни каких проблем нет. Всё записывается в базу и читается из неё.
     
  4. Алексей Муратов

    Алексей Муратов Активный пользователь

    С нами с:
    9 апр 2007
    Сообщения:
    17
    Симпатии:
    0
    <?
    echo setlocale(LC_ALL, '0');
    ?>

    выдаёт: С
    Это что за локаль?

    и устанвка
    setlocale(LC_ALL, 'rus');
    в функции проверки логина не помогла(