Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Неправильное отображение данных из базы

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Заношу данные, а они заносятся в виде спецсимволов html
D1mOn
Отправлено: 12 Февраля, 2008 - 11:53:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Здарова всем!

Проблема вот в чём:
Когда я добавляю данные в базу, они добавляются туда, почему-то в виде HTML спецсимволов (пример &6433; типа того) и когда вывожу данные из базы они отображаются нормально на странице, но в коде страницы все равно отображаются эти спецсимволы ((( Как можно занести данные в нормальном виде, и чтобы они были везде нормального вида? Подскажите, пожалуйста. Тип поля ТЕКСТ, сравнение cp1251_ukrainian_ci
 
 Top
evgenijj
Отправлено: 12 Февраля, 2008 - 11:58:05
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




D1mOn пишет:
Когда я добавляю данные в базу

Какие данные? Откуда?
 
 Top
D1mOn
Отправлено: 12 Февраля, 2008 - 14:42:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Создаю запрос на ПХП вида

CODE (text):
скопировать код в буфер обмена
  1.  
  2. mysql_query("insert into table (name,pop,enter_date) values ($name,$pop,$now)",$db);
  3.  


данные приходят из обычной формы.

И еще когда заношу в базу без проверки с htmlspecialchars(), при выводе выводит нормально, но с этой функцией выводит спецсимволы HTML ((((
 
 Top
evgenijj
Отправлено: 12 Февраля, 2008 - 14:55:54
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




D1mOn пишет:
данные приходят из обычной формы

Что приходит из формы? Есть подозрение, что для страницы неправильно указан charset. Поэтому приходят они в UNICODE.
D1mOn пишет:
И еще когда заношу в базу без проверки с htmlspecialchars(), при выводе выводит нормально, но с этой функцией выводит спецсимволы HTML

А с твоей точки зрения - зачем эта функция?
 
 Top
D1mOn
Отправлено: 12 Февраля, 2008 - 15:04:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Кодировка у страницы такая
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

А про htmlspecialchars():
Почему она русские символы переводит в спецсимволы? И когда я вывожу все это чудо из базы на страничку получается белиберда вида &..... и т.д. ( Как мне решить эту проблемку? )
 
 Top
evgenijj
Отправлено: 12 Февраля, 2008 - 15:25:48
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




D1mOn пишет:

Почему она русские символы переводит в спецсимволы?

Она не русские символы переводит, а обрабатывает последовательности типа
& # 1040; & # 1041; & # 1042; & # 1043; - т.е. то, что и должна делать.

Цитата:
Кодировка у страницы такая
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

Это у страницы, содержащей форму?
 
 Top
valenok
Отправлено: 12 Февраля, 2008 - 17:17:33
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




ЧУДО Здесь
А потом скажете где именно проблема, а мы скажем как решить.


-----
Truly yours, Sasha.
 
My status
 Top
D1mOn
Отправлено: 13 Февраля, 2008 - 05:20:33
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


evgenijj

Да, это у страницы с формой.

Цитата:
Она не русские символы переводит, а обрабатывает последовательности типа
& # 1040; & # 1041; & # 1042; & # 1043; - т.е. то, что и должна делать.


Тогда что мне лучше использовать вместо этой функции? Или что исправить чтобы всей этой белиберды не было? Не могу же я без защиты давать юэерам записывать данные в базу!

valenok

Ошибок в скрипте нет, просто где-то что-то неправильно )
 
 Top
evgenijj
Отправлено: 13 Февраля, 2008 - 09:56:03
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Думаю, проблема в следующем. В форму вводятся символы, которых нет в указанной для страницы кодировке. Поэтому все данные отсылаются на сервер в UNICODE. Если есть нужда вводить такие символы, то надо переходить на UTF-8.

Еще один вариант - Apache. Даже если мы приписали на странице
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">
Apache может добавить в заголовок HTTP свое сообщение про кодировку (например, ISO-8859-1). Исправить это можно указав свою кодировку в файле .htaccess командой AddDefaultCharset.
 
 Top
valenok
Отправлено: 13 Февраля, 2008 - 12:38:54
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Ошибка это когда чтото не так.
Так что найдите в каком именно месте чтото не так.
(Добавление)
Вообщем вы узнайте что приходит на сервер, а что он записывает в БД
а то похоже у вас 3 кодировки указаны разные.


-----
Truly yours, Sasha.
 
My status
 Top
Eihwaz
Отправлено: 13 Февраля, 2008 - 16:42:49
Post Id


Гость


Покинул форум
Сообщений всего: 112
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




2D1mOn:
Если используете какую-то функцию, то хотя бы посмотрите, что она делает, и какие принимает параметры. Скорее всего то, что вы ищете это:

На http://www.php.net есть описание.
 
 Top
D1mOn
Отправлено: 14 Февраля, 2008 - 06:58:55
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Спасиба всем!!!
Нашел решение. Код мне дали косячный. Написал сам и все заработало!

И еще вопросик)
Насколько этот код безопасен:

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $server_name='localhost';
  3. $user_name='root';
  4. $user_password='';
  5. $db_name='database';
  6.  
  7. $db = mysql_connect($server_name,$user_name,$user_password);
  8. $res = mysql_select_db($db_name,$db);
  9.  
  10. mysql_query ("set character_set_client='cp1251'");
  11. mysql_query ("set character_set_results='cp1251'");
  12. mysql_query ("set collation_connection='cp1251_general_ci'");
  13.  
  14. $name = htmlspecialchars($name, ENT_QUOTES, "cp1251");
  15. $text = nl2br(htmlspecialchars($text, ENT_QUOTES, "cp1251"));
  16.  
  17. $now=date('Y-m-d H:i:s',mktime(gmdate('H')+10,gmdate('i'),gmdate('s'),gmdate('m'),gmdate('d'),gmdate('Y')));
  18.  
  19. mysql_query("insert into table (name,text,pop,enter_date) values ('$name','$text',0,'$now')", $db);
  20.  
  21.  
?
(Добавление)
И еще малюсенький вопросик )

В phpMyAdmin мне пишет:

Цитата:

Директива $cfg['PmaAbsoluteUri'] должна быть установлена в Вашем конфигурационном файле!
Ваш конфигурационный файл содержит настройки (пользователь root без пароля), которые относятся к привилегированному пользователю MySQL (по умолчанию). Ваш MySQL сервер запущен с этими настройками по умолчанию, открытый для вторжений, поэтому Вам настоятельно рекомендуется устранить эту дыру в безопасности.
The mbstring PHP extension was not found and you seem to be using multibyte charset. Without mbstring extension phpMyAdmin is unable to split strings correctly and it may result in unexpected results.


Чтобы это значило?

(Отредактировано автором: 14 Февраля, 2008 - 07:00:31)

 
 Top
evgenijj
Отправлено: 14 Февраля, 2008 - 08:43:16
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




D1mOn пишет:
Нашел решение.

Ты бы написал, в чем проблема была. Откуда брались испорченные данные? А то тема на две страницы - а полезной информации ноль.

D1mOn пишет:
Директива $cfg['PmaAbsoluteUri'] должна быть установлена в Вашем конфигурационном файле!

В файле libraries/config.default.php заменить строку
$cfg['PmaAbsoluteUri'] = '';
на
$cfg['PmaAbsoluteUri'] = 'http://myserver.com/phpmyadmin/';

D1mOn пишет:
Ваш конфигурационный файл содержит настройки (пользователь root без пароля)

Ты работаешь с сервером БД от имени пользователя root и без пароля. Надо создать еще одного пользователя и назначить ему необходимые права для работы с БД. Кратко смысл в следующем. При установке MySQL создается БД mysql. Эта БД содержит таблицы user и host. В таблице host указаны хосты, с которых можно соединяться с сервером БД, а в таблице user - пользователи, которые могут соединяться с этих хостов.

В phpMyAdmin имя и пароль пользователя задаются директивами
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
в файле libraries/config.default.php

Вообще, в последних версиях phpMyAdmin два файла конфигурации:
libraries/config.default.php - содержит настройки по умолчанию
config.inc.php - переопределяет настройки по умолчанию
 
 Top
D1mOn
Отправлено: 14 Февраля, 2008 - 10:39:06
Post Id



Частый гость


Покинул форум
Сообщений всего: 222
Дата рег-ции: Янв. 2008  
Откуда: Гагастан


Помог: 0 раз(а)

[+][+][+][+][+]


Вот вам исходник этого скрипта.
Качайте и смотрите

(Отредактировано автором: 16 Февраля, 2008 - 10:25:51)

 
 Top
evgenijj
Отправлено: 14 Февраля, 2008 - 11:48:09
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


Помог: 10 раз(а)




Долбануть бы тебя чем-нибудь тяжелым по башке, чтобы голову людям не морочил:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.   // библиотека перекодировки текста
  3.   function unicode ($s) { if ( (ord($s)>=192) & (ord($s)<=255) ) $hexvalue=dechex(ord($s)+848); if ($s=="Ё") $hexvalue="401"; if ($s=="ё") $hexvalue="451"; return("&#x0".$hexvalue.";");}
  4.   function utf_encode ($s) { return(preg_replace("/[А-яЁё]/e","unicode('\\0')",$s));}
  5. ?>
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB