[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация
baton82
Уважаемые програмисты форумчане, благодаря вашему форуму и сайту Ирбис, написал регистрацию для сайта, теперь хотелось бы попросить вас прокомментировать получившееся, выссказать свои замечания, критику. Возможно что то не так написано или чего то не хватает, а может и вообще всё неправельно, поэтому прошу строго не судить.
Ну это просто главная страница

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</
head>

<
body>
<
div align="center">
<
a href="registration_step_one.php">Ругистрация</a>
</
div>
</
body>
</
html>

Это страница первого шага регистрации

<?php
header('Content-Type: text/html; charset=utf-8');
session_start();
$errorReg = $_SESSION['errorReg'];
unset($_SESSION['errorReg']);
session_destroy();
include './constants.php';
// Конструкция для заполнения значения поля Введите Ваш Email
if(!isset($errorReg['userEmail2']))
{
$errorRegUserEmail = 'Введите Ваш Email';
}
else
{
$errorRegUserEmail = $errorReg['userEmail2'];
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
title>Документ без названия</title>
<
script type="text/javascript" src="./captcha.js"></script>
</
head>

<
body>
<
form action="./registrationStepOne.php" method="post" name="registrationStepOne">
<
table width="100%" border="0" cellpadding="0" cellspacing="0">
<
tr>
<
td align="center"><?php echo htmlspecialchars($errorReg['userEmail']);?></td>
</
tr>
<
tr>
<
td align="center"><?php echo htmlspecialchars($errorReg['incorrectlyEmail']);?></td>
</
tr>
<
tr>
<
td align="center"><?php echo htmlspecialchars($errorReg['youDoNotAgreeWithTheRules']);?></td>
</
tr>
<
tr>
<
td align="center"><?php echo htmlspecialchars($errorReg['incorrect code']);?></td>
</
tr>
<
tr>
<
td align="center"><input name="userEmail" type="text" id="userEmail" value="<?php echo htmlspecialchars($errorRegUserEmail);?>"
onFocus="if(this.value == 'Введите Ваш Email') {this.value = '';}"
onBlur="if(this.value == ''){this.value = 'Введите Ваш Email';}" size="30"></td>
</
tr>
<
tr>
<
td align="center"><input type="checkbox" name="withTheRulesAgreed" id="soglasen">
С правилами согласен.</td>
</
tr>
<
tr>
<
td align="center"><input type="image" id="imgCaptcha" src="./captcha.php" value="" onClick="return refreshCaptcha();" /></td>
</
tr>
<
tr>
<
td align="center"><input type="text" id="userEmail" name="txtCaptcha" value="Текст с картинки"
onfocus="if(this.value == 'Текст с картинки') {this.value = '';}"
onblur="if(this.value == ''){this.value = 'Текст с картинки';}" maxlength="6" size="15" /></td>
</
tr>
<
tr>
<
td align="center"><input type="submit" name="reg" id="reg" value="Отправить">
<
input type="submit" name="reset" id="reset" value="Отмена"></td>
</
tr>
</
table>
</
form>
</
body>
</
html>

Зто обработчик первого шага регистрации

<?php
// Проверка формы регистрации первого шага
// Если проверка проходит, происходит перенаправление
// на страницу регистрации Шаг 2, а пользователю отправляется письмо
// с необходимыми для продолжения регистрации данными.

session_start();
$userEmail = trim(isset($_POST['userEmail'])?$_POST['userEmail']:NULL);
$withTheRulesAgreed = isset($_POST['withTheRulesAgreed'])?$_POST['withTheRulesAgreed']:NULL;
$txtCaptcha = strtoupper(trim(isset($_POST['txtCaptcha'])?$_POST['txtCaptcha']:NULL));
$reset = isset($_POST['reset'])?$_POST['reset']:NULL;
$captcha = isset($_SESSION['captcha'])?$_SESSION['captcha']:NULL;
$reg = isset($_POST['reg'])?$_POST['reg']:NULL;
$_SESSION['userEmail'] = $userEmail;
// Проверяем какая кнопка нажата, если нажата отмена перенаправляем пользователя на главную страницу,
// если нажата отправить, то выполняем проверку правельности заполнения формы.

if(isset($reset))
{
header ('location: ./index.php');
exit();
}
else
{
// Проверяем откуда пользователь обратился к обработчику
// если со страницы регистрации то выполняем проверку

if(isset($reg))
{
// Проверяем правильность заполнения полей формы
// Проверяем заполнено ли поле Email, если не заполнено то добавляем в массив $errorReg сообщение 'Вы не заполнили поле Email'

if($userEmail === 'Введите Ваш Email' || empty($userEmail))
{
$errorReg['userEmail'] = 'Вы не заполнили поле Email';
}
// Если поле Email заполнено то проверяем правильность его заполнения
else
{
// Создоём регулярное выражение для проверки Email
$regular = '#^[a-z0-9а-яё_\.-]+@[a-zа-яё0-9\.-]+\.[a-zрф]{2,6}$#ui';
// Сравниваем Email с регулярным выражением
$comparisonOfEmail = preg_match($regular,$userEmail);
// Если Email не корректный, заносим в массив $errorReg значение 'Некорректный Email'
if(empty($comparisonOfEmail))
{
$errorReg['incorrectlyEmail'] = 'Некоректный Email';
}
}

// Проверяем поставил ли пользователь галочку в поле "С правилами согласен",
// если нет то добавляем в массив $errorReg сообщение 'Вы не поставили галочку в поле "С правилами согласен"

if($withTheRulesAgreed != 'on')
{
$errorReg['youDoNotAgreeWithTheRules'] = 'Вы не поставили галочку в поле "С правилами согласен"';
}
// Проверяем заполнено ли поле "Текст с картинки" и сравниваем текст с картинки с введённым пользователем
// в поле "Текст с картинки", если текст не совпадает или поле пустое добавляем в массив $errorReg
// сообщение Поле "Текст с картинки" не заполнено или введён неверный код.
// Регулярное выражение для проверки Captchi

$regularCaptcha = '#^[A-Z0-9]{6}$#u';
// Сравниваем введённую пользователем Captchu с регулярным выражением
$comparisonOfTheCaptcha = preg_match($regularCaptcha,$txtCaptcha);
if($txtCaptcha !== $captcha || empty($comparisonOfTheCaptcha))
{
$errorReg['incorrect code'] = 'Поле "Текст с картинки" не заполнено или введён неверный код.';
}
// Проверяем пройдена ли проверка, если проверка пройдена то в массиве $errorReg нет элементов
// соответственно массив $errorReg равен нулю, в этом случае перенаправляем пользователя
// на страницу продолжения регистрации и отправляем ему письмо с кодом необходимым для
// продолжения регистрации, в пративном случае перенаправляем пользователя обратно на страницу регистрации
// и через сессию передаём массив $errorReg с ощибками которые выводим в форме регистрации.

if(count($errorReg) > 0)
{
$errorReg['userEmail2'] = $userEmail;
$_SESSION['errorReg'] = $errorReg;
header ('location: ./registration_step_one.php');
exit ();
}
else
{
// Подключаем файл с константами
include './constants.php';
// Формируем код проверки необходимый для продолжения регистрации
$codPodtv = md5($userEmail . SICRET);
// Отправляем пользователю письмо с данными необходимыми для продолжения регистрации
// Формируем письмо
// Заголовок Кому

$whom = $userEmail;
// Заголовок От кого
$ofWhom = ANSWERING_SYSTEM;
// Зоголовок тема письма
$subjectLine = 'Регистрация на сайте';
// Текст письма
$textMail = 'Регистрация Шаг 1
<p>С Вашего адреса электронной почты начата регистрация но сайте<br />
Если вы случайно закрыли страницу регистрации то перейдите по ссылке:
<a href="./registration_step_two.php">Регистрация Шаг 2</a></p>
Код подтверждения необходимый для продолжения регистрации: '
.htmlspecialchars($codPodtv). '
<p>Данное письмо сгенерировано и отправлено Вам автоматически, отвечать на него не нужно.<br />
Если Вам нежно связаться с нами, воспользуйтесь контактами указаными в заголовке письма.<br /><br />'
. date('l, d F Y, H:i:s, T O') . '</p>';
// Подключаем функцию отправки письма
include './emailAutoresponder.php';
// Перенаправляем пользователя на страницу продолжения регистрации
header ('location: ./registration_step_two.php');
exit();
}
}

// Если пользователь обратился к обработчику не со страницы регистрации через кнопку отправить
// а скажем напрямую ввёл в строку адреса адрес обработчика, то перенаправляем пользователя на главную страницу

else
{
header ('location: ./index.php');
exit();
}
exit();
}

Это страница второго шага регистрации

<?php
header('Content-Type: text/html; charset=utf-8');
session_start();
include './constants.php';
$userEmail = isset($_SESSION['userEmail'])?$_SESSION['userEmail']:NULL;
$returnValues = isset($_SESSION['returnValues'])?$_SESSION['returnValues']:NULL;
$errorRegStepTwo = isset($_SESSION['errorRegStepTwo'])?$_SESSION['errorRegStepTwo']:NULL;
unset($_SESSION['userEmail']);
unset($_SESSION['returnValues']);
unset($_SESSION['errorRegStepTwo']);
session_destroy();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<
title>Регистрация шаг 2</title>
</
head>

<
body>
<
form name="form2" method="post" action="./registrationStepTwo.php">
<
table width="100%" border="0" cellpadding="0" cellspacing="0">
<
tr>
<
td colspan="3"><?php echo htmlspecialchars($errorRegStepTwo['userExists']);?></td>
</
tr>
<
tr>
<
td width="250" align="left">Ваш логин</td>
<
td width="204" align="left"><input name="userLogin" type="text" id="userLoginStepTwo" value="<?php echo htmlspecialchars($returnValues['userLogin']);?>" size="33"></td>
<
td width="862"><?php echo htmlspecialchars($errorRegStepTwo['userLogin']);?></td>
</
tr>
<
tr>
<
td width="250" align="left">Ваше имя</td>
<
td align="left"><input name="userName" type="text" id="userNameStepTwo" value="<?php echo htmlspecialchars($returnValues['userName']);?>" size="33"></td>
<
td><?php echo htmlspecialchars($errorRegStepTwo['userName']);?></td>
</
tr>
<
tr>
<
td width="250" align="left">Ваш Email</td>
<
td align="left"><input name="userEmail" type="text" id="userEmailStepTwo" value="<?php echo htmlspecialchars($userEmail);?>" size="33"></td>
<
td><?php echo htmlspecialchars($errorRegStepTwo['userEmail']);?></td>
</
tr>
<
tr>
<
td width="250" align="left">Код подтверждения</td>
<
td align="left"><input name="codPodtv" type="text" id="codPodtvStepTwo" value="<?php echo htmlspecialchars($returnValues['codPodtv']);?>" size="33"></td>
<
td><?php echo htmlspecialchars($errorRegStepTwo['codPodtv']);?></td>
</
tr>
<
tr>
<
td width="250" align="left">Пароль</td>
<
td align="left"><input name="password2" type="password" id="password2" size="33"></td>
<
td rowspan="2"><?php echo htmlspecialchars($errorRegStepTwo['password2']);?><?php echo htmlspecialchars($errorRegStepTwo['passwordPodtv']);?></td>
</
tr>
<
tr>
<
td width="250" align="left">Повторить пароль</td>
<
td align="left"><input name="passvordPodtv" type="password" id="passvordPodtv" size="33"></td>
</
tr>
<
tr>
<
td colspan="3"><input type="submit" name="send" id="send" value="Отправить">
<
input type="submit" name="cancel" id="cancel" value="Отмена"></td>
</
tr>
</
table>
</
form>
</
body>
</
html>

Это обработчик второго шага регистрации

<?php
header('Content-Type: text/html; charset=utf-8');
include './config.php';
include './constants.php';
$cancel = isset($_POST['cancel'])?$_POST['cancel']:NULL;
$send = isset($_POST['send'])?$_POST['send']:NULL;
$userLogin = trim(isset($_POST['userLogin'])?$_POST['userLogin']:NULL);
$userName = trim(isset($_POST['userName'])?$_POST['userName']:NULL);
$codPodtv = trim(isset($_POST['codPodtv'])?$_POST['codPodtv']:NULL);
$userEmail = trim(isset($_POST['userEmail'])?$_POST['userEmail']:NULL);
$password2 = trim(isset($_POST['password2'])?$_POST['password2']:NULL);
$passvordPodtv = trim(isset($_POST['passvordPodtv'])?$_POST['passvordPodtv']:NULL);
$returnValues['userLogin'] = $userLogin;
$returnValues['userName'] = $userName;
$returnValues['codPodtv'] = $codPodtv;
// Проверяем какая кнопка нажата, если кнопка отмена
// то перенаправляем пользователя на главную страницу

if(isset($cancel))
{
header ('location: ./index.php');
exit();
}
else
{
// Если нажата кнопка отправить выполняем проверку
if(isset($send))
{
// Проверяем заполнино ли поле "Логин" если не заполнено
// добавляем в массив $errorRegStepTwo значение 'Не заполнено поле "Логин"'
// иначе продолжаем проверку логина.

if(empty($userLogin))
{
$errorRegStepTwo['userLogin'] = 'Не заполнено поле "Логин"';
}
else
{
// Создаём регулярное выражение для проверки логина
$regularUserLogin = '#^[a-z0-9_-]+$#ui';
// Сравниваем логин с регулярным выражением
$comparisonOfTheUserLogin = preg_match($regularUserLogin,$userLogin);
// Если логин не равен регулярному выражению заносим в массив $errorRegStepTwo значение
// 'Поле "Логин" может содержать только латинские символы от A-Z, знаки подчёркивание, тире и цыфры от 0-9. (Регистр значения не имеет.)'

if(empty($comparisonOfTheUserLogin))
{
$errorRegStepTwo['userLogin'] = 'Поле "Логин" может содержать только латинские символы от A-Z,
знаки подчёркивание, тире и цыфры от 0-9. (Регистр значения не имеет.)'
;
}
}

// Проверяем заполнино ли поле "Ваше имя" если не заполнено
// добавляем в массив $errorRegStepTwo значение 'Не заполнено поле "Ваше имя"'
// иначе продолжаем проверку имени.

if(empty($userName))
{
$errorRegStepTwo['userName'] = 'Не заполнено поле "Ваше имя"';
}
else
{
// Создаём регулярное выражение для проверки имени
$regularUserName = '#^[a-zа-яё ]+$#ui';
// Сравниваем имя пользователя с регулярным выражением
$comparisonOfTheUserName = preg_match($regularUserName,$userName);
// Если имя пользователя не равно регулярному выражению заносим в массив $errorRegStepTwo значение
// 'Поле "Ваше имя" может содержать только русские и латинские буквы. (Регистр значения не имеет.)'

if(empty($comparisonOfTheUserName))
{
$errorRegStepTwo['userName'] = 'Поле "Ваше имя" может содержать только русские и латинские буквы. (Регистр значения не имеет.)';
}
}

// Проверяем заполнено ли поле "Код подтверждения"
// если поле не заполнено добавляем в массив $errorRegStepTwo значение 'Вы не ввели код подтверждения'
// иначе продолжаем проверку

if(empty($codPodtv))
{
$errorRegStepTwo['codPodtv'] = 'Вы не ввели код подтверждения';
}
// Проверяем соответствует ли код подтверждения коду отправленому пользователю
// в письме на первом этапе регистрации, если нет то заносим в массив $errorRegStepTwo
// значение 'Не верный код подтверждения'

else
{
$codPodtvProv = md5($userEmail . SICRET);
if($codPodtvProv !== $codPodtv)
{
$errorRegStepTwo['codPodtv'] = 'Не верный код подтверждения';
}
}

// Проверяем заполнено ли поле "Ваш Email" если поле не заполнено
// заносим в массив $errorRegStepTwo значение 'Не заполнено поле "Ваш Email"'и продолжаем проверку

if(empty($userEmail))
{
$errorRegStepTwo['userEmail'] = 'Не заполнено поле "Ваш Email"';
}
else
{
// Создоём регулярное выражение для проверки Email
$regularEmail = '#^[a-z0-9а-яё_\.-]+@[a-zа-яё0-9\.-]+\.[a-zрф]{2,6}$#ui';
// Сравниваем Email с регулярным выражением
$comparisonOfEmail = preg_match($regularEmail,$userEmail);
// Если Email не корректный, заносим в массив $errorRegStepTwo значение 'Некорректный Email'
if(empty($comparisonOfEmail))
{
$errorRegStepTwo['userEmail'] = 'Некоректный Email';
}
}

// Проверяем заполнено ли поле "Пароль" если не заполнено в массив $errorRegStepTwo
// заносим значение 'Вы не заполнили поле "Пароль"' и продолжаем проверку

if(empty($password2))
{
$errorRegStepTwo['password2'] = 'Вы не заполнили поле "Пароль"';
}
// Проверяем длинну пароля, если длинна меньше 6-и символов заносим в массив $errorRegStepTwo
// значение 'Пароль не должен быть короче 6-и символов"' и продолжаем проверку

elseif(strlen($password2) < 6)
{
$errorRegStepTwo['password2'] = 'Пароль не должен быть короче 6-и символов"';
}
// Проверяем заполнено ли поле "Повторить пароль" если не заполнено в массив $errorRegStepTwo
// заносим значение 'Вы не заполнили поле "Повторить пароль"' и продолжаем проверку

elseif(empty($passvordPodtv))
{
$errorRegStepTwo['passwordPodtv'] = 'Вы не заполнили поле "Повторить пароль"';
}
// Если поля для паролей заполнены корректно сравниваем паролиесли пароли
else
{
// Сравеиваем пароли, если пароли не равны заносим в массив
// $errorRegStepTwo значение 'Пароли не совпадают'

if($password2 !== $passvordPodtv)
{
$errorRegStepTwo['password2'] = 'Пароли не совпадают';
}
}

// Если предыдущие проверки пройдены
// проверяем есть ли в СУБД логин и Email такие же как ввёл пользователь

if(count($errorRegStepTwo) == 0)
{
// Проверяем не существует ли уже пользователь с таким именем или адресом Email
// Создайм запрос к СУБД

$query = 'select * from `userList`
where `userLogin_db` = "'
.mysql_real_escape_string($userLogin).'"
or `userEmail_db` = "'
.mysql_real_escape_string($userEmail).'"';
// Запрашиваем необходимую информацию из СУБД
$sqlQuery = mysql_query($query) or die(mysql_error() .'<br>'. $query);
// Проверяем есть наличие в СУБД пользователя с такими же данными
// если пользователь с указанными данными есть то переменная $sqlQuery
// будет больше ноля соответственно указанные данные уже существуют
// если так то заносим в массив $errorRegStepTwo значение
// 'Пользователь с логином "' .$userLogin. '" или адресом электронной почты "' .$userEmail. '" уже существует'

if (mysql_num_rows($sqlQuery) != 0)
{
$errorRegStepTwo['userExists'] = 'Пользователь с логином "' .$userLogin. '" или адресом электронной почты "' .$userEmail. '" уже существует';
}
// Проверяем пройдена ли проверка, если проверка не пройдена
// то в массиве $errorRegStepTwo количество элементов не равно о
// соответственно перенаправляем пользователя снова к странице регистрации
// и выводим соответствующие сообщения об ошибках

}
if (count($errorRegStepTwo) > 0)
{
session_start();
$_SESSION['errorRegStepTwo'] = $errorRegStepTwo;
$_SESSION['returnValues'] = $returnValues;
$_SESSION['userEmail'] = $userEmail;
header ('location: ./registration_step_two.php');
exit ();
}
// Если все проверки пройдены то регистрируем пользователя
// Перед регистрацией шифруем пароль в MD5

$passwordMD5 = md5($password2);
// Так же добавляем в базу личный код пользователя
$userID = $codPodtvProv;
// Присваеваем пользователю группу "Посетитель"
$userGroup = 'Посетитель';
// Дабавляем дату регистрации
$dateRegisteredUser = date('Y-m-d');
// Всавляем все значения в БД
$userRegistration = mysql_query ('insert into `userList`
(`userLogin_db`, `userName_db`, `userEmail_db`, `userGroup_db`, `dateRegisteredUser_db`, `userID_db`, `userPassword_db`)
values
("'
.mysql_real_escape_string($userLogin).'",
"'
.mysql_real_escape_string($userName).'",
"'
.mysql_real_escape_string($userEmail).'",
"'
.mysql_real_escape_string($userGroup).'",
"'
.mysql_real_escape_string($dateRegisteredUser).'",
"'
.mysql_real_escape_string($userID).'",
"'
.$passwordMD5.'")') or die(mysql_error());
if($userRegistration)
{
// Подключаем файл с константам
include './constants.php';
// Отправляем пользователю письмо с данными необходимыми для продолжения регистрации
// Формируем письмо
// Заголовок Кому

$whom = $userEmail;
// Заголовок От кого
$ofWhom = ANSWERING_SYSTEM;
// Зоголовок тема письма
$subjectLine = 'Регистрация на сайте';
// Текст письма
$textMail = '<strong style="color:#06F;">Регистрация Шаг 2</strong>
<p>Уважаемый(ая) '
.htmlspecialchars($userName). '<br />
Вы успешно зарегистрировались на сайте</p>
<p>Данные для входа:<br />
<strong>Логин:</strong> '
.htmlspecialchars($userLogin). '<br />
<strong>Пароль:</strong> '
.htmlspecialchars($password2). '</p>
<p style=" color: #666;">Данное письмо сгенерировано и отправлено Вам автоматически, отвечать на него не нужно.<br>
Если Вам нежно связаться с нами, воспользуйтесь контактами указаными в заголовке письма.<br /><br />'
. date('l, d F Y, H:i:s, T O') . '</p>';
// Подключаем функцию отправки письма
include './emailAutoresponder.php';
header ('location: ./index.php');
exit();
}
}

else
{
header ('location: ./index.php');
exit();
}
exit();
}

Это файлы необходимые по ходу регистрации
Файл Капчи (Капча не моя а с Ирбиса)

<?php
// Начинаем сессию, далее мы добавим в нее ключ
session_start();

// Получаю строку из пяти случайных символов
$string = getRandomString(6, 'upper');

// Задаем размеры капчи (самой картинки) в пикселях
$width = 108;
$height = 25;

// Строим пустое изображение. К высоте добавляется 15 пикселей, это будет белая
// полосочка снизу с текстом "press to change"

$captcha = imagecreatetruecolor($width, $height + 15);

// Получаю случайный цвет для фона
$bg = imagecolorallocate($captcha, mt_rand(10, 50), mt_rand(10, 50), mt_rand(10, 50));

// Определяю цвет фона для строки
$font_color = imagecolorallocate($captcha, mt_rand(220, 255), mt_rand(220, 255), mt_rand(220, 255));

$white = imagecolorallocate($captcha, 255, 255, 255);
$black = imagecolorallocate($captcha, 0, 0, 0);

// Заливаю капчу цветом фона, но оставляю снизу белую полоску
imagefill($captcha, 0, 0, $white);
imagefilledrectangle($captcha, 0, 0, $width, $height, $bg);

// "Разбрасываю" в случайном порядке четыре линии по капче. Цвета линий тоже
// определяются случайно

for ($i = 0; $i < 4; $i++)
{
// Создаю случайный цвет для очередной линии
$color = imagecolorallocate($captcha, mt_rand(170, 255), mt_rand(170, 255), mt_rand(170, 255));

// Черчу линию между двумя случайными точками
imageline(
$captcha,
mt_rand(0, $width - 1),
mt_rand(0, $height - 1),
mt_rand(0, $width - 1),
mt_rand(0, $height - 1),
$color
);
}

// Пишу эту случайную строку в капче
imagestring($captcha, 5, 33, 5, $string, $font_color);

// Указание пользователю
$how_refresh = 'press to change';
imagestring($captcha, 3, 2, 26, $how_refresh, $black);

// Сохраняю строку в сессии
$_SESSION['captcha'] = $string;

// Отсылаем заголовок браузеру, что ему сейчас будет передана картинка
header('Content-type: image/png');

// Отсылаем картинку в стандартный выходной поток (в браузер)
imagepng($captcha);

/**
* Генерирует строку случайных символов
*
*
@param int $length - длина строки
*
@param string $case - регистр генерируемых символов, может быть lower, upper,
* both. Если не передан ни один из вышеперечисленных, то
* используется lower
*
@return string - строка, состоящая из случайных символов заданной длины
*
*/

function getRandomString($length, $case = 'both')
{
/* Латинские символы, похожие на символы киррилицы:
* в ниженем регистре: a b c e o p x l
* в верхнем регистре: A B C E H K M O P T X
*/

$ban_chars = array('a', 'b', 'c', 'e', 'o', 'p', 'x', 'l',
'A', 'B', 'C', 'E', 'H', 'K', 'M', 'O', 'P', 'T', 'X');

// В зависимости от $case формирую массив диапазонов символов, из которых
// можно выбирать

switch ($case)
{
case 'upper':
$random_chars = range('A', 'Z');
break;

case 'both':
$random_chars = array_merge(range('a', 'z'), range('A', 'Z'));
break;

case 'lower':
default:
$random_chars = range('a', 'z');
break;
}
// Добавляю цифр (ноль похож на O, по этому игнорируем
$random_chars = array_merge(range(1, 9), $random_chars);
// Удаляю неоднозначные символы
$random_chars = array_diff($random_chars, $ban_chars);
// Перемешиваю массив
shuffle($random_chars);
// Беру первые $length элементов
$chars = array_slice($random_chars, 0, $length);
// Соединяю их в строку и - марш на выход.
return implode('', $chars);
}

Файл с константами (Просто решил выделить в отдельный файл чтобы легче было редактировать)

define('SICRET','Какой то код');
define('ANSWERING_SYSTEM', 'example@example.com');

Файл config.php

<?php
// Константы для подключения к СУБД
define("HOST","localhost");
define("USER","root");
define("PASS","1a2a3a4a5a");
define("DB","nameDB");
// Подключаемся к СУБД
$conect = mysql_connect (HOST, USER, PASS) or die ('Ошибка подключения к СУБД <br>' .mysql_error());
// Выбираем базу данных
mysql_select_db (DB, $conect) or die ('Ошибка подключения к БД <br>' .mysql_error());
// Прописываем кодировку СУБД UTF8
mysql_query ("SET NAMES utf8");
mysql_query ("set character_set_client='utf8'");
mysql_query ("set character_set_results='utf8'");
mysql_query ("set collation_connection='utf8_general_ci'");

Файл отправки писем при регистрации

<?php
$bodyOfTheMessage ='<table width="80%" border="0" align="center" cellpadding="0" cellspacing="0" style="background-color:#F9FAFA;">
<tr>
<td style="padding:10px;">
<table width="100%" border="0" cellpadding="0" cellspacing="0" style="border:solid 1px #CCC;">
<tr>
<td><table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="236" align="center" style="background:#FFF;"></td>
<td align="right" valign="top" style="border-bottom:solid 1px #CCC; border-left:solid 1px #CCC;font-family:tahoma; font-size:12px; font-weight:bold;
color:#06F;padding:10px;">Контакты<br />
ICQ: 888888888<br />
Тел.: 8 800 888 88 88<br />
Email: <a style="color:#06F;" href="mailto:example@example.com">example@example.com</a></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="left" valign="top" style="background-color:#FFF; padding:20px;">'
.$textMail. '</td>
</tr>
</table>
</td>
</tr>
</table>'
;
$to = $whom;
$from = $ofWhom;
$subject = $subjectLine;
$subject = '=?utf-8?b?'. base64_encode($subject) .'?=';
$headers = "Content-type: text/html; charset=\"utf-8\"\r\n";
$headers .= "From: <". $from .">\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Date: ". date('l, d F Y, H:i:s, T O') ."\r\n";
$message = $bodyOfTheMessage;
mail($to, $subject, $message, $headers, '-f'. $from);

Файл ЯваСкрипт

// Функция, обновляющая капчу
function refreshCaptcha() {
img = document.getElementById('imgCaptcha');
img.src = './captcha.php?' + Math.random();
return false
}




Спустя 1 час, 2 минуты, 13 секунд (3.09.2011 - 18:58) minok94 написал(а):
А не проще выложить архив, чем выкладывать такую гору кода?...

Спустя 12 минут, 44 секунды (3.09.2011 - 19:10) baton82 написал(а):
Цитата (minok94 @ 3.09.2011 - 15:58)
А не проще выложить архив, чем выкладывать такую гору кода?...

Извеняйте чего то не додумал и чегото не могу найти как прикрепить файл или надо его куда то залить а здесь ссылку

Спустя 4 дня, 12 часов, 42 минуты, 22 секунды (8.09.2011 - 07:53) sadon написал(а):
за исключением корявых использований английских слов
и усердного использования headers
вполне норм


а если детально, то есть конечно везде подводне камни, но они приходят с опытом
вместо
$headers = "Content-type: text/html; charset=\"utf-8\"\r\n"; можно было опустить и настроить на такую выдачу Apache.

$subject = '=?utf-8?b?'. base64_encode($subject) .'?=';
Здесь выглядит красиво но на практике старые мобильные клиенты, Nokia (Mail) например, заголовок выведет крякозябрами, надо кодировать KOI-8R, даже не win-1251

Еще много возможностей перед вами откроется при использовании шаблонизаторов, и работа с buffers
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.