Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2010, 07:59   #1
sSsantasSs
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 64
По умолчанию Регистрация в hmailserver

Здравствуйте форумчане, пытаюсь сделать простенькую регистрацию для hmailserver, вроде всё сделано правильно, но что то не работает, подскажите где ошибка?

connect.php
PHP код:
<?php
$dblocation 
"localhost";
$dbname "hMailServer";
$dbuser "Administrator";
$dbpasswd "1234567890";
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if (!
$dbcnx)
{
echo( 
"<P> В настоящий момент сервер базы данных не доступен, поэтому корректное отображение страницы невозможно. </P>" );
exit();
}
if (!@
mysql_select_db($dbname$dbcnx))
{
echo( 
"<P> В настоящий момент база данных не доступна, поэтому корректное отображение страницы невозможно. .</P>" );
exit();
}
?>
index.php
PHP код:
<?php
echo'
<html>
<head>
<title>Скрипт регистрации</title>
</head>
<body>
<table>
<form action="reg.php" method="POST">
<tr>
<td>Email</td>
<td><input type="text" name="accountaddress" ></td>
</tr>
<tr>
<td>Пароль</td>
<td><input type="password" name="accountpassword" ></td>
</tr>
<tr>
<td>Повторите пароль</td>
<td><input type="password" name="accountpassword2"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK" name="submit" ></td>
</tr>
</form>
</table>
</body>
</html>
'
;
?>
reg.php
PHP код:
<?
include_once("connect.php");
if (isset(
$_POST['submit']))
{
    elseif(empty(
$_POST['accountaddress']))
    {
    echo 
'Вы не ввели E-mail';
    }
    elseif(empty(
$_POST['accountpassword']))
    {
    echo 
'Вы не ввели пароль';
    }
    elseif(empty(
$_POST['accountpassword2']))
    {
    echo 
'Вы не ввели подтверждение пароля';
    }
    elseif(
$_POST['accountpassword'] != $_POST['accountpassword2'])
    {
    echo 
'Введенные пароли не совпадают';
    }
    else
        {
        
$accountaddress $_POST['accountaddress'];
        
$accountpassword $_POST['accountpassword'];
        
$accountpassword2 $_POST['accountpassword2'];
        
$query "SELECT `id`
        FROM `hm_accounts`
        WHERE `accountaddress`='
{$accountaddress}' AND `accountpassword`='{$accountpassword}'
        "
;
        
$sql mysql_query($query) or die(mysql_error());
        if (
mysql_num_rows($sql) > 0)
        {
        echo 
'Такой ящик уже существует';
        }
        
        else
        {
            
$query "INSERT INTO hm_accounts (accountdomainid , accountaddress , accountpassword , accountactive , accountmaxsize , accountpwencryption)
            VALUES ('1', '
$accountaddress', '$accountpassword', '1', '20', '3')";
            
$result mysql_query($query) or die(mysql_error());;
            echo 
'Регистрация успешно завершена';
        }
    }
}
?>
sSsantasSs вне форума Ответить с цитированием
Старый 13.08.2010, 11:13   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Спасибо, поржал! ))))

Если у вас что-то не работает, то это что-то нужно где-то поменять. О том, что же такое это что-то и где оно находится вам расскажет ошибка, которая у вас появляется либо вместо нужной страницы, либо в файле ошибок сервера.

Подавляя ошибки через @, вы не скоро найдёте это что-то. )))

PHP код:
$query "INSERT INTO hm_accounts (accountdomainid , accountaddress , accountpassword , accountactive , accountmaxsize , accountpwencryption)
            VALUES ('1', '
$accountaddress', '$accountpassword', '1', '20', '3')"
Вы уверены, что у вас поля accountdomainid, accountactive, accountmaxsize и accountpwencryption строковые, а не числовые? Вы проверьте там... на всякий случай.

PHP код:
$query "SELECT `id`
        FROM `hm_accounts`
        WHERE `accountaddress`='
{$accountaddress}' AND `accountpassword`='{$accountpassword}'
        "

А что, если я введу admin и пароль 12345, то такой ящик можно будет создать? Ведь ящик такой есть, а пароль к нему не такой (я надеюсь). Ваша система пропустит этот запрос как валидный и я создам ещё один ящик админа! И будет у админа два ящика! )))) а потом их будет пара сотентысяч. Пускай ищет какой правильный.

Про проверку SQL запросов на предмет SQL-инъекций я вообще молчу. ПОРЖАААААААААААЛ! )))
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 13.08.2010, 11:14   #3
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

1.Если не работает - нужно в своём вопросе конкретизировать,что именно не работает - ясновидящих тут нет почти...

2.Вот вы в index.php весь html-вывод затолкали в php-код - это просто потому что "...файл ведь называется .php - значит там должен быть код php..." ?
Какая в этом необходимость?
Ведь PHP определяют как:
Цитата:
PHP is a widely-used general-purpose scripting language that is especially suited for Web development and can be embedded into HTML.
Это не ошибка,собственно - просто логично делать вставки PHP в HTML(для вывода значений переменных) - а не наоборот.

3.Вот тут вроде вложенные условия - разве не должны начинаться с if(condition) - а потом уж elseif:
PHP код:
if (isset($_POST['submit']))
{
    elseif(empty(
$_POST['accountaddress'])) // вот тут
    
{
    echo 
'Вы не ввели E-mail';
    }
    elseif(empty(
$_POST['accountpassword'])) 
- скорее всего ошибка в этом моменте.

4.С безопасностью у вас вообще никак - все переменные в запросах к БД абсолютно не обрабатываются (используйте хотябы mysql_real_escape_string() - для защиты БД от SQL-инъекций).

5.Если в таблице `hm_accounts` поле `accountdomainid` у вас автоинкрементное - тогда при добавлении новой записи в таблицу явно заполнять это поле не нужно - сработает автоинкремент,и автоматом подставит нужное значение - но тут я могу быть не прав,т.к. не знаю структуру вашей таблицы.

Указывайте в вопросе ,что конкретно не работает - так проще разобраться.
Andkorol вне форума Ответить с цитированием
Старый 29.06.2011, 14:36   #4
Kujbor
Новичок
Джуниор
 
Регистрация: 29.06.2011
Сообщений: 1
По умолчанию

Даже если запрос будет успешно завершен, ящик не заработает. Наличия заполненной строки в данной таблице не достаточно. Не знаю что еще нужно этому серверу для создания ящика. Кто-то смог сделать регистрацию к нему?
Kujbor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Hmailserver, регистрация аккаунта A_r_r_a_y PHP 2 01.09.2009 00:42
hMailServer, "внешняя" почта Zerone Свободное общение 0 13.02.2009 09:11
Регистрация БД Gladiator БД в Delphi 1 05.06.2008 00:09