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\MySQL + jQuery

 PHP.SU

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


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

> Без описания
ralli23
Отправлено: 20 Октября, 2011 - 17:21:30
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




Я взял из сайта http://ruseller[dot]com/lessons.php?[dot][dot][dot]ub=28&id=563 .Я сделал все работает,но проблемы с кодировкой((((
Не могу с кодировкой разобраться! У меня сайт на uft8 написан, пробовал и таблицу на cp1251_general_ci создавать, все равно иероглифы приходят! Что делать! ПОМОГИТE!

(Отредактировано автором: 20 Октября, 2011 - 17:23:40)

 
 Top
DlTA
Отправлено: 20 Октября, 2011 - 17:30:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2952
Дата рег-ции: Окт. 2010  


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




объяснить понятней: что было, что сделали, и что не так
 
 Top
ralli23
Отправлено: 20 Октября, 2011 - 18:05:35
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




у мeня файлы config.php, db.php, contact.php, is_email.php,jquery.contact.js.
Я сначало сделаю установить 1) выполнить SQL запрос из файла db_main_script.sql в созданной БД:
CREATE TABLE CONTACT(
pk_contact INT UNSIGNED NOT NULL auto_increment,
name VARCHAR(120) NOT NULL,
email VARCHAR(120) NOT NULL,
website VARCHAR(120) NOT NULL DEFAULT "",
message VARCHAR(300) NOT NULL,
added_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
primary key(pk_contact)
)type=innodb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;


2) настроить связь с БД в файле config.php:

<?php
define('DB_SERVER' , 'localhost');
define('DB_USER' , 'root');
define('DB_PASS' , '');
define('DB_NAME' , 'CONTACT');

/*
* Email Settings
*/
define('EMAIL_TO' , 'codrops@gmail.com');
define('EMAIL_FROM_NAME' , 'vitya');
define('EMAIL_FROM_ADDR' , 'www.tympanus.net);
define('MESSAGE_SUBJECT' , 'новые сообщении');
define('SEND_EMAIL' , true); /* if set to true, an email is sent to admin after a message is inserted */
?>

3) contact.php:

<?php
require_once("db.php"); /* Database Class */
require_once('utils/is_email.php'); /* Email Validation Script */

/* Handle Ajax Request */
if(isset($_POST['newcontact'])){
$contact = new Contact();
unset($contact);
}
else{
header('Location: /');
}

/* Class Contact */
class Contact{

private $db; /* the database obj */

private $errors = array(); /* holds error messages */
private $num_errors; /* number of errors in submitted form */

public function __construct(){
$this->db = new DB();
if(isset($_POST['newcontact']))
$this->processNewMessage();
else
header("Location: /");
}

public function processNewMessage(){

$email = $_POST['email'];
$name = $_POST['name'];
$website = $_POST['website'];
$message = $_POST['message'];

/* Server Side Data Validation */

/* Email Validation */
if(!$email || mb_strlen($email = trim($email)) == 0)
$this->setError('email','напишите Ваше e-mail');
else{
if(!is_email($email))
$this->setError('email', 'неверный e-mail');
else if(mb_strlen($email) > 120)
$this->setError('email', 'только до 120 слов');
}

/* Name Validation */
if(!$name || mb_strlen($name = trim($name)) == 0)
$this->setError('name', 'напишите Ваше Имя');
else if(mb_strlen(trim($name)) > 120)
$this->setError('name', 'только до 120 слов');

/* Website Validation */
if(!mb_eregi("^[a-zA-Z0-9-#_.+!*'(),/&:;=?@]*$", $website))
$this->setError('website', 'invalid website');
elseif(mb_strlen(trim($website)) > 120)
$this->setError('website', 'только до 120 слов');

/* Message Validation */
$message = trim($message);
if(!$message || mb_strlen($message = trim($message)) == 0)
$this->setError('message','напишите Текст Вашего сообщения');
elseif(mb_strlen($message) > 500)
$this->setError('message', 'только до 500 слов');

/* Errors exist */
if($this->countErrors() > 0){
$json = array(
'result' => -1,
'errors' => array(
array('name' => 'email' ,'value' => $this->error_value('email')),
array('name' => 'name' ,'value' => $this->error_value('name')),
array('name' => 'website' ,'value' => $this->error_value('website')),
array('name' => 'message' ,'value' => $this->error_value('message'))
)
);
$encoded = json_encode($json);
echo $encoded;
unset($encoded);
}
/* No errors, insert in db*/
else{
if(($ret = $this->db->dbNewMessage($email, $name, $website, $message)) > 0){
$json = array('result' => 1);
if(SEND_EMAIL)
$this->sendEmail($email,$name,$website,$message);
}
else
$json = array('result' => -2); /* something went wrong in database insertion */
$encoded = json_encode($json);
echo $encoded;
unset($encoded);
}
}

public function sendEmail($email,$name,$website,$message){
/* Just format the email text the way you want ... */
$message_body = "Здравствуйте," .$name. ""."\n"
."email: ".$email."\n" ."Имя: ".$name."\n"
."новые сообщение: "."\n"
.$message;
$headers = "From: ".EMAIL_FROM_NAME." <".EMAIL_FROM_ADDR.">";

return mail(EMAIL_TO,MESSAGE_SUBJECT,$message_body,$headers);
}

public function setError($field, $errmsg){
$this->errors[$field] = $errmsg;
$this->num_errors = count($this->errors);
}

public function error_value($field){
if(array_key_exists($field,$this->errors))
return $this->errors[$field];
else
return '';
}

public function countErrors(){
return $this->num_errors;
}
};
?>
4) db.php

<?php
require_once("config.php"); /* Configuration File */

class DB{

private $link;

public function __construct(){
$this->link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
if (mysqli_connect_errno())
exit();
}

public function __destruct() {
mysqli_close($this->link);
}

public function dbNewMessage($email,$name,$website,$message){
$email = mysqli_real_escape_string($this->link,$email);
$name = mysqli_real_escape_string($this->link,$name);
$website = mysqli_real_escape_string($this->link,$website);
$message = mysqli_real_escape_string($this->link,$message);

mysqli_autocommit($this->link,FALSE);

$query = "INSERT INTO CONTACT(pk_contact,name,email,website,message)
VALUES('NULL','$name','$email','$website','$message')";
mysqli_query($this->link,$query);

if(mysqli_errno($this->link))
return -1;
else{
mysqli_commit($this->link);
return 1;
}
}
};
?>
4) подключить jquery.contact.js.

Не могу с кодировкой разобраться! У меня сайт на uft8 написан, пробовал и таблицу на cp1251_general_ci создавать, все равно иероглифы приходят! Что делать! ПОМОГИТE!

(Отредактировано автором: 20 Октября, 2011 - 18:06:52)

 
 Top
ralli23
Отправлено: 21 Октября, 2011 - 15:34:20
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




http://dc258[dot]file[dot]qip[dot]ru/img/ajS[dot][dot][dot]2324&sizeM=3
Кто знает разобраться о кодировке? Я оплачиваю за работу

(Отредактировано автором: 21 Октября, 2011 - 15:45:59)

 
 Top
illy
Отправлено: 21 Октября, 2011 - 16:29:05
Post Id



Участник


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


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




экспортируй таблицу и залей сюда


-----
Всё гениальное - просто
И ещё проще, если ты - индиго
 
 Top
ralli23
Отправлено: 21 Октября, 2011 - 19:48:29
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




Зачем экспортируй таблицу и залей сюда?

Есть 1) выполнить SQL запрос из файла db_main_script.sql в созданной БД:
CREATE TABLE CONTACT(
pk_contact INT UNSIGNED NOT NULL auto_increment,
name VARCHAR(120) NOT NULL,
email VARCHAR(120) NOT NULL,
website VARCHAR(120) NOT NULL DEFAULT "",
message VARCHAR(300) NOT NULL,
added_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
primary key(pk_contact)
)type=innodb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

(Отредактировано автором: 21 Октября, 2011 - 19:49:25)

 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Октября, 2011 - 19:54:59
Post Id



Активный участник


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


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




Для начала создайте файл .htaccess в корне сайта и пропишите такие настройки:
RewriteEngine on
AddDefaultCharset utf-8

(Отредактировано автором: 21 Октября, 2011 - 20:06:21)

 
 Top
ralli23
Отправлено: 21 Октября, 2011 - 20:21:08
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




Я уже сделал. Все равно иероглифы приходят(((
 
 Top
Давит
Отправлено: 21 Октября, 2011 - 23:10:34
Post Id



Частый гость


Покинул форум
Сообщений всего: 147
Дата рег-ции: Май 2011  


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




Так и должно быть.
Кодировка файлах которые вы скачали, поставить UTF-8

(Отредактировано автором: 21 Октября, 2011 - 23:11:35)

 
 Top
armancho7777777 Супермодератор
Отправлено: 21 Октября, 2011 - 23:37:35
Post Id



Активный участник


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


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




После подключения к БД пропишите это:

PHP:
скопировать код в буфер обмена
  1.  
  2. mysql_query('SET NAMES utf8',$db);          
  3. mysql_query('SET CHARACTER SET utf8',$db);  
  4. mysql_query('SET COLLATION_CONNECTION="utf8_general_ci"',$db);
  5. mysql_query ("set character_set_client='utf8'",$db);
  6. mysql_query ("set character_set_results='utf8'",$db);
  7.  


И в фалах пропишите:

CODE (html):
скопировать код в буфер обмена
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">


Если не поможет, пересохраните файлы тоже в utf-8
(Добавление)
ralli23 пишет:
Все равно иероглифы приходят(((

И перепишите данные-то в БД.

(Отредактировано автором: 21 Октября, 2011 - 23:39:02)

 
 Top
ralli23
Отправлено: 22 Октября, 2011 - 14:29:05
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




Я сделаю все равно не получилось. Не понимаю куда вставить? Покажу:
4) db.php

<?php
require_once("config.php"); /* Configuration File */

class DB{

private $link;

public function __construct(){
$this->link = mysqli_connect(DB_SERVER, DB_USER, DB_PASS,DB_NAME);
if (mysqli_connect_errno())
exit();
}

public function __destruct() {
mysqli_close($this->link);
}

public function dbNewMessage($email,$name,$website,$message){
$email = mysqli_real_escape_string($this->link,$email);
$name = mysqli_real_escape_string($this->link,$name);
$website = mysqli_real_escape_string($this->link,$website);
$message = mysqli_real_escape_string($this->link,$message);

mysqli_autocommit($this->link,FALSE);

$query = "INSERT INTO CONTACT(pk_contact,name,email,website,message)
VALUES('NULL','$name','$email','$website','$message')";
mysqli_query($this->link,$query);
mysqli_query('SET NAMES utf8',$db);
mysqli_query('SET CHARACTER SET utf8',$db);
mysqli_query('SET COLLATION_CONNECTION="utf8_general_ci"',$db);
mysqli_query ("set character_set_client='utf8'",$db);
mysqli_query ("set character_set_results='utf8'",$db);

if(mysqli_errno($this->link))
return -1;
else{
mysqli_commit($this->link);
return 1;
}
}
};
?>
 
 Top
ralli23
Отправлено: 25 Октября, 2011 - 08:44:23
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




кто нибудь знает кодировку....пожалуйста помогите
 
 Top
morosit
Отправлено: 25 Октября, 2011 - 09:09:40
Post Id



Посетитель


Покинул форум
Сообщений всего: 307
Дата рег-ции: Июль 2010  
Откуда: Казахстан


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




ralli23 пишет:
У меня сайт на uft8 написан, пробовал и таблицу на cp1251_general_ci создавать

uft8 не равно cp1251_general_ci, надо все к одной кодировке проводить
 
 Top
dimka3210
Отправлено: 29 Октября, 2011 - 23:52:34
Post Id


Новичок


Покинул форум
Сообщений всего: 32
Дата рег-ции: Апр. 2011  


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




Тут не совсем понятно где именно проблема. Попробуй сначала в скрипте написать кириллицей просто строку. Погляди, если иероглифы, значит трабла с файлами. Если же отрисуется нормально, значит SET NAMES utf8.
 
 Top
ralli23
Отправлено: 30 Октября, 2011 - 02:29:49
Post Id


Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2011  


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




я сделал вставить много раз... все равно иероглифы приходят. Я не знаю как исправить трабла с файлами?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB