[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не вводятся русские символы в Таблицу в БД
denis79513
При выполнении запроса, в таблицу вносятся лишь латинские символы, русские никак не хотят, вот код, что нужно добавить?

<?php
include "conect.php";
if(isset($_POST['submit']))
{$login=$_POST['login'];
$name=$_POST['name'];
$family=$_POST['family'];
$pas=$_POST['pas'];
$repas=$_POST['repas'];
$mail=$_POST['mail'];
$url=$_POST['url'];
$inform=$_POST['inform'];
$gr=$_POST['gr'];
$mr=$_POST['mr'];
$dr=$_POST['dr'];
If (!$conect) {echo('Соединение с сервером не было установлено!<br>');}
$condb=mysql_select_db($dbname,$conect);
If (!$condb) {echo('Соединение с базой данных не было установлено!<br>');}
mysql_query("set character_set_client='windows-1251'");
mysql_query("set character_set_results='windows-1251'");
mysql_query("set collation_connection='windows-1251'");
$result=mysql_query("CREATE TABLE users
(id MEDIUMINT NOT NULL AUTO_INCREMENT,
login varchar(30),
name varchar(30),
family varchar(30),
Password varchar(20),
Mail varchar(20),
URL varchar(20),
Inform varchar(450),
YearB text,
MonthB text,
DayB text,
sid varchar(35),
PRIMARY KEY (id))"
,$conect);
if ($pas==$repas)
{
$sql="SELECT * FROM users WHERE Login='$login'";
$result=mysql_query($sql);
if (mysql_num_rows($result))
{echo ('
<center>
<div>
<center>
<br><strong>Ошибка! </strong><font color="#CC6666"><strong><br>Введенный вами логин уже существует! </strong></font>
</center>
<a href="index.php">Вернитесь назад</a> и попробуйте снова.
</div>
</center>'
);}
else
{$sql="INSERT INTO users VALUES('0', '$login', '$name', '$family', '$pas', '$mail', '$url', '$inform', '$gr', '$mr', '$dr', '')";
if (mysql_query($sql)) {echo ('<br>Пользователь успешно зарегистрирован! <a href="'.$site.'">Перейдите на главную страницу и авторизируйтесь!');}
else
{echo ('
<center>
<div>
<center>
<br><strong>Ошибка! </strong><font color="#CC6666"><strong><br>Ошибка при регистрации.</strong></font>
</center>
<a href="index.php">Вернитесь назад</a> и попробуйте снова.
</div>
</center>'
);}}
}

else
{echo ('
<center>
<div >
<center>
<br><strong>Ошибка! </strong><font color="#CC6666"><strong><br>Введенные вами пароли не совпадают!</strong></font>
</center>
<a href="index.php">Вернитесь назад</a> и попробуйте снова.
</div>
</center>'
);}
mysql_close($conect);}
?>




Спустя 1 день, 14 часов, 6 минут, 29 секунд (25.12.2010 - 04:19) PiratXXX написал(а):
denis79513

Я так понял это регистрация пользователей!?да?

1. Делай обработку $_POST.
Если ошибки отключены, то все норм, а если нет будет ошибки(использование переменных которые не определены) например вот так:
Notice: Undefined variable: name in Z:\home\localhost\www\dana\test.php on line 2
Обрабатывай так:

$login = (isset($_POST['login'])) ? $_POST['login'] : NULL;

$login = (get_magic_quotes_gpc()) ? (trim(strip_tags(mysql_real_escape_string(stripslashes($login))))) : (trim(strip_tags(mysql_real_escape_string($login)))) ;


2. Зачем создавать тут же таблицу? Лично я создаю вручную, и заношу данные уже в готовую.

3. Такой запрос вижу впервой!)
Расскажи пож. как он у тебя вообще что-то зановит в БД?

$sql="INSERT INTO users VALUES('0', '$login', '$name', '$family', '$pas', '$mail', '$url', '$inform', '$gr', '$mr', '$dr', '')";

Делай так:

$sql = "INSERT INTO `users` (`login`, `name`, `surname` и т.д.) VALUES ('".$login."', '".$name."', '".$surname."' и т.д.)";


4. Из все тогоже запроса,я понял что (выделенное значение это id)

$sql="INSERT INTO users VALUES('0', '$login', '$name', '$family', '$pas', '$mail', '$url', '$inform', '$gr', '$mr', '$dr', '')";

Неправильно!
Давай рассуждать, это получается что каждый пользователь будет иметь id равный 0. Вопрос: зачем он тогда нужен!?)))

Тогда при создании таблици делай id AUTO_INCREMENT, ой а он утебя так и сделан.?сори!)

НО тогда получается что 0 (нолик), ты записываешь на место Логина!!! убери эту фичу...)))[/php]

5. Вот это сравнение:

if ($pas==$repas) 


делай так:

if ($pas===$repas)

Спустя 27 минут, 35 секунд (25.12.2010 - 04:47) inpost написал(а):
Сначала в мою подпись, и проходи всё по полочкам, потом в раздел: кодировки, там ответ на твой вопрос прикреплён от Твина.

Спустя 7 часов, 18 минут, 8 секунд (25.12.2010 - 12:05) denis79513 написал(а):
Цитата
там ответ на твой вопрос прикреплён от Твина.

Где? Это я поставил:

mysql_query("set character_set_client='windows-1251'");
mysql_query("set character_set_results='windows-1251'");
mysql_query("set collation_connection='windows-1251'");

И главное то что если что-то при реистрации пишешь на английском, заносится, а на русском, не то чтобы звездочками оно вообще не записывается. Чего еще не хватает?

Спустя 2 часа, 21 минута, 49 секунд (25.12.2010 - 14:27) sharki написал(а):
denis79513
Попробуй насильно конвертировать переменные в нужную тебе кодировку функцией iconcv();
например:

$name = iconv("UTF-8", "windows-1251", "$name"); 

Как видишь первое занчение - это с какой кодировки, а второе в какую и третьим указывается переменная которая подвергается перекодировки.
Поиграйся с кодировками.
PiratXXX
Ты с ума сошел обрабатывать так переменные??? О_О

$login = (get_magic_quotes_gpc()) ? (trim(strip_tags(mysql_real_escape_string(stripslashes($login))))) : (trim(strip_tags(mysql_real_escape_string($login))))  ;

Спустя 13 минут, 36 секунд (25.12.2010 - 14:41) PiratXXX написал(а):
sharki
ну почти.)))

раньше у меня было разделено на два шага:


if(get_magic_quotes_gpc()) {
$login = (stripslashes($login));
}
$login = (trim(strip_tags(mysql_real_escape_string($login))));



Ну если ты это имел ввиду.

Ну а потом решил объеденить. но всеравно сильно дофига места в коде занимает(ну у меня таким образом переменных 20 обработывается),
так что буду переделывать и в цикле обрабатывать.sharki
sharki
[/php]

А ище объясни пож. как у него вообще что-то может заносить. чет я не пойму.
ШО ЭТО ЗА ЗАПРОС? :o


$sql="INSERT INTO users VALUES('0', '$login', '$name', '$family', '$pas', '$mail', '$url', '$inform', '$gr', '$mr', '$dr', '')";

Спустя 10 минут, 29 секунд (25.12.2010 - 14:51) sharki написал(а):
он не дописан)
По идее твой запрос верный
$sql = "INSERT INTO `users` (`login`, `name`, `surname` и т.д.) VALUES ('".$login."', '".$name."', '".$surname."' и т.д.)";


А что ты хотел спросить то?))

Спустя 7 часов, 31 минута, 45 секунд (25.12.2010 - 22:23) PiratXXX написал(а):
sharki

Я хотел спросить что ты имел ввиду, что я сошел с ума?

Спустя 59 минут, 49 секунд (25.12.2010 - 23:23) sharki написал(а):
PiratXXX
Имел введу что слишком много защит. strip_tags не желательно использовать, может я хочу ник <?sharki?> а он у тебя всё вырежит =)) почитай про защиту тут где то на форуме прикрепленная статья от twin'a

Спустя 1 день, 21 минута, 38 секунд (26.12.2010 - 23:44) PiratXXX написал(а):
sharki

а ты не хоти!) wink.gif
мой сайт мои правила! tongue.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.