[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с кодировкой при регистрации
Kaspiy8
Доброго времени суток, форумчане.
Пытаюсь прикрутить регистрацию на сайт (PHP+MYSQL).
Исходники скачал в Интернете, все сделал по инструкции.
Тестирую. Если ввожу логин латиницей, все работает нормально, приходит письмо с подтверждением регистрации, проходит активация.
Если логин ввожу кириллицей, постоянно выдает ошибку - ваш логин должен состоять минимум из 3-х символов.

Подсказали, что проблема с кодировкой. У меня кодировка сайта - win 1251.
Пробовал решить проблему: вставлял в исходники <meta charset="UTF-8">, изменял кодировку самих файлов регистрации (UTF-8 w/o BOM) через notepad++, пробовал прописать iconv.. Уже несколько дней потратил, но все равно где-то вылазит ошибка.

Вопрос: может мне кто-то помочь переделать исходники. Может за деньги договоримся. Очень нужно..

reg.php
 
<html>
<head>
<title>
Регистрация</title>
</head>
<body>
<h2>
Регистрация</h2>
<form
action="save_user.php" method="post" enctype="multipart/form-data">
<p>
<label>
Ваш логин *:<br></label>
<input
name="login" type="text" size="15" maxlength="15">
</p>
<p>
<label>
Ваш пароль *:<br></label>
<input
name="password" type="password" size="15" maxlength="15">
</p>
<p>
<label>
Ваш E-mail *:<br></label>
<input
name="email" type="text" size="15" maxlength="100">
</p>

<p>
<label>
Выберите аватар. Изображение должно быть формата jpg, gif или png:<br></label>
<input
type="FILE" name="fupload">
</p>
<p>
Введите код с картинки *:<br>

<p><img
src="code/my_codegen.php"></p>
<p><input
type="text" name="code"></p>

<p>
<input
type="submit" name="submit" value="Зарегистрироваться">
</p></form>

Звездочками (*) обозначены поля, обязательные для заполнения.

</body>
</html>



save_user.php



<?php
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }
if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }
if (isset($_POST['code'])) { $code = $_POST['code']; if ($code == '') { unset($code);} }
if (isset($_POST['email'])) { $email = $_POST['email']; if ($email == '') { unset($email);} }
if (empty($login) or empty($password)or empty($code) or empty($email))
{
exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");
}
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
{exit ("Неверно введен е-mail!");}


function generate_code()
{

$hours = date("H");
$minuts = substr(date("H"), 0 , 1);
$mouns = date("m");
$year_day = date("z");

$str = $hours . $minuts . $mouns . $year_day;
$str = md5(md5($str));
$str = strrev($str);
$str = substr($str, 3, 6);

$array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
srand ((float)microtime()*1000000);
shuffle ($array_mix);
return implode("", $array_mix);
}

function chec_code($code)
{
$code = trim($code);

$array_mix = preg_split ('//', generate_code(), -1, PREG_SPLIT_NO_EMPTY);
$m_code = preg_split ('//', $code, -1, PREG_SPLIT_NO_EMPTY);

$result = array_intersect ($array_mix, $m_code);
if (strlen(generate_code())!=strlen($code))
{
return FALSE;
}
if (sizeof($result) == sizeof($array_mix))
{
return TRUE;
}
else
{
return FALSE;
}
}


if (!chec_code($_POST['code']))
{
exit ("Вы ввели неверно код с картинки.");
}

//если логин и пароль введены,то обрабатываем их
$login = stripslashes($login);
$login = htmlspecialchars($login);

$password = stripslashes($password);
$password = htmlspecialchars($password);

//удаляем лишние пробелы
$login = trim($login);
$password = trim($password);


//добавляем проверку на длину логина и пароля
if (strlen($login) < 3 or strlen($login) > 15) {

exit ("Логин должен состоять не менее чем из 3 символов и не более чем из 15.");

}
if (strlen($password) < 3 or strlen($password) > 15) {

exit ("Пароль должен состоять не менее чем из 3 символов и не более чем из 15.");

}

if (empty($_FILES['fupload']['name']))
{

$avatar = "avatars/net-avatara.jpg";
}

else
{

$path_to_90_directory = 'avatars/';


if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))//проверка формата исходного изображения
{

$filename = $_FILES['fupload']['name'];
$source = $_FILES['fupload']['tmp_name'];
$target = $path_to_90_directory . $filename;
move_uploaded_file($source, $target);

if(preg_match('/[.](GIF)|(gif)$/', $filename)) {
$im = imagecreatefromgif($path_to_90_directory.$filename) ;
}
if(preg_match('/[.](PNG)|(png)$/', $filename)) {
$im = imagecreatefrompng($path_to_90_directory.$filename) ;
}

if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename)) {
$im = imagecreatefromjpeg($path_to_90_directory.$filename);
}

//СОЗДАНИЕ КВАДРАТНОГО ИЗОБРАЖЕНИЯ

// Создание квадрата 90x90
// dest - результирующее изображение
// w - ширина изображения
// ratio - коэффициент пропорциональности


$w = 90; // квадратная 90x90.


$w_src = imagesx($im); //вычисляем ширину
$h_src = imagesy($im); //вычисляем высоту изображения

// создаём пустую квадратную картинку
// важно именно truecolor!, иначе будем иметь 8-битный результат

$dest = imagecreatetruecolor($w,$w);

// вырезаем квадратную серединку по x, если фото горизонтальное
if ($w_src>$h_src)
imagecopyresampled($dest, $im, 0, 0,
round((max($w_src,$h_src)-min($w_src,$h_src))/2),
0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));

// вырезаем квадратную верхушку по y,
// если фото вертикальное (хотя можно тоже серединку)

if ($w_src<$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w,
min($w_src,$h_src), min($w_src,$h_src));

// квадратная картинка масштабируется без вырезок
if ($w_src==$h_src)
imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);


$date=time(); //вычисляем время в настоящий момент.
imagejpeg($dest, $path_to_90_directory.$date.".jpg");

$avatar = $path_to_90_directory.$date.".jpg";

$delfull = $path_to_90_directory.$filename;
unlink ($delfull);
}
else
{

exit ("Аватар должен быть в формате <strong>JPG,GIF или PNG</strong>");

}
}


$password = md5($password);

$password = strrev($password);

$password = $password."b3p6f";


// подключаемся к базе
include ("bd.php");

// проверка на существование пользователя с таким же логином
$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);
if (!empty($myrow['id'])) {

exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин.");

}

// если такого нет, то сохраняем данные
$result2 = mysql_query ("INSERT INTO users (login,password,avatar,email,date) VALUES('$login','$password','$avatar','$email',NOW())");
// Проверяем, есть ли ошибки
if ($result2=='TRUE')
{

$result3 = mysql_query ("SELECT id FROM users WHERE login='$login'",$db);
$myrow3 = mysql_fetch_array($result3);
$activation = md5($myrow3['id']).md5($login);

$subject = "Подтверждение регистрации";
$message = "Здравствуйте! Спасибо за регистрацию на citename.ru\nВаш логин: ".$login."\n
Перейдите по ссылке, чтобы активировать ваш аккаунт:\nhttp://site/test3/activation.php?login=".$login."&code=".$activation."\nС уважением,\n
Администрация сайта";//содержание сообщение
mail($email, $subject, $message, "Content-type:text/plane; Charset=windows-1251\r\n");

echo "Вам на E-mail выслано письмо с cсылкой, для подтверждения регистрации. Внимание! Ссылка действительна 1 час. <a href='index.php'>Главная страница</a>";
}

else {
exit ("Ошибка! Вы не зарегистрированы.");
}
?>


activation.php


<?php
header('Content-Type: text/html; charset=UTF-8');
include ("../blocks/bd.php");
$result4 = mysql_query ("SELECT avatar FROM users WHERE activation='0' AND UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 3600");

if (mysql_num_rows($result4) > 0) {
$myrow4 = mysql_fetch_array($result4);
do
{
if ($myrow4['avatar'] == "avatars/net-avatara.jpg") {$a = "Ничего не делать";}
else {
unlink ($myrow4['avatar']);
}
}

while($myrow4 = mysql_fetch_array($result4));
}
mysql_query ("DELETE FROM users WHERE activation='0' AND UNIX_TIMESTAMP() - UNIX_TIMESTAMP(date) > 3600");

if (isset($_GET['code'])) {$code =$_GET['code']; }
else
{ exit("Вы зашил на страницу без кода подтверждения!");}

if (isset($_GET['login'])) {$login=$_GET['login']; }
else
{ exit("Вы зашил на страницу без логина!");}

$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);
$myrow = mysql_fetch_array($result);

$activation = md5($myrow['id']).md5($login);
if ($activation == $code) {
mysql_query("UPDATE users SET activation='1' WHERE login='$login'",$db);
echo "Ваш Е-мейл подтвержден! Теперь вы можете зайти на сайт под своим логином! <a href='index.php'>Главная страница</a>";
}
else {echo "Ошибка! Ваш Е-мейл не подтвержден! <a href='index.php'>Главная страница</a>";
}

?>
Быстрый ответ:

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