Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Проблема с кодировкой при регистрации
Kaspiy8  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 42186
На форуме: 1 год, 4 дня
Карма:




Доброго времени суток, форумчане.
Пытаюсь прикрутить регистрацию на сайт (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>";
}

?>
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
inpost  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Помагите Здесь живу!!!
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 22693
Пользователь №: 20039
На форуме: 7 лет
Карма: 599




Kaspiy8
Уже 5.4 не поддерживается, теперь минимум 5.5 версия PHP с резким уклоном через несколько месяцев в 7-у. Зачем тебе скрипт работающий на "mysql_query" , который будет кидать ошибки на каждом шагу? Или ты будешь извращенцем и просить установить очень старую кривую версию PHP лишь потому, что неправильно "написал код"?!

Этот код необходимо УДАЛИТЬ, и написать заново с пониманием принципов. Я твой скрипт за 10 минут могу взломать и от имени админа выставлять на твоём сайте похабщину. Тебе это надо?!

Так вот, ты хочешь нанять программиста для разработки скрипта тебе? Или вопрос стоит в "шоколадке студенту за исправления одного найденного тобой косяка из тысячи существующих"?


--------------------
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
PMПисьмо на e-mail пользователюICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kusss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1357
Пользователь №: 28976
На форуме: 5 лет, 4 месяца, 9 дней
Карма: 77




мда. код просто ужасен.

Проверяй свой логин на различных этапах.
die('<br>login='.$login);

после строчки , и если нужно далее по тексту.
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} }

Нахнера тут ЭТО ?
 
// if ($login == '') { unset($login);}
// if ($password =='') { unset($password);}
// и т.д.
// если дальше

if (empty($login) or empty($password)or empty($code) or empty($email)) {...}

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Kaspiy8  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 2
Пользователь №: 42186
На форуме: 1 год, 4 дня
Карма:




Kusss
Во-первых, я не программист. Код нашел в Интернете, пытаюсь его просто прикрутить. Об этом я написал выше.

Почему же такой ужасный? На сайтах с кодировкой UTF-8 он работает. А у меня кодировка win 1251. Решить проблему я пытался, но у меня не получилось.

Раз ты такой спец, напиши лучший код, озвучь цену и договоримся.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса