у м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)