• Страница 1 из 1
  • 1
Модератор форума: LightInDarkness  
[Регистрация] Чистенькая страничка
CraZyRock
Центурион
Как то давно выкладывал страничку регистрации, решил довести до ума.


* Простая.
* Кроссбраузерная.
* С использованием ajax.(регистрация без перезагрузки страницы)
* Довольно симпатичная на взгляд.
* Оочень простой код.( php 5.0 +)
* Присутствует примитивная капча.

Первая версия


Список изменений(1 обновление):
* Смена кнопки.
* Возможность выбора несколько серверов.
* Немного откорректирована капча, теперь каждый раз при получение ответа, она меняется(от любителей часто тыкать по кнопкам)


Список изменений(2 обновление):
* Добавлена возможность проверки занятости e-mail адреса. Настройка в конфиге.
* Не большие корректировки касательно логики...
* Добавлена возможность отсылать письмо с информацией(регистрационными данными) на почту(настройка в конфиге)
* Добавлена возможность написать описание сайта -> конфиг.

[b]Скачиваем: битбукет



PS: Полностью мой код, подборка(сама черненькая форма была взята откуда то из зарубежного веб-сайта, не помню откуда и чуть допилина) дизайна тоже полностью моя.
Панки живут вечно!
Сообщение # 1 отредактировано CraZyRock - Суббота, 25.05.2013, 18:45
RazArt
Тазовод
я бы подключил нормальную библиотеку, которая сама работает с протоколами почты.. ибо mail блочится многими серверами. На гугл письма у меня не приходили, например. Ну и есть ещё фильтр для мэйла..

Код
preg_match("/^[a-zA-Z0-9_]+$/", $_POST['account'])

А ещё в логине есть . и @

И нахрен капчу в куки пихать? и она очень криво реализована, ибо при открытие нескольких окон регистрации будет работать только последняя капча.. что заранее глупо...
DumpMe v1.0 - система автоматического переноса персонажей

Вышла в свет первая стабильная версия. Писать в скайп - razart8
Сообщение # 2 отредактировано RazArt - Суббота, 25.05.2013, 17:30
CraZyRock
Центурион
RazArt, Еще один, а ты знаешь что если в логине будет знак @, то клиент будет считать это за мыло, и тебя кинет на батлнет, начнется обновление.

Php почта(функция mail) отправляется абсолютно на все сервера. Позже я реализую еще один способ, через smtp.

А зачем пользователю открывать несколько страниц регистрации? Зато это избавит от поточно определения капчи. 1 - браузер, 1 капча.
Панки живут вечно!
Сообщение # 3 написано 25.05.2013 в 18:43
Прадмур
~
Цитата (CraZyRock)
1 - браузер, 1 капча.

И прям нужное, беззащитное число внутри куки. То же самое, что и отсутствие капчи. Рай для спамеров.
Используй сессию. Она будет хранить сгенерированное число на сервере, а отдавать браузеру id сессии в куке.
Даже если будет сессия, то такая капча легко распознаётся ботами по трафарету. Нужен лишний изврат ) Полосочки перечёркивающие символы, смена цвета, лишние символы на фоне и т.п. Тогда уже придётся использовать человека для определения капчи и сервисы на подобии антикапчи.

И, это... на линуксе не полностью работает. Проверь регистр имён и пути.
Сообщение # 4 отредактировано Прадмур - Воскресенье, 26.05.2013, 01:31
CraZyRock
Центурион
И еще раз я скажу, эта капча лишь для формальности. Ни один спамер(адекватный и опытный) не будет спамить базу аккаунтов, не имеет не малейшего смысла.
Цитата
эквивалентно (в данном контексте)
здесь скобки ни к чему.
Цитата
foreach($server as $i=>$key)
{
echo "<option value=$i>".$key['name']."</option>";
}
первой что в голову пришло, исправлю.

Добавлено (26.05.2013, 12:45)
---------------------------------------------

Цитата
preg_match("/^[0-9]+$/", $_POST['server_id'])
Сделал чуть иначе.

Добавлено (26.05.2013, 14:20)
---------------------------------------------
Прадмур, да не в путях дело, причина почему так для меня крайне не понятна... Исправил во всяком случае.

Панки живут вечно!
Сообщение # 5 написано 26.05.2013 в 14:20
Прадмур
~
Цитата (CraZyRock)
Прадмур, да не в путях дело, причина почему так для меня крайне не понятна... Исправил во всяком случае.

Для начала нужно INDEX.PHP переименовать в index.php. На линуксе - это разные файлы и могуть быть в одной директории.
Не буду же я добавлять в настройки nginx'a ещё и INDEX.PHP рядом с index.php как индексный файл.
По тем же причинам ARROW.PNG в папке с изображениями и ARROW.png в css - разные вещи и ничего не отображает.
Остальное - мелочи.

mysqli принимает порт пятым параметром, а не вместе с именем хоста. Поэтому и зарегистрироваться невозможно.
Раз уж используешь mysqli, то вместо query, в которые ты подставляешь данные путём конкатенации, сделай подготовленные выражения. Так уж точно обезопасишь себя от sql инъекций.
Сообщение # 6 написано 26.05.2013 в 20:24
CraZyRock
Центурион
1) Все названия файлов прописанные буквами в верхнем регистре из за черепашки, все не могу нагуглить причину. Сам задолбался, если кто подскажет буду рад.
2) mysqli принимает порт пятым параметром, а не вместе с именем хоста, после mysql, пользовался в основном фраеймворками, не знал, теперь знаю спасибо. Но на саму регистрацию не как не влияет.
Подготовленные выражение, здесь не очень впишутся.
Панки живут вечно!
Сообщение # 7 написано 26.05.2013 в 21:07
Прадмур
~
Цитата (CraZyRock)
1) Все названия файлов прописанные буквами в верхнем регистре из за черепашки, все не могу нагуглить причину. Сам задолбался, если кто подскажет буду рад.

Использую гит и никогда не пользовался черепашкой. На битбакете есть git'овские репо так переходи на них. Так как репо открытый, то гитхаб - лучший вариант.

Цитата (CraZyRock)
Но на саму регистрацию не как не влияет.

Влияет до такой степени, что регистрация с таким конфигом невозможна и получаешь ошибку:
Connect Error (2005) Unknown MySQL server host 'localhost:3306'

Меняем на localhost без порта - и всё нормально.

Пробую на:
php 5.4.9
nginx 1.2.6
mysql 5.5.31

Не знаю что там у тебя и странно, что вообще работает.

Цитата (CraZyRock)
Подготовленные выражение, здесь не очень впишутся.

Они везде впишутся где есть запросы в которые нужно передавать параметры.
Сообщение # 8 написано 26.05.2013 в 21:31
CraZyRock
Центурион
Прадмур, тут всего 3 запроса. Мой php+mysql на винде древний и да, у меня работает, исправил вообщем то. По поводу верхнего регистра перелил все, вроде теперь все ок.

Добавлено (26.05.2013, 21:37)
---------------------------------------------
Сейчас пишу свою капчу, поглядим что будет.
Панки живут вечно!
Сообщение # 9 отредактировано CraZyRock - Воскресенье, 26.05.2013, 21:37
Прадмур
~
Цитата (CraZyRock)
тут всего 3 запроса

В чём разница? Да хоть один. Зато уверенность в безопасности базы.
Сообщение # 10 написано 26.05.2013 в 21:43
CraZyRock
Центурион
Пока что меня устраивает $mysqli->real_escape_string();

Добавлено (26.05.2013, 22:31)
---------------------------------------------
А выражения по мне, смотрятся громостко.

Панки живут вечно!
Сообщение # 11 написано 26.05.2013 в 22:31
Xamejiuoh
Центурион
CraZyRock, ну раз ты пользовался фреймворками посмотри ихний api как там всё это делается)может и код в порядок приведёшь
Сообщение # 12 написано 26.05.2013 в 23:15
Quintessence
Центурион
Ничего он в порядок не приведет.
Он даже не поймет, что в фреймворках делается!
Ведь это человек, который каптчу хранит в КУКАХ!!!
Уникальный рейтинг серверов http://rtop.biz
RTOP на WoWJP
Сообщение # 13 написано 27.05.2013 в 09:47
CraZyRock
Центурион
Quintessence, я не понимаю чем вас не устраивают куки? Они для того и придуманы чтобы в них хранить что то, да не спорю та капча что сейчас легко взламывается, я сотню раз про эту капчу сказал уже. Но если вы услышали что у меня плохая капча и теперь мне только этим будете тыкать, я делаю такой вывод что вы сами не чего не понимаете. Несколько человек мне сказали что у меня не так, все ок. Но вы в 10раз мне про эту капчу.
Панки живут вечно!
Сообщение # 14 написано 27.05.2013 в 10:58
Прадмур
~
Цитата (CraZyRock)
Но если вы услышали что у меня плохая капча и теперь мне только этим будете тыкать, я делаю такой вывод что вы сами не чего не понимаете. Несколько человек мне сказали что у меня не так, все ок. Но вы в 10раз мне про эту капчу.

Ни один нормальный человек увидев замечание и её последствия не оставит всё как есть.

Напишешь кому-то сайт, тогда пригласи меня на сайт сервера, а дальше уже посмотрим зачем нужны подготовленные выражения и капчи в сессиях.
Сообщение # 15 написано 27.05.2013 в 11:23
CraZyRock
Центурион
Прадмур, выше уже было сказано что я пишу свою капчу. Без проблем, приглашу.
Панки живут вечно!
Сообщение # 16 написано 27.05.2013 в 12:46
Прадмур
~
Цитата (CraZyRock)
выше уже было сказано что я пишу свою капчу

Да ты издеваешься? Причём тут капча и способ хранения сгенерированного капчей значения? Делай что хочешь.
Сообщение # 17 написано 27.05.2013 в 12:52
CraZyRock
Центурион
Я не вижу смысла, в том чтобы исправлять что-то, зная что ты это скоро заменишь. А если понять у вас нет сил, это далеко не мои проблемы.
Панки живут вечно!
Сообщение # 18 написано 27.05.2013 в 13:27
week93
Сержант
Можно использовать функцию для проверки символов.
старенькая функция раньше использовал:
Код
function isValidEmail($email){
   return eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email);
}


Сообщение # 19 отредактировано week93 - Понедельник, 03.06.2013, 22:13
rexpower
Сержант
Зачем только делать награмаждение кода, по-моему проще сделать так:
Код
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL))
   {
    $register->set_tpl('{INFORMATION}', '<font id="warning">Проверьте формат ввода E-mail. <font color=lightblue>Пример: example@example.com</font></font>');
    $register->set_tpl_html('{CONTENT}','./templates/default/modules/register_form.tpl');
   }

Тут уже и ООП присутствует, но суть думаю понять не трудно. Это конечно выдранный мой кусок кода, но вот ключевое место
Код
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
     <CODE>
}
Сообщение # 20 отредактировано rexpower - Понедельник, 03.06.2013, 23:10
  • Страница 1 из 1
  • 1
Поиск: