Написал систему регистрации, всё нормально но смущает то что в Базе данных в поле "password" вместо русских букв пишет разные Иероглифы. "Сравнение" стоит "utf8_general_ci".
Вид для печати
Хэшируй пароли и таких проблем не будет.
Для чего??? Я задал другой вопрос а ответ получил вовсе не тот, хотел бы Хеширование паролей сделал бы.
У вас сервер отдает другую кодировку(Windows-1251, русские буквы), а MySQL сервер принимает только кодировку «utf8_general_ci». При хешировании пароля, сервер отдает латинские буквы и цифры.
Пробовал ставить сравнение на "cp_1251_general_ci" хотя пишет то что поддерживает "кириллический(многоязычный)" только вместо иероглифов стали Вопросительные знаки "????"
- - - Добавлено - - -
PHP код:
-- phpMyAdmin SQL Dump
-- version 4.5.1
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Дек 08 2015 г., 13:52
-- Версия сервера: 10.1.8-MariaDB
-- Версия PHP: 5.6.14
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- База данных: `db_server`
--
-- --------------------------------------------------------
--
-- Структура таблицы `players`
--
CREATE TABLE `players` (
`id` int(11) NOT NULL,
`name` varchar(24) NOT NULL,
`password` varchar(15) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
--
-- Дамп данных таблицы `players`
--
INSERT INTO `players` (`id`, `name`, `password`) VALUES
(1, 'Old_Boy', '???????');
--
-- Индексы сохранённых таблиц
--
--
-- Индексы таблицы `players`
--
ALTER TABLE `players`
ADD PRIMARY KEY (`id`);
--
-- AUTO_INCREMENT для сохранённых таблиц
--
--
-- AUTO_INCREMENT для таблицы `players`
--
ALTER TABLE `players`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Да ставил когда были иероглифы, потом они сменились на Вопросительные знаки. Решил попробовать создать новую DB и эффект такой же
Удали строку где были иероглифы, после чего, переставь кодировку в «cp_1251_general_ci», а потом снова зарегистрируй аккаунт.
Дополнительный материал на habr
Попробовал как ты сказал нечего не изменилось, так же Вопросительные знаки
Об этом тоже читал на офф. форумах MySQL пробовал ставить но нечего не получается эффект остается таким же "?"PHP код:
mysql_query(/* Подключение к базе данных */, "set names utf8");
Если есть возможность - откати изменения таблицы назад и сделай так:
PHP код:
mysql_set_charset("utf8_bin");
mysql_function_query(/* Подключение к базе данных */, "SET NAMES 'utf8'", false, "", "");
mysql_function_query(/* Подключение к базе данных */, "SET CHARACTER SET 'cp1251'", false, "", "");
Решение которое предложил "VVWVV":
PHP код:
connectionMySQL = mysql_connect("127.0.0.1", "root", "db_server", "");
if(mysql_errno() != 0) print("Не удалось подключиться к базе данных!");
else print("База данных успешно подключена!");
mysql_set_charset("utf8", connectionMySQL);
/*mysql_set_charset("utf8_bin");
mysql_function_query(connectionMySQL, "SET NAMES 'utf8'", false, "", "");
mysql_function_query(connectionMySQL, "SET CHARACTER SET 'cp1251'", false, "", "");*/
mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_TEXT);
Решение которое предложил "$continue$":
PHP код:
connectionMySQL = mysql_connect("127.0.0.1", "root", "db_server", "");
if(mysql_errno() != 0) print("Не удалось подключиться к базе данных!");
else print("База данных успешно подключена!");
/*mysql_set_charset("utf8", connectionMySQL);*/
mysql_set_charset("utf8_bin");
mysql_function_query(connectionMySQL, "SET NAMES 'utf8'", false, "", "");
mysql_function_query(connectionMySQL, "SET CHARACTER SET 'cp1251'", false, "", "");
mysql_log(LOG_ERROR | LOG_WARNING, LOG_TYPE_TEXT);
Огромное спасибо вам, особенно "VVWVV" что так усердно пытался помощь!
Тему можно закрывать!
Да, проблема решена. Спасибо
Не очень понял, почему мой последний вариант не сработал.
Хотя у меня все работало:
Код
http://ihost.pro-pawn.ru/image.php?di=0KT9
Таблица
http://ihost.pro-pawn.ru/image.php?di=8S76
UPD:
Понял. Поставил правильную кодировку для таблицы.