Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Скрипт - регистрация по приглашению
Форумы портала PHP.SU » » Вопросы новичков » Скрипт - регистрация по приглашению

Страниц (1): [1]
 

1. etoYA - 05 Ноября, 2011 - 04:25:20 - перейти к сообщению
Собственно как организовать регистрацию по приглашению?

К примеру: в форму пригласить "логин" и для него автоматически генерируется уникальный код? Как это вообще организовать?
2. DeepVarvar - 05 Ноября, 2011 - 05:02:36 - перейти к сообщению
Просто генерить уникальный инвайт (или несколько) для уже зареганного.
Зареганный дает инвайт кому-то.
А этот кто-то регаясь пишет инвайт в соответствующее поле.
Если инвайт совпал - регаем.
А у того кто давал инвайт, помечаем его использованным.
3. etoYA - 05 Ноября, 2011 - 05:11:06 - перейти к сообщению
Ну мне немного проще, я просто пока еще не умею генерировать случайные данные, собственно в этом и была суть вопроса....
(Добавление)
Мб функция rand?
(Добавление)
но тогда не могу понять как сделать xx-xxxx-xxxx
4. LIME - 05 Ноября, 2011 - 05:15:17 - перейти к сообщению
http://php.su/functions/?f=md5
(Добавление)
md5(time()) для уникальности
5. etoYA - 05 Ноября, 2011 - 05:18:42 - перейти к сообщению
Хм, точно, но попробую подругому..
6. DeepVarvar - 05 Ноября, 2011 - 05:50:21 - перейти к сообщению
sha1 ???
7. etoYA - 05 Ноября, 2011 - 05:50:47 - перейти к сообщению
В общем буду делать так:

Создам таблицу и в нее буду добавлять Ник и инвайт, при регистрации(ну это я к примеру говорил, на самом деле активации) сверять ник на который был выдан инвайт с инвайт.

Вот что-то накавырял

PHP:
скопировать код в буфер обмена
  1. <?
  2. function generateVouch ($lenght) {
  3.         $str = 'qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890';
  4.         $int = strlen($str);
  5.         for ($i = 0; $i < $lenght; $i++) {
  6.                 $x1 .= substr($str, rand(1, $int) - 1, 1);
  7.                 $x2 .= substr($str, rand(1, $int) - 1, 1);
  8.                 $x3 .= substr($str, rand(1, $int) - 1, 1);
  9.                 $x4 .= substr($str, rand(1, $int) - 1, 1);
  10.                 $vouch = "$x1-$x2-$x3-$x4";
  11.         }
  12.         return $vouch;
  13. }
  14. echo generateVouch(4);
  15. ?>



Так делать вообще нормально, или лучше как сказал LIME с помщью мд5?

Выводит xxxx-xxxx-xxxx-xxxx как и было задумано
8. DeepVarvar - 05 Ноября, 2011 - 05:54:48 - перейти к сообщению
Так могут повторится. Лучше забивать даже не по time, т.к. это секундный промежуток и два юзера за одну секунду могут получить одинаковый хеш.
Самое действенное:

Совпадений не будет даже на сотых долях секунды.
9. etoYA - 05 Ноября, 2011 - 06:00:13 - перейти к сообщению
Впринципе совпадения не играют роли, так как сверять буду по нику и по инвайту, поэтому мне кажется мой вариант сойдет.... Да и то что повторится это уж большая редкость будет, ведь 16 символов.... причем с разным регистром.
10. LIME - 05 Ноября, 2011 - 06:18:08 - перейти к сообщению
etoYA встроенные ф-ции просто гораздо быстрее да и читаемость кода повышается
зачем городить свою фцию если можно одной строчкой сделать
md5($login.microtime()) как вариант против совпадений
11. etoYA - 05 Ноября, 2011 - 06:46:42 - перейти к сообщению
Возможно вы и правы....
12. vixa - 06 Ноября, 2011 - 00:52:29 - перейти к сообщению
Создай таблицу в которую будут вносится коды приглашения после напиши html код
CODE (html):
скопировать код в буфер обмена
  1. <form action="reg.php" method="post">Введите код приглашения: <input type="text" name="regcode" /><p><input type="submit" name="ok" value="Ввести" /></p></form>


сделай проверку чтото в роде такого
PHP:
скопировать код в буфер обмена
  1. $kode = $_POST['kode'];
  2. $res = mysql_query("select * from regcode where codeid = '$kode'");
  3. if(mysql_num_rows($res) > 0) {
  4. тогда открывается форма регистрации
  5. и код приглашения должен быть удален из базы чтобы им не воспользовались вновь
  6. }

Пробуй сам експерементируй в общем я показал тебе простейший пример чтобы все красиво и без перезагрузки было выучи aJax

 

Powered by ExBB FM 1.0 RC1