| |
|
|
| | устанавливаю соединение
<?php
// Адерс сервера MySQL
$dblocation = "localhost";
// Имя базы данных, на хостинге или локальной машине
$dbname = "guest";
// Имя пользователя базы данных
$dbuser = "root";
// и его пароль
$dbpasswd = "";
// Устанавливаем соединение с базой данных
$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
if (!$dbcnx) {
exit( "<P>В настоящий момент сервер базы данных не доступен,
поэтому корректное отображение страницы невозможно.</P>" );
} else { echo "Соединение с сервером успешно установлено<br/>";}
// Выбираем базу данных
if (! @mysql_select_db($dbname, $dbcnx) ) {
exit( "<P>В настоящий момент база данных не доступна,
поэтому корректное отображение страницы невозможно.</P>" );
} else { echo "Соединение с бозой '" .$dbname. "' успешно установлено";}
// Определяем версию сервера
$query = "SELECT VERSION()";
$ver = mysql_query($query);
if(!$ver) exit("Ошибка при определении версии MySQL-сервера");
$version = mysql_result($ver, 0);
list($major, $minor) = explode(".", $version);
// Если версия выше 4.1 сообщаем серверу, что будем работать с
// кодировкой cp1251
$ver = $major.".".$minor;
if((float)$ver >= 4.1)
{
mysql_query("SET NAMES 'cp1251'");
}
?>
|
делаю форму для регистрации
<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>Wap-сайт:</td><td><input type=text name=wap_url></td></tr>
<tr><td>Web-сайт:</td><td><input type=text name=web_url></td></tr>
<tr><td></td><td><input type=submit value='Зарегистрировать'></td></tr>
</form>
</table>
<?php
// Обработчик HTML-формы
/////////////////////////////////////////////////
// 1. Блок проверки правильности данных
/////////////////////////////////////////////////
// Удаляем лишние пробелы
$_POST['name'] = trim($_POST['name']);
$_POST['pass'] = trim($_POST['pass']);
$_POST['pass_again'] = trim($_POST['pass_again']);
// Проверяем не пустой ли суперглобальный массив $_POST
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('Пароли не совпадают');
// Если введён e-mail проверяем его на соответсвие
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');
}
}
// Если на сервер не включены "магические кавычки"
// обрабатываем введённые пользователями данные
// функцией mysql_escape_string()
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['wap_url'] = mysql_escape_string($_POST['wap_url']);
$_POST['web_url'] = mysql_escape_string($_POST['web_url']);
}
/////////////////////////////////////////////////
// 2. Блок проверки имени на уникальность
/////////////////////////////////////////////////
// Устанавливаем соединение с базой данных
require_once("config.php");
// Проверяем не было ли переданное имя
// зарегистрировано ранее
$query = "SELECT COUNT(*) FROM users WHERE name = '$_POST[name]'";
$usr = mysql_query($query);
if(!$usr) exit("Ошибка - ".mysql_error());
$total = mysql_result($usr, 0);
if($total > 0)
{
exit("Данное имя уже зарегистрировано, пожалуйста, выберите другое");
}
/////////////////////////////////////////////////
// 3. Блок регистрации пользователя
/////////////////////////////////////////////////
// Формируем и выполняем SQL-запрос на
// добавление нового пользователя
$query = "INSERT INTO users
VALUES(NULL,
'$_POST[name]',
'$_POST[pass]',
'$_POST[email]',
'$_POST[wap_url]',
'$_POST[web_url]')";
if(mysql_query($query))
{
// Осуществляем перезагрузку страницы,
// чтобы сбросить POST-данные
echo "<HTML><HEAD>
<META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'>
</HEAD></HTML>";
echo"Спасибо за регистрацию";
} else exit("Ошибка при добавлении данных - ".mysql_error());
?>
|
в результате получается
Соединение с сервером успешно установлено
Соединение с бозой 'guest' успешно установлено
Ошибка при добавлении данных - Column count doesn't match value count at row 1
|
где ошибка? | |
| |
|
|
| |
|
|
| |
для: Krasnodar
(03.01.2007 в 17:13)
| | |
$query = "INSERT INTO users
VALUES(NULL,
'$_POST[name]',
'$_POST[pass]',
'$_POST[email]',
'$_POST[wap_url]',
'$_POST[web_url]')";
|
Ошибка в запросе. Нужно - INSERT INTO users (поле1, поле2) VALUES ('знач1','знач2') - забыли указать поля. А можн INSERT INTO users SET поле1='значение1', поле2='значение2' | |
| |
|
|
| |
|
|
| |
для: tonnal
(03.01.2007 в 17:19)
| | | помоему указывать имена столбцов не обязательно, темболее запись идет во все столбци и попорядку.... | |
| |
|
|
| |
|
|
| |
для: Krasnodar
(03.01.2007 в 17:25)
| | | Если не указываете список столбцов, количество значений и столбцов должно совпадать. Если здесь таблица users таже самая, что и в теме http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=30165, то значений не хватает. | |
| |
|
|
| |
|
|
| |
для: cheops
(03.01.2007 в 17:53)
| | | Извиняюсь... Уже крыша начинает потихоньку ехать.... А как бырь со столбцом data регистрации? | |
| |
|
|
| |
|
|
| |
для: Krasnodar
(03.01.2007 в 18:26)
| | | Поставьте вместо него функцию NOW() - она автоматически вставит текущую дату. | |
| |
|
|