|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Немного предыстории. Хочу сделать проект. База выпускников для техникума. Совершенно бесплатно кроме того и идея и реализация моя. А может и ненужно это никому но всеже. В сроках неограничен документацию читаю но не хватает знаний в том числе идеологии.... Сейчас есть статический сайт и 1500 посещений + письма которые приходят от людей подсказывают мне, что это есть харашо. Суть. Есть база MySQL и PHP. Хочется сделать чтобы после регистрации люди могли сами заносить информацию о себе. Далее чтобы каждий мог менять свои данные ну и модератор тоже. Что касается модератора тот легче а люди могут быть разные в том числе не очень продвинутые... Хочется сделать дружественный интерфейс чтобы не отпугивать людей сложными процессами. Например сначала регистрация - потом данные на мыло - потом логин в базу - заполнение данных. Или форма для добавления совмещена с созданием учетной записи. А потом чтоб человек не забыл отправка данных на почту. Нужно ли делать отдельные формы для внесения новых данных и для редактирования существующих или можно совмещать? Наверное нужно отдельное окно для последующих логинов. В базу нужно добавить поля типа username и password... а дальше вычислять id и привязываться к нему или не стоит.... Нужно ли для этого использовать сессии или кукиши... У кого есть опыт или идеи подскажите :) Буду рад посмотреть примеры и куски кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2003, 23:37 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
1. разбиваешь задачу на множество мелких подзадач и решаешь каждую отдельно. Сейчас твой вопрос звучит как "Научите меня программировать !" > Нужно ли делать отдельные формы для внесения новых данных и для > редактирования существующих или можно совмещать? у меня эти формы обычно имеют свои различия поэтому я делаю разные формы для регистрации и редактирования. > а дальше вычислять id и привязываться к нему или не стоит.... ИМХО лучше работать с ID (если я правильно понял что ты имел ввиду). Просто ИМХО это идеологически верно (рабоать через первичный ключ), ну и с числами все-таки работа быстрее идет. > Нужно ли для этого использовать сессии или кукиши... Я обеими руками за сессии (о куках забудь, апачевская авторизация также имеет свои недостатки) Статья по теме: http://www.digiways.com/articles/php/sessauth/ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2003, 00:46 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
2 Макс М. спасибо :) Можно конетчно сказать "научите програмировать" только я сильно сомневаюсь что токим образом можно научить.... Умение приходит с опытом а опыта то у меня и нет :) Про ID понял, вобщем очевидно хотя сам не допер... Про сессии тоже понял... спасибо за ссылочку. Вопрос если используется сессия и во время заполнения формы разрывается связь человек сможет отправить данные или ему придется все с нуля .... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2003, 09:24 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
У сессии есть время жизни. Если в течение этого времени жизни юзер не сделает HTTP-запрос (например не пойдет по ссылке, не пошлет форму и т.д.) сессия будет завершена. Время жизни сессии можно изменить. То есть я могу получить форму, разорвать соединение, заполнить форму, соединиться и нажать кнопку "Отправить форму". Главное, чтобы время простоя не превысило время жизни сессии ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2003, 13:23 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Я это сделал так: - создаеш таблицу юзеров, - сверху каждого файла включаеш проверку на авторизацию што-то вроде того: <? require("../admin.inc.php"); require("../../sessions/MySQL_Session_Module.php"); require("../../modules/easytemplate.inc.php"); session_set_save_handler("sess_mysql_open", "", "sess_mysql_read", "sess_mysql_write", "sess_mysql_destroy'", "sess_mysql_gc"); $admin_info = array(); session_register("admin_info"); session_start(); require("../top.php"); ?> ------------------------------top.php---------------- <? echo "<body class = \"maintable\">"; if ($act == 'logout'){ //session_destroy(); $admin_info['login'] = false; echo '<a href = "'.$URL.'">Ввійти</a>'; exit(); } if ($admin_info['login']){ $login = $admin_info['name']; $password = $admin_info['pass']; } if ($admin_info['status']=isAdmin($login,$password)){ $admin_info['login'] = true; $admin_info['name'] = $login; $admin_info['pass'] = $password; else { echo "Неправильний парроль або логін.<a href = \"$URL\">Спробувати ще раз</a>"; exit(); } ?> - теперь про формы. Проще использовать одну форму для внесения и редактирования. Это делается с использованием шаблонов $template = new EasyTemplate("form_link.inc.html"); $template->assign("COMMENT",'Лінк повинен починатися з : http://'); $template->assign("aLINK", $link); $template->assign("ACT", 'set_edit'); $template->assign("TITLE", "Редагування лінку"); $template->assign("aDES", $description); $template->assign("ERRDES", sprint_error($errors['description'])); $template->assign("ERRLINK", sprint_error($errors['link'])); $template->assign("ID", $row['id']); $template->easy_print() or die($template->error); Это позволяет не утрачивать правильные данные при неправильном заполнении некоторых полей ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2003, 22:27 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
2 Sanya_KIO Спасибi ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2003, 23:35 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Итак возвращаюсь. После долгих дней и ночей... читания всякого рода писанины у меня появилось некоторое понятие данного процесса. Я решил начать с простого и вот, что получилось. База с полями - fio, id, year, username, userpassword, ............. Форма для ввода данных в базу: Ничего сверхестественного. Обработчик для этой формы: ----------------------------- if (isset($submit)) { $link = mysql_connect("localhost", "root", "") or die ("Could not connect to server"); mysql_select_db ("mgrt", $link) or die ("Could not select database"); $sql = "INSERT INTO main (username,userpassword,year,special_id,fio,m_birthday,descr,email1,icq,telefon,vis_data) VALUES ('$username', MD5('$userpassword'),$year,$special_id,'$fio','$m_birthday','$descr','$email1','$icq','$telefon',$vis_data)"; //echo $sql; $result = mysql_query($sql) or die(mysql_error()); echo "Спасибо! Информация о Вас добавлена в Базу Выпускников МГРТ.\n"; ----------------------------- Тут самое главное мое достижение это MD5('$userpassword') Пароль в базу добавляется в виде типа 14786f3282f04de5b Дальше форма логина: передает username и userpassword обработчику: ----------------------------------- $link = mysql_connect("localhost", "root", "") or die ("Не подключились к серверу баз данных"); mysql_select_db ("mgrt", $link) or die ("Не нашли указанную базу"); $query = ("SELECT *, DATE_FORMAT(main.m_birthday,\"%d.%m.%Y\") AS birthday, DATE_FORMAT(main.last_info_update,\"%d.%m.%Y-%H:%i\") AS last_info_upd FROM spr_special, main WHERE main.special_id = spr_special.id_spr AND main.vis_data = 1 AND username='$username' AND userpassword='".md5($userpassword). "' ORDER BY fio"); $result = mysql_query ($query) or die ("Query failed"); if ($myrow = mysql_fetch_array($result)) { echo"ФИО: <b>".$myrow["fio"]."</b><br>\n"; echo"ID: <b>".$myrow["id"]."</b><br>\n"; printf("<a href=..\edit\edit_form.php?id=%s\">Редактировать данные %s</a><br><hr>\n", $myrow["id"],$myrow["fio"]); } else { echo "Неправильное имя или пароль"; } mysql_close($link); ----------------------------------- Здесь я застрял на извлечении пароля userpassword='".md5($userpassword). "' Если сделать все без md5, вручную вбить пароль, то все срабатывает а вот с md5 никак. Доку пока найти не могу а то, что нашел в примерах http://detail.phpclub.net/article/page_password2 вроде то но... подозреваю, что опять гдето пропустил кавычку :) Подскажите что не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2003, 00:47 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
upperЕсли сделать все без md5, вручную вбить пароль, то все срабатывает а вот с md5 никак. Что значит "никак" ? Выдает "query failed" или "Неправильное имя или пароль" ? покажи, как объявлено поле "userpassword" в mysql ? Длинна должна быть 32 символа (varchar(32) или char(32)) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2003, 01:05 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Пишет - "Неправильное имя или пароль" Похоже проблема в типе поля varchar(32) скорее всего там varchar(16) вечером посмотрю. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2003, 09:41 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
По ходу у меня возник однин вопрос а как вообще строить работу скрипта с базой. У меня есть пользователь на базу скажем root (у прова будет user#такой-то) сейчас я его использую в скриптах. И мне кажется что это не есть гуд. А как тогда быть создавать еще одного юзера с правами на просмотр базы? Но я хочу чтоб люди могли вносить инфу.... Или выносить код конекта в инклюд а тот прятать? Вобщем как ЭТО делается по уму? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2004, 19:23 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
пользователь, который зарегистрировался у тебя на сайте и пользователь БД - это разные пользователи. upperУ меня есть пользователь на базу скажем root (у прова будет user#такой-то) сейчас я его использую в скриптах если я все правильно понял, то ты делаешь правильно upperИли выносить код конекта в инклюд а тот прятать? код коннекта выносить в инклюд надо. А вот прятать - не надо. К нему все равно доаступ никто не получит (если на сервере дыр нет) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.01.2004, 14:27 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
) Ну вот решил проверить написанное и выложить на хостинг.... и тут же получил содержани своего connect.inc с именем и паролем.... :) есть какая то разница для данного файла как его включать через инклюд или через реквир? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2004, 20:08 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
1. подключать надо через require_once 2. файлы, которые подключаешь е должны быть доступны через WWW. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.01.2004, 20:28 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Я столкнулся с тем, что практически на каждой второй странице нужно делать логон в базу и конект к базе. Может есть способ перенести это в глобальные переменные??? или это не есть хорошо... ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2004, 09:06 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
причем здесь коннект и логин к глобальным переменным. Операции, которые нужно делать на каждой странице или почти на каждой выносят в отдельный файл и подключают его везде где надо через require_once Хотя я предпочитаю в .htaccess прописать: php_value auto_prepend_file "/home/user/includes/config.php" и этот файл будет подключаться ко все файлам в текущей папке ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2004, 14:34 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Я так понял, что пароль, если он преобразован MD5, нельзя показать пользователю, чтобы тот его видел. Или всетаки есть возможность сделать decrypt? Но если пароль для пользователя невидим значит нужно сделать сервис по которому пароль будет отсылаться на почту введеную в базе. (это размышление верное??) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 17:00 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
MD5 - это не шифрование (по научному это называется хеширование). Фактически это что-то вроде контрольной суммы от текста. Для примера, возьми 100Кб текст и возьми от него MD5. Получишь строку из 32 символов. Как думаешь, можно ли из этих 32 символов обратно получить 100Кб текста ? Теперь по паролям. В таблице хранишь md5. Если юзер забыл пароль, то скрипт должен сгенерировать новый случайный пароль, выслать его на e-mail пользователю а в БД записать MD5 нового пароля ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2004, 17:44 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
У меня есть еще два вопроса. Вот такой код. Как быть с инклюдом конекта? Если я его включаю рыдом с хидером не работает. приходится писать. ---------------------------------- <? include_once "../inc/header.php"; if (isset($submit)) { $link = mysql_connect("localhost", "user", "") or die ("Не законектились"); mysql_select_db ("test", $link) or die ("Нет такой базы"); $sql="UPDATE main SET username='$username',............. ------------------------------------------------- второй пожже :) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2004, 23:14 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
покажи неработающий код и объясни что именно не работает Вывод ошибок на экран включен ? ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2004, 14:29 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Вот так: <? include_once "../inc/header.php"; if (isset($submit)) { include_once "../inc/connect.php"; $sql="UPDATE main SET username='$username',............. Или вот так: <? include_once "../inc/header.php"; include_once "../inc/header.php"; if (isset($submit)) { $sql="UPDATE main SET username='$username',........... Получаю "No Database Selected" хотя в моих скриптах такой фразы нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2004, 17:45 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Ну вот :) опростоволосился :) Посидел повнимательнее и все заработало. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2004, 17:52 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
А как можно отследить если Update не прошел? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Я думал, что or die(mysql_error()) в $sql должен выдать. но заметил, что если пе ввести в форму пароль то получаю "Ваша информация изменена." а в самом деле не обновлена, и не удивительно. Но ор дай не сработал. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.02.2004, 17:59 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
or die() выполниться если произошла ошибка. А в твоем случае если не введен пароль, то запрос : Код: plaintext 1. 2. 3.
Это не ошибочный запрос, просто ни одна строка не попала под условие и соответственно ни одна строка не была изменена. Короче, проблемы в том, что ты плохо проверяешь входнын данные ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2004, 15:14 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Никик не могу въехать в сессии :) Изменение данных в базе. Есть страница логина с формой. На ней вводится Имя и Пароль. Эти данные сверяются с базой и если совпарает запускается механизм сессий ???? и переадресовывается на другую страницу вместе с ID пользователя в базе.(Страницу редактирования). Страница редактирования вот тут затык... сейчас она просто принемает ID и выдает данные в форму. Там они редактируются... чтобы не прошел edit/index.php?id=26 вводится пароль для подтверждения, хоть какая то хащита :) Собственно я так и не понял с какими параметрами запускать сессию на странице логина... имя пользователя и пароль введенные в форме? вроде логично а еще, что имя для сессии... зачем? Нужно ли обязательно писать куки? На странице редактирования стартую сессию и мне становится доступным $_POST с именеи и поролем из формы дальше опять же сверяем их с базой но это теория а на практики я ума не приложу чего и куда вставить. Я нашел кучу примеров... навороченных... но мне это понять не по зубам а простого, как у меня, так и не нашел. Хотел бы знать правильно я понимаю или заблуждаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2004, 22:16 |
|
Подскажите как можно сделать авторизацию PHP MySQL......
|
|||
---|---|---|---|
#18+
Авторизация: скрипт получает логин и пароль, сверяет их по базе и если все верно, то: - стартуем сессию. - в сессию записываем идентификатор пользователя: Код: plaintext 1.
- перенаправляем пользователя на страницу редактирования : Код: plaintext 1.
в скрипте edit.php: 1. стартруем сессию 2. проверяем, есть ли в сессии переменная user_id 3. если нет - выкидываем пользователя на страницу авторизации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
Пользователю никак не сможет подделать ID в сессии (если он не имеет непосредственного доступа к серверу, к папке где хранятся файлы с сессиями) Куки писать не надо, механизм сессий сам об этом позаботится (если нужно будет) Получить данные о юзере ты сможешь благодаря переменной $user_id В общем случае пример может выглядеть примерно так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33.
код не проверял (я сейчас так уже не пишу), логика должна быть правильной, но может где-то описАлся ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2004, 23:26 |
|
|
start [/forum/search_topic.php?author=Teetotaller&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
39ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
others: | 743ms |
total: | 927ms |
0 / 0 |