|
|
|
| Допустим есть код системы регистрации:
<table>
<form method=post>
<tr><td>Имя:</td><td><input type=text name=name></td></tr>
<tr><td>Пароль:</td><td><input type=password name=pass></td></tr>
<tr><td>Пароль:</td><td><input type=password name=pass_again></td></tr>
<tr><td>e-mail:</td><td><input type=text name=email></td></tr>
<tr><td>URL:</td><td><input type=text name=url></td></tr>
<tr><td></td><td><input type=submit value='Зарегистрировать'></td></tr>
</form>
</table>
<?php
$_POST['name'] = trim($_POST['name']);
$_POST['pass'] = trim($_POST['pass']);
$_POST['pass_again'] = trim($_POST['pass_again']);
if(empty($_POST['name'])) exit();
if(empty($_POST['name'])) exit('Поле "Имя" не заполнено');
if(empty($_POST['pass'])) exit('Одно из полей "Пароль" не заполнено');
if(empty($_POST['pass_again'])) exit('Одно из полей "Пароль"
не заполнено');
if($_POST['pass'] != $_POST['pass_again']) exit('Пароли не совпадают');
if(!empty($_POST['email']))
{
if(!preg_match("|^[-0-9a-z_]+@[-0-9a-z_]+\.[a-z]{2,6}$|i",
$_POST['email']))
{
exit('Поле "E-mail" должно соответствовать формату
somebody@somewhere.ru');
}
}
if (!get_magic_quotes_gpc())
{
$_POST['name'] = mysql_escape_string($_POST['name']);
$_POST['pass'] = mysql_escape_string($_POST['pass']);
$_POST['email'] = mysql_escape_string($_POST['email']);
$_POST['url'] = mysql_escape_string($_POST['url']);
}
require_once("config.php");
$query = "SELECT COUNT(*) FROM userlist WHERE name = '$_POST[name]'";
$usr = mysql_query($query);
if(!$usr) exit("Ошибка - ".mysql_error());
$total = mysql_result($usr, 0);
if($total > 0)
{
exit("Данное имя уже зарегистрировано, пожалуйста, выберите другое");
}
$query = "INSERT INTO userlist
VALUES(NULL,
'$_POST[name]',
'$_POST[pass]',
'$_POST[email]',
'$_POST[url]')";
if(mysql_query($query))
{
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
</HEAD></HTML>";
} else exit("Ошибка при добавлении данных - ".mysql_error());
?>
|
файл config.php
<?php
$dblocation = "localhost";
$dbname = "mybase";
$dbuser = "root";
$dbpasswd = "mypswd";
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
mysql_query("SET character_set_client='cp1251'");
mysql_query("SET character_set_results='cp1251'");
mysql_query("SET character_collation_connection='cp1251_general_ci'");
if (!$dbcnx)
{
exit ("<P>В настоящий момент сервер базы данных не доступен, поэтому
корректное отображение страницы невозможно.</P>" );
}
if (!@mysql_select_db($dbname, $dbcnx))
{
exit( "<P>В настоящий момент база данных не доступна, поэтому
корректное отображение страницы невозможно.</P>" );
}
?>
|
При отправке данных через форму на русском языке, к примеру имени, в базе данных
оно сохраняется знаками вопроса, как быть? на английском все нормально... | |
|
|
|
|
|
|
|
для: lightning.say
(10.11.2010 в 10:12)
| |
SHOW CREATE DATABASE mybase;
SHOW CREATE TABLE userlist;
|
что показывает?
За подобную фильтрацию е-мэйл следует расстреливать.
За хранение пароля - тоже.
И это... заголовок бы поглядели. как отправляется в php... а то мета эта ... позорище ведь... | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2010 в 10:39)
| | 1./* 40100 DEFAULT CHARACTER SET latin1 */
2.
userlist CREATE TABLE `userlist` (
`id_user` int(11) NOT NULL auto_increment,
`name` tinytext character set cp1251 NOT NULL,
`pass` tinytext character set cp1251 NOT NULL,
`email` tinytext character set cp1251 NOT NULL,
`url` tinytext character set cp1251 NOT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
->За подобную фильтрацию е-мэйл следует расстреливать.
->За хранение пароля - тоже.
->И это... заголовок бы поглядели. как отправляется в php... а то мета эта ... позорище ведь...
тогда вам прямо в БХВ-Петербург, там 2 автора есть ))))) | |
|
|
|
|
|
|
|
для: lightning.say
(10.11.2010 в 11:59)
| | >1./* 40100 DEFAULT CHARACTER SET latin1 */
> ) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
latin1 значит.
Еще вопросы остались?
>->За подобную фильтрацию е-мэйл следует расстреливать.
>->За хранение пароля - тоже.
>->И это... заголовок бы поглядели. как отправляется в php... а то мета эта ... позорище ведь...
>тогда вам прямо в БХВ-Петербург, там 2 автора есть )))))
Простите, мне туда з-зачем? )) | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2010 в 13:54)
| | ->ну как зачем? - расстрелять )))
да, но в другой таблице cp1251 по умолчанию а вопросы все равно выходят... ;(
вот у меня есть таблица
product CREATE TABLE `product` (
`id_product` int(11) NOT NULL auto_increment,
`equipment` tinytext NOT NULL,
`quantity` tinyint(20) NOT NULL default '0',
`serial` tinytext NOT NULL,
`hide` enum('show','hide') NOT NULL default 'show',
`pos` int(11) NOT NULL default '0',
`id_catalog` int(8) NOT NULL default '0',
PRIMARY KEY (`id_product`),
KEY `id_catalog` (`id_catalog`)
) ENGINE=MyISAM AUTO_INCREMENT=58 DEFAULT CHARSET=cp1251
заметь, DEFAULT CHARSET=cp1251
отправляю данные через форму:
if($title == "") $titlepage=$title = "Добавление оборудования";
if(!isset($button)) $button = "Добавить";
if(!isset($action)) $action = "addprod.php";
if(!isset($showhide)) $showhide = "checked";
if(!isset($pos))
{
$query = "SELECT MAX(pos) FROM product
WHERE id_catalog=".$_GET['id_parent'];
$num = mysql_query($query);
if($num) $pos = mysql_result($num,0) + 1;
}
?>
<table><tr><td>
<p class=boxmenu><a class=menu href="index.php?id_catalog=<? echo $id_catalog; ?>&id_parent=<? echo $id_parent ?>">Вернуться в администрирование каталога</a></p>
</td></tr></table>
<form action=<?php echo $action; ?> method=post>
<table>
<tr>
<td><p class=zag2>принадлежность</td>
</tr>
<tr><td><p class=zag2>оборудование</td><td><input size=61 class=input type=text name=equipment value='<?php echo $equipment; ?>'></td></tr>
<tr>
<td><p class=zag2>количество(шт)</td>
<td>
<select class=input type=text name=quantity>
<option value=1 <?php if($quantity==1) echo "selected"; ?>>1
<option value=2 <?php if($quantity==2) echo "selected"; ?>>2
<option value=3 <?php if($quantity==3) echo "selected"; ?>>3
<option value=4 <?php if($quantity==4) echo "selected"; ?>>4
<option value=5 <?php if($quantity==5) echo "selected"; ?>>5
<option value=6 <?php if($quantity==6) echo "selected"; ?>>6
</select>
</td>
</tr>
<tr><td><p class=zag2>серийный номер</td><td><input size=61 class=input type=text name=serial value='<?php echo $serial; ?>'></td></tr>
<tr><td><p class=zag2>Позиция</td><td><input class=input type=text name=pos value='<?php echo $pos; ?>'></td></tr>
<tr><td><p class=zag2>Отображать</td><td><input type=checkbox name=hide <?php echo $showhide; ?>></td></tr>
<tr><td></td><td><input class=button type=submit value=<?php echo $button; ?>></td></tr>
<input type=hidden name=id_catalog value=<?php echo $_GET['id_catalog']; ?>>
<input type=hidden name=id_product value=<?php echo $_GET['id_product']; ?>>
</table>
</form>
|
addprod.php
if(!isset($_POST['equipment'])) links($_POST['id_catalog'], "Отсутствует оборудование");
if(!isset($_POST['pos'])) links($_POST['id_catalog'], "Не введена позиция продукта");
if($_POST['hide'] == "on") $showhide = 'show';
else $showhide = 'hide';
$_POST['serial'] = str_replace("'","`",$_POST['serial']);
$_POST['equipment'] = str_replace("'","`",$_POST['equipment']);
$query = "INSERT INTO product VALUES (
NULL,
'".$_POST['equipment']."',
".$_POST['quantity'].",
".$_POST['serial'].",
'$showhide',
".$_POST['pos'].",
".$_POST['id_catalog'].")";
if(mysql_query($query)) {
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php?id_parent=".$_POST['id_catalog']."'>
</HEAD></HTML>";
} else puterror("Ошибка при добавлении продукции");
function links($id_catalog,$msg)
{
echo "<p>".$msg."</p>";
echo "<p><a href=# onClick='history.back()'>Вернуться к правке продукта</a></p>";
echo "<p><a href=index.php?id_parent=$id_catalog>Администрирование каталога продукции</a></p>";
exit();
}
|
config.php
$dblocation = "localhost";
$dbname = "site";
$dbuser = "root";
$dbpasswd = "pswd";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
mysql_query("SET character_set_client='cp1251'");
mysql_query("SET character_set_results='cp1251'");
mysql_query("SET character_collation_connection='cp1251_general_ci'");
if (!$dbcnx)
{
echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
if (! @mysql_select_db($dbname,$dbcnx) )
{
echo( "<P>В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно.</P>" );
exit();
}
function puterror($message)
{
echo("<p>$message</p>");
exit();
}
|
вводишь данные на русском и всё, в бд одни вопросы.... почему?
и ваша команда
show create database site;
/* default character set cp1251 */ | |
|
|
|
|
|
|
|
для: lightning.say
(10.11.2010 в 14:51)
| | Запрос
SHOW VARIABLES LIKE 'char%';
|
выполненный из-под скрипта что показывает?
Случ чего, результат такого запроса выводится точно также, как результат произвольного запроса SELECT . | |
|
|
|
|
|
|
|
для: lightning.say
(10.11.2010 в 14:51)
| | >->ну как зачем? - расстрелять )))
ну дык БХВ покамест здесь кривым кодом не пачкают.
а так, если есть желание - вперед :) | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2010 в 16:02)
| | все заработало!! хе, забыл добавить...
mysql_query("SET NAMES cp1251")
почему-то думал что надо для вывода из бд, для передачи данных оказывается тоже...
спасибо! | |
|
|
|