Forum Webscript.Ru
		Программирование => PHP => Тема начата: myname от 14 Мая 2003, 19:33:33
		
			
			- 
				В данный момент у меня есть следующее:
 1 раздел: Регистрация
 2 раздел: Вход в раздел
 3 раздел: Восстановление пароля.
 
 Клиент регистрируется, вводит свой юзернейм, емайл и пасс и получает подтверждение регистрации со своими данными на указанный емайл. В избежании "левых" регистраций, КАК сделать регистрацию с подтверждением реального емайла? Т.е. Клиент регистрируется, получает на майл ссылку, по которой должен пройти и уже после этого авторизируется и заносится в БД.
 
 Может у кого-то есть пример?
- 
				мой пример ты все равно не поймешь :D да и постить несколько десятков килобайт кода не рекомендуется.
 Что именно не понятно и с какими єтапами проблемы?
- 
				Как уже сказал Макс, код будет слишком объемным, поэтому опишу базовый алгоритм:
 1. После первой части регистрации (юзер заполнил форму регистрации), ты генерируешь случайных код активации и записываешь в базу данных или в отдельный файл логин юзера и его код активации.
 2. Присылаешь юзеру на мейл письмо со ссылкой типа http://www.mysupersite.com/registration_confirm.php?username=Vasya_Pupkin&activation_code=IxPvJzAqCm9E5e
 3. Юзер щелкает по ссылке, попадает на страницу активации. Твой скрипт ищет в базе данных логин юзера и смотрит, какой код активации с ним ассоциирован. Если переменная $_GET[\'activation_code\'] совпадает с кодом активации из базы - e-mail юзера настоящий. Регистрация завершена.
- 
				Можно и проще, просто генерить пароль и отсылать его на мыло указанное при регистрации, если юзер захочет потом сам поменяет пароль..
			
- 
				Просто myname говорил о способе "получения на мейл ссылки", вот я его алгоритм и привел. А с паролем конечно проще :)
			
- 
				Не, ребята. Моих знаний пхп не хватит чтобы такое написать. Вроде всё ясно и понятно, но, думаю, что сталкнусь с массой вопросов, которые тут, наверное, будут не уместны. Буду очень благодарен, если кто-то из вас сможет поделиться кодом и, если у меня возникнут вопросы - помочь с ними разобраться.
 
 Может правда легче с регенерацией паролей, но и тут для меня дебри. Очень прошу помощи, при возможности отблагодарю как смогу.
 
 myname@siteks.lv
 ICQ: 7165779
- 
				myname 
 Кликнул тебя в асе.
 Чем смогу - помогу.
 Но скрипт за тебя писать не буду, у меня на это нет времени, да и не научишься ты тогда вообще.
 Дам тебе базу знаний, буду отвечать на вопросы и давать подсказки, но на многое не рассчитывай - у меня сессия идёт.
 Дальше общаемся через асю/мейл/ПС.
- 
				я фигею, клава...
 какие несколько килобайт кода???
 какая регенерация паролей???
 вы о чем????
 
 зачем вы человека запугали???
 
 
 каких тебе еще знаний не хватит?
 где у тебя зарегистрированные лежат - в базе или в файлах?
 скоре всего - в файлах.
 ну что - трудно писать при регистрации не в основной файл, а в дополнительный, + генерить случайное число???
 потом запустить команду mail, к которой есть миллион примеров, даже в мане, и вставить в нее коротенький текстик - это тебе трудно?
 
 а в скрипте регистрации добавить один пунктик - если пришел код активации, то достать данные из доп файла по этому коду, стереть оттуда, и записать в основной???
 
 Какин несколько килобайт???
 тут десяти строчек в сумме не наберется!!!
 
 Вы, это, граждане.
 Не умеете сами писать - других-то хоть с толку не сбивайте.
 я представляю, что этот "специалист" ему по аське насоветует...
- 
				 но, думаю, что сталкнусь с массой вопросов, которые тут, наверное, будут не уместны 
 что уместно, а что - нет, будет решать модератор.
 Если вопросы по программированию, то они всегда уместны.
 
 вообще-то форум как раз для таких вопросов, которые ты стесняешься задавать. а не для попрошайничанья и поисков готового решения и доброхотов
 
 Скажи-ка мне, дружок, ты сам написал свои регистрацию, вход в разделы, восстановление пароля?
 похоже, что нет.
 потому, что чем принципиально отличается высылка пароля на мейл, от высылки ссылки?
 
 НИЧЕМ.
 
 Значит, кто-то за тебя сделал эти части, тебе понравилось на халявку, и ты опять пришел попрошайничать - так?
- 
				Скажи-ка мне, дружок, ты сам написал свои регистрацию, вход в разделы, восстановление пароля?
 похоже, что нет.
 потому, что чем принципиально отличается высылка пароля на мейл, от высылки ссылки?
 
 НИЧЕМ.
 
 Значит, кто-то за тебя сделал эти части, тебе понравилось на халявку, и ты опять пришел попрошайничать - так?
 
 
 Отвечаю.
 Когда я задумал это написать, я кинул сюда пост с вопросом о помощи и выложил совй первый написанный код, который не совсем хотел функционировать и именно с твоей помощью он заработал. Что касается теперешней работы кода, то да - всё остальное писал именно я, основываясь на определённые примеры и советы. Я скрестил код регистрации с кодом рассылки и сейчас идёт такая система:
 есть форма регистрации, человек вводит данные в форму регистрации, регистрируется и получает подтверждение себе на указанный майл. Скрыто его емайл заносится в датфайл рассылки + данные пишутся в БД.
 
 Всем нравится халява, но здесь другой случай. Я не напрашиваюсь на халяву - я прошу о помощи, это две разные вещи, которые не следует путать. Я не знаю английского, но мне нравится кавыряться в пхп и по возможности я читаю литературу на русском. Переводчиком пробовал пользоваться, но то, что он переводит - для меня полнейшие дебри и ввод в заблуждение. Так, что даже элементарный мануал для меня далёк.
- 
				короче.
 что тебе не ясно?
 
 ты высылку пароля делаешь?
 вместо пароля можешь послать такую строку
 http://tvoi.sait/confirm.php?code=blabla ?
 какие трудности?
 
 написать конфирм.пхп, который берет код, достает по нему инфу из временного файла, и записывает в основной? какая здесь проблема?
 
 ты просишь о помощи, но ничего еще не спросил.
 Давно бы уже начал делать, и столкнувшись с трудностями - реальными, и на воображаемыми - давно бы задал конкретные вопросы.
 
 вот и сейчас ты написал кучу беллетристики, вместо того, чтьобы делом заняться.
- 
				ты высылку пароля делаешь?
 вместо пароля можешь послать такую строку
 http://tvoi.sait/confirm.php?code=blabla ?
 какие трудности?
 
 Никаких.
 
 написать конфирм.пхп, который берет код, достает по нему инфу из временного файла, и записывает в основной? какая здесь проблема? 
 Я не знаю как это сделать.Даже начать не понимаю с чего надо.
- 
				судя по всему, регистрация у тебя хранится в базе?
 я это сейчас раскопал в поиске.
 почему я должен это искать?
 почему ты не можешь это сам сказать - я же спрашивал?
 
 с базой совсем просто.
 скрипт конфирм состоит из одной строчки.
 
 скрипт регистрации увеличивается на одну строчку, плюс в проверке входа в запрос добавляется один параметр.
 все.
 
 но пусть тебе помогают эти любители килобайт кода, потому, что ты даже тому, кто тебе помогает, не хочешь помочь.
- 
				Я хочу помочь и готов предоставить всё, что у меня имеется. Насчёт что куда записывается я уже писал выше:
 Скрыто его емайл заносится в датфайл рассылки + данные пишутся в БД. 
 
 Вообщем упустим скрипт рассылки и возьмём просто скрипт регистрации. Я не смогу объяснить на проф языке как и что - только своими словами суть. Ещё раз. Регистрация записывается в базу данных, я предпочитаю БД датфайлу, хотя может это и не правильно. Скрипт регистрации выглядит так:
 
 //проверяем правильность заполнения емайла
 //выводим ошибки
 //проверяем наличие уже зарегистрированного пользователя
 //проверяем наличие уже зарегистрированного емайла
 //если пользователь прошёл проверки, записываем его данные в рассылку
 //отпарвляем данные сразу на емайл зарегистрированному юзеру
 //выводим страничку со спасибом.
- 
				//если пользователь прошёл проверки, записываем его данные в рассылку, но добавляем одно поле, которое показывает, что пользователь не проверен. добавить одно поле для тебя большая проблема?
 в это поле добавляем переменную
 $uniqid=uniqid("");
 в рассылку, в запрос, который ее делает, добавляем условие where active=1 это для тебя сложно сделать?
 //отпарвляем на емайл юзеру письмо со строчкой, в которой указывается, $uniqid . ты писал, что это тебе нетрудно
 //пишем скрипт конфирм.пхп, который состоит из одного-единственного запроса
 "update table set active=1 where active=\'".$_GET[\'code\']."\'";
 и все.
 ни килобайт кода
 ниего такого, что ты сам не мог бы сдалеть.
 что тебе еще непонятно?
- 
				Не понятно какое именно поле, которое показывает, что пользователь не проверен 
- 
				myname 
 Насколько я понимаю, RomikChef говорит, что тебе нужно добавить в конец таблицы БД с юзверями ещё одно поле. Вот, к примеру, у тебя была таблица:id, username, password, email, registration_date
 А ты добавляешь ещё одно поле и получаетсяid, username, password, email, registration_date, active
 Active == 0, когда пользователь только зарегистрировался и ещё не ввел свой код (не щелкнул по ссылке в письме) и Active == 1, когда уже активировался.
 
 RomikChef
 На самом деле, ты полностью прав по поводу того, что код этот занимать будет всего пару строк. Просто я уже собрался свой генератор кодов активации писать, добавить сюда же возможность "устаревания" ключей (хотя это тоже всего пара строк кода + колонка в БД), систему повторной отправки кодов и т.д...