Jump to content
  • 0

Регистрация на PHP


Евгений_SB
 Share

Question

Ребят Здравствуйте, подскажите урок по регистрации на php,Не надо посылать в Google я только что оттуда))

Дело в том что нашел в google несколько уроков, вроде бы все норм сделал все работает, а потом зашел в комментарии почитал и ужаснулся, оказывается все что я выучил и написал никуда не годиться и называется в народе ГОВНОКОД,

Зачем люди пишут такие уроки не понятно,

Может покажете адекватный урок РЕГИСТРАЦИИ НА PHP после которого мне не будут говорить где ты этот говнокод взял,

нельзя хранить пароли с логинами в куках и прочее,

Сколько лазил в Google практически все уоки по регистрации идентичны, и во всех комментариях к этим урокам пишут что так писать ненужно,

Я понимаю что нужно думать самому но хотя бы есть нормальные уроки чтобы можно было хоть от чего отталкиваться

Link to comment
Share on other sites

22 answers to this question

Recommended Posts

  • 0

конечно хранить пароли в куках не нужно, это вообще бред полный, если только... если только юзер не временный, хотя зачем это нужно?

принцип примерно таков:

1) в момент регистрации, проверяем, есть ли такой пользователь в бд (по нику, или email), если есть - то сообщаем ему об этом, если нет - шаг 2.

2) регистрация - сохраняем все его данные (в т.ч. и пароль) в бд, а пароль нужно будет еще и зашифровать (методов шифрования в нете полно).

3) авторизация - тут тоже все просто, в момент подачи данных от юзера, просто сверяем их с данными в бд и все.

p.s. или вам код нужен? :)

Link to comment
Share on other sites

  • 0

Большинство уроков (а я бы сказал 100%), на то они и уроки, чтобы как можно яснее показать новичку схему того, как это происходит.

Теперь конкретно по регистрации: какие ее цели, в чем хранится база паролей и как она хранится, какие уровни доступа есть и куча еще дополнительных вопросов может возникнуть при создании данного модуля. Если вы уже прочли урок, то вы знаете, как это делается, теперь ваша задача разработать то, что вам нужно под ваши цели. 

Link to comment
Share on other sites

  • 0

Большинство уроков (а я бы сказал 100%), на то они и уроки, чтобы как можно яснее показать новичку схему того, как это происходит.

Теперь конкретно по регистрации: какие ее цели, в чем хранится база паролей и как она хранится, какие уровни доступа есть и куча еще дополнительных вопросов может возникнуть при создании данного модуля. Если вы уже прочли урок, то вы знаете, как это делается, теперь ваша задача разработать то, что вам нужно под ваши цели. 

 

Проблема в том что в большинстве случаем все пишут что хранить все в кеше неправильно нужно использовать сесии,но урока как сделать форму регистрации на сесиях я не нашел((

В принципе мне нужна обычная форма регистрации, но я думаю лучше учиться делать все правильно с самого начала чем потом переучиваться,

еще не совсем понял про создание таблиц, некоторые создают таблицы напрямую в MyPHPAdmin. некоторые пишут запросы в самом файле, я думаю например что в файле гораздо лучше, но как это правильно сделать если php я толком не знаю, только учусь ведь

 

Сам принцип я понял но как все писать правильно с самого начала,что бы хотя бы наполовину регистрация была правильной,

Думаю лучше лишний раз спросить чем пополнять толпу говнокодеров типа попова

 

пока более менее адекватный урок нашел тут http://habrahabr.ru/post/13726/ но там тоже ничего про ссесии нет((

Edited by Евгений_SB
Link to comment
Share on other sites

  • 0

конечно хранить пароли в куках не нужно, это вообще бред полный, если только... если только юзер не временный, хотя зачем это нужно?

принцип примерно таков:

1) в момент регистрации, проверяем, есть ли такой пользователь в бд (по нику, или email), если есть - то сообщаем ему об этом, если нет - шаг 2.

2) регистрация - сохраняем все его данные (в т.ч. и пароль) в бд, а пароль нужно будет еще и зашифровать (методов шифрования в нете полно).

3) авторизация - тут тоже все просто, в момент подачи данных от юзера, просто сверяем их с данными в бд и все.

p.s. или вам код нужен? :)

 

Да чтобы увидеть как это работает и как нужно писать) хочу разобраться что бы сразу делать как нужно :P

Link to comment
Share on other sites

  • 0
чем пополнять толпу говнокодеров типа попова

Эм... Вы ведь работаете в сфере it, как логический вывод - тов. Попов является Вам коллегой. Хм.. не совсем этично называть своего коллегу "говнокодером" или кого нибудь еще. т.к. всегда найдется тот, кто назовет так вас, может быть в силу своих убеждений, взглядов, расположения звезд и т.п.). Любой код - это решение задачи. Ваше решение может быть другим) Тогда по аналогии ....с т.з. супер повара Вы кушаете говнозавтрак, с т.з. заслуженного ученого Вы говноучитесь, с т.з. модельера - носите говноодежду) И весь мир становится "говномиром", что плохо)

  • Like 1
Link to comment
Share on other sites

  • 0

 

чем пополнять толпу говнокодеров типа попова

Эм... Вы ведь работаете в сфере it, как логический вывод - тов. Попов является Вам коллегой. Хм.. не совсем этично называть своего коллегу "говнокодером" или кого нибудь еще. т.к. всегда найдется тот, кто назовет так вас, может быть в силу своих убеждений, взглядов, расположения звезд и т.п.). Любой код - это решение задачи. Ваше решение может быть другим) Тогда по аналогии ....с т.з. супер повара Вы кушаете говнозавтрак, с т.з. заслуженного ученого Вы говноучитесь, с т.з. модельера - носите говноодежду) И весь мир становится "говномиром", что плохо)

 

 

Да нет вы знаете я не считаю попова плохим кодером или еще кем то, просто сколько сталкиваюсь с программистами, верстальщиками все в один голос твердят что так как делает попов делать категорически не нужно))

На всех форумах где новички которые учились у попова задают вопросы его хают все кому не лень, мол после попова нужно опять переучивать людей, конечно я понимаю что каждый реализует проблему по своему, и то что сделал я не всегда нравиться кому то еще, но когда тебя пол интернета ругает))) ну я не знаю, хотел сначала курсы попова скачать по php. потом почитал отзывы и как то передумал, хотя вроде он все понятно обьясняет

 

Link to comment
Share on other sites

  • 0

 

как логический вывод - тов. Попов является Вам коллегой.

 

тов. Попов не может рассматриваться как коллега в принципе! ибо он больше не кодер, а скорее бизнесмен и хороший оратор, и статьи которые публикуются на его сайте вовсе не его собственные, а переведенные с забугорных сайтов.

так что не брат он нам... :)

Link to comment
Share on other sites

  • 0

ИМХО, зависит от задачи, которую вы хотите решить.

 

1. Научиться писать код.

Пишите свою реализацию как умеете, на основе текущих знаний и умений. Читаете новую информацию, о правильных и не правильных подходах. Переписываете/дописываете код исходя из этой новой информации. И так практически до бесконечности. Т.к. постоянно будете узнавать что-то новое, будут появляться новые подходы и т.д. Можно также периодически выкладывать свои решения для обсуждения на форумы, блоги.

 

2. Написать регистрацию для достаточно срочной задачи.

Взять готовое решение - CMS или фреймворк (в зависимости от навыков).

Link to comment
Share on other sites

  • 0

Я так понял, вам нужно не регистрацию, а авторизацию нормально сделать. Я делаю так:

1. В таблице юзеров добавляем ячейку hash

2. При авторизации проверяем логин и хэшированный пароль, если все ок - в таблице в hash записываем рандомный хэш, помещаем Id юзера и этот самый хэш в сессию

3. Каждый раз, покуда юзер авторизован, проверяем хэш, если не совпало - кикаем. Можно еще каждый раз обновлять хэш для большей уверенности, но, я думаю, это лишнее.

Link to comment
Share on other sites

  • 0

Мало сказали о том, почему в уроках не учат делать сразу так, как надо. Представь, если бы школьникам во втором классе (кому-то в первом, я в первом не учился, не знаю, что там, я с нулёвки пришёл) не сказали, что нельзя отнимать из маленького числа большое, а стали бы рассказывать об отрицательных числах, а лучше сразу рассказали бы о комплексных. Мнимая единица очень хорошо уложилась бы в умах детей, которые ещё не знают что такое возведение в степень и даже складывать числа не умеют, а все действия производят на пальцах или счётных палочках. У них ещё нет нужного уровня абстрактного мышления, чтобы понимать концепции вроде возведения в дробную степень.

Так вот, если обучающемуся показать урок по авторизации-регистрации так, как оно должно выглядеть, с соблюдением безопасности, да ещё с ООП (некоторые его так любят, что суют где только можно), этот обучающийся скорее всего не будет дочитывать урок до конца, потому что для этого ему сначала придётся изучить язык на хорошем уровне, а учить язык без практического применения полученных знаний — пустая трата времени. Вот и получится, что знания применять ещё рано, а учиться без этого бесполезно.

Второй аспект: размер кода в примере. На php.net в документации практически нет длинных примеров кода, все они минимальны, показывают только сущность того, что делает функия. Потому что читающий сам придумает, что ему делать с функцией, есть будет знать как она преобразует входящие данные к вызодящим. Никто из пишущих примеры/уроки не знает, что именно тебе требуется в рамках твоей задачи.

Ну и третий аспект проистекает из вышесказанного: гораздо проще объяснить основу, на которой можно построить то, что нужно именно тебе, используя имеющиеся знания программирования, чем писать 50 примеров под каждый конкретный случай. Скажем, приведут тебе в качестве примера код, который при авторизации хранит в куках хэш, основанные на логине, пароле, user-agent и IP-адресе клиента. А если тебе этого не нужно, сможешь ли ты выкинуть из кода примера эти куски? Да и будет ли это примером авторизации по кукам, или же это пример защиты куков от похищения? Кстати, не вижу ничего страшного в хранении логина в куках. Простая авторизация состоит из двух частей: информации, доступной каждому и информации, доступной только владельцу профиля. Это логин и пароль. Так почему бы общеизвестный логин не отдать в куку пользователю? С целью защиты от подбора? Ну я привёл в пример сложный хэш вместо пароля, который можно ещё засолить и вообще, строку перемешать как угодно перед хэшированием. А в хэш можно ещё и лишний символ вставить в произвольное место, известное только движку сайта, тогда для md5 время перебора увеличится сразу в 32 раза.

На счёт авторизации по сессиям: это хорошо, но действует только пока жива сессия или пока запущен браузер, не всем подойдёт вариант с вводом пароля при каждом входе на сайт, так что в этом случае спасут куки, только нужно думать о том, что в них хранить и помнить о том, что их могут украсть или попытаться подменить.

Никогда не доверяй пришедшим от клиента данным.

Link to comment
Share on other sites

  • 0
Эм... Вы ведь работаете в сфере it, как логический вывод - тов. Попов является Вам коллегой. Хм.. не совсем этично называть своего коллегу "говнокодером" или кого нибудь еще. т.к. всегда найдется тот, кто назовет так вас, может быть в силу своих убеждений, взглядов, расположения звезд и т.п.). Любой код - это решение задачи. Ваше решение может быть другим) Тогда по аналогии ....с т.з. супер повара Вы кушаете говнозавтрак, с т.з. заслуженного ученого Вы говноучитесь, с т.з. модельера - носите говноодежду) И весь мир становится "говномиром", что плохо)

 

Кхм  ... так то большинство тех кто в it давно считают Попова не серьезным специалистом. А таким как ты этот несерьезный специалист впаривает по несколько тысяч говноуроки....

Явный факт почему я испытываю к нему пренебрежение.....   После его промытия мозга, новоиспеченые его Адепты лазают по форумам интернета и кричат что всесильны и всемогущи..... а потом спрашивают всяку хрень....  Зайди к нему на форум и посмотри че за хрень там...... а потом вся эта гадость на нормальные ресурсы лезет. фуфуфу  

Edited by Николя223
Link to comment
Share on other sites

  • 0

Я так понял, вам нужно не регистрацию, а авторизацию нормально сделать. Я делаю так:

1. В таблице юзеров добавляем ячейку hash

2. При авторизации проверяем логин и хэшированный пароль, если все ок - в таблице в hash записываем рандомный хэш, помещаем Id юзера и этот самый хэш в сессию

3. Каждый раз, покуда юзер авторизован, проверяем хэш, если не совпало - кикаем. Можно еще каждый раз обновлять хэш для большей уверенности, но, я думаю, это лишнее.

А зачем вам проверять хэш из сессие, если session id тоже проверяется и если он не пройдет проверку, то ваш хэш и не будет проверять, а если прошел, то ваш хэш... зачем?! Оо

Link to comment
Share on other sites

  • 0
А зачем вам проверять хэш из сессие, если session id тоже проверяется и если он не пройдет проверку, то ваш хэш и не будет проверять, а если прошел, то ваш хэш... зачем?! Оо

На всякий случай. Если каким-то чудным образом подставят в сессию id (мало ли, xss нашли)? А так есть еще и хэш. Id-то они знают, а хэш нет. Это немного труднее получается


Лучше куку вешать с этим хэшем. А при наличии куки подгружать параметры

Куку вашу стырить можно, ибо кука хранится на клиенте, а сессия - на сервере

Link to comment
Share on other sites

  • 0
Куку вашу стырить можно, ибо кука хранится на клиенте, а сессия - на сервере

Пусть тырят))) в контакте тырят же.....

Будь добр подскажи способ чтобы сессии были вечными, без перелогина? 

 

upd: Насколько я помню - сессии так и устроены.

При старте сессии - в куку записывается идентификатор сессии. Вопрос - "а если куку стырят?"

Edited by Николя223
  • Like 1
Link to comment
Share on other sites

  • 0

Стырить можно практически любые данные, авторизацию нужно делать под задачу.

Если у вас форум простой или болталка то куки хорошая вещь а если у вас интернет-банк

то там и городите защиты.

Существует очень тонкая грань между удобством пользования и безопасностью.

Уже видел кучу сайтов где не хотел регистрироваться из-за сложности.

Link to comment
Share on other sites

  • 0

Идеальной защиты не существует, но чем она надежнее - тем она не удобнее для пользователя. По этому, я считаю, лучше всего сделать грамотную систему восстановления пароля.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Only091
      Помогите пожалуйста, не получается сделать постраничную навигацию. Делал все по урокам. в Итоге получилось сделать два разных каталога один с фильтрами другой с постраничной навигацией. И теперь я пытаюсь объединить два каталога. Но не получается. Сами файлы урока в архике каталог. Буду очень благодарен если мне помогут! catalog.phpcatalogDB.js
      каталог.7z
    • By stonelabs
      Всем привет!

      Наша компания (https://stone-labs.com/) ищет команды (!) разработчиков для реализации ряда заказных проектов. Местоположение не важно - мы практикуем удаленную работу.
       
      Обязательные требования:
      Laravel или Symfony frameworks jQuery (UI), JavaScript, Ajax, Bootstrap MySQL REST API, опыт внедрения Third-party APIs английский на уровне чтения и понимания технической документации опыт в разработке веб приложений и их архитектуры с нуля корректное использование git & pull request flow работа в дневное время во временной зоне UTC +3  
      Будет плюсом, если у вашей команды есть:
      опыт с GitLab CI/CD, Jenkins опыт с MySQL Cluster, MongoDB, PostgreSQL, Redis опыт с Vue.js опыт Linux администрирования, SSH, Nginx, DevOps  
      Если вам интересно сотрудничество, пожалуйста, пишите на наш ящик wanted@stone-labs.com 
    • By Defroing
      <form method="POST" action= "action_handler.php" id="form"> <section class="table_1"> <table class="iksweb"> <tbody> <tr> <td rowspan="3"><b>История компании «Mc donald's»</b> <h3 class="the">Кто основал компанию «Mc donald's»?</h3> <section class="conteiner"> <div class="checkbox"> <input type="checkbox" class="i-6" id="i6" value="0" name="formDoor[]"> <label for="i6" tabindex="12">Роналд Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="i7" value="0" name="formDoor[]"> <label for="i7" tabindex="13">Рэй Крок</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_68" value="1" name="formDoor[]"> <label for="checkbox_68" tabindex="14">Братья Дик и Мак Макдоналд</label> </div> <div class="checkbox"> <input type="checkbox" class="i-6" id="checkbox_170" value="0" name="formDoor[]"> <label for="checkbox_170" tabindex="14">Клинт Иствуд</label> </div> <div class="out-block out-6"></div> </section> </td> </tr> </tbody> </table> <div class="dsw"> <button class="b-6" tabindex="11" id="btn-1" type="submit" name="formSubmit">Отправить</button> </div> </form> <?php mysql_connect("localhost", "root", ""); mysql_select_db('olala') or die(mysql_error()); if(isset($_GET['submit'])){ $arr=$_GET; foreach ($arr as $key => $value) { $reg="/^check/";//отбираю нужные элементы if( preg_match ($reg,$key )) { //$new_mass[]=$arr[$key]; //print_r($new_mass); echo $arr[$key]; $sql_1="INSERT INTO `table_one` (`name`) VALUES('$arr[$key]')"; mysql_query($sql_1) or die(mysql_error()); } } } ?>  Создаю опросник и хочу, чтобы чекбоксы заносились в БД(таблицу пока не создавал). Хотелось узнать на счёт php кода, сможете подсказать, что в нём не так (дать какие нибудь советы). В openserver опросник пока не выкладывал.
    • By seoww
      Доброго времени суток. Я не сильно знающий веб-разработчик, но учусь. Начал создавать интернет магазин. Написал код самого сайта, посмотрел видео как делаются интернет-магазины и теперь не могу разобраться с PhpMyAdmin. Я не понимаю как она взаимодействует с сайтом. В интернете погуглил, так ничего дельного найти и не смог. Помогите пожалуйста.
      P.S сильно в меня камни не кидайте, я только учусь 
      Всем добра!
    • By Gmansurov
      Нужно отправить текст на сайт, не знаю как это сделать и не могу найти форумы по этим темам. Google Cloud Platform. Помогите пожалуйста.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy