Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Вопрос про регистрацию.
 
 автор: wcools   (23.12.2008 в 01:22)   письмо автору
 
 

Как сделать регистрацию пользователей. Логин и пароль юзеров хранятся в таблице. Как сделать так, чтобы зарестрированные пользователи могли добавлять новые данные в таблици ( оставить сообщение ), а не зарестрированные, только читать данные из таблиц.

  Ответить  
 
 автор: sl1p   (23.12.2008 в 04:30)   письмо автору
 
   для: wcools   (23.12.2008 в 01:22)
 

[поправлено модератором]

  Ответить  
 
 автор: wcools   (23.12.2008 в 12:17)   письмо автору
 
   для: sl1p   (23.12.2008 в 04:30)
 

Я уже читал.
Меня интерисует не код, а сам принцип.

  Ответить  
 
 автор: psychomc   (23.12.2008 в 13:08)   письмо автору
 
   для: wcools   (23.12.2008 в 12:17)
 

если пользователь авторизован, выводим ссылки (формы) для добавления сообщений не забывая проверять авторизован он или нет, если пользователь не авторизован-не выводим ссылки(формы) и тоже проверяем авторизован или нет ))

  Ответить  
 
 автор: wcools   (23.12.2008 в 15:19)   письмо автору
 
   для: psychomc   (23.12.2008 в 13:08)
 

Напишу подробнее что нужно.

Есть например голосование и гостевая. Голосовать и оставлять сообщения могум только зарегеные юзеры. Зарегеные юзеры хранятся в таблице (mysql), т.е их логин и пароль. Добавить новых юзеров в таблицу проблем не вызывает.
Вопрос в следующем: Заходит незарегистрированный чел на сайт, выполняется PHP скрипт, который
1) Подключается к БД
2) Считывание данных голосования и сообщений
3) Показ этих данных
4) Если юзер зарегистрирован и выполнил вход, он может голосовать и оставить сообщение
5) Показ всех зарегеных юзеров, которые в данный момент нах-ся на сайте

Как отследить, что пользователь сделал вход или выход???
Какого пользователя использовать при подключении к БД(там где root)???
Как сделать так, чтобы когда пользователь добавляет сообщение, автоматически добавлялся его логин (типа Автор: user Сообщении: hello word.)???


Вроде это все сессиями делается, тока как непонятно, может поясните что к чему.

  Ответить  
 
 автор: psychomc   (23.12.2008 в 16:53)   письмо автору
 
   для: wcools   (23.12.2008 в 15:19)
 

>Какого пользователя использовать при подключении к БД(там где root)???
чтобы показывать юзеров на сайте можно сделать таблицу в которую заносить их после авторизации а потом удалять

>Какого пользователя использовать при подключении к БД(там где root)???

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

>Как отследить, что пользователь сделал вход или выход???

создать переменную например $_SESION['username'] и если авторизация успешная записывать в неё значение из таблицы mysql. а проверять например так:

if (!empty($_SESSION['username'])
{
// выводим данные для голосования
}
{
// не выводим данные для голосования
}

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

  Ответить  
 
 автор: wcools   (24.12.2008 в 00:00)   письмо автору
 
   для: psychomc   (23.12.2008 в 16:53)
 

<?
if(@($sb!=NULL)&&(@$login!=NULL)&&(@$upass!=NULL))
{
$host="localhost";
$name="root";
$pass="";
$con=mysql_connect($host,$name,$pass) or die("&#205;&#229;&#242; &#241;&#238;&#229;&#228;&#232;&#237;&#229;&#237;&#232;&#255;"); //&#209;&#238;&#229;&#228;&#232;&#237;&#229;&#237;&#232;&#229; &#241; &#225;&#228;
mysql_select_db("MyBD",$con) or die("&#205;&#229; &#236;&#238;&#227;&#243; &#226;&#251;&#225;&#240;&#224;&#242;&#252; &#193;&#196;"); //&#194;&#251;&#225;&#238;&#240; &#225;&#228;

$ZP="SELECT * FROM MyTable WHERE login='$login'";
$a=mysql_query($ZP); //&#207;&#240;&#238;&#226;&#229;&#240;&#255;&#229;&#236; &#229;&#241;&#242;&#252; &#235;&#232; &#243;&#230;&#229; &#242;&#224;&#234;&#238;&#233; &#235;&#238;&#227;&#232;&#237;
$b=mysql_fetch_array($a);
if(@$b["pass"]==$upass)
{
unset($s);
session_start();
$s=$b["login"];
session_register($s);
$VF=0;
echo "Перенаправление на секретную страницу<br>";
}
else $VF=1;
}

//---------------------------------------------------------------------------------

if(@$s==NULL)
{
print ("
<table align=center border=1>
<tr><td align=center colspan=2>Вход</td></tr>
<form method=post action=av.php>
<tr><td width=140>логин</td><td width=150><input type=text name=login><br> </td></tr>
<tr><td width=140>Пароль</td><td width=150><input type=text name=upass><br></td></tr>
<tr><td align=center colspan=2><input type=submit name=sb value=&#194;&#238;&#233;&#242;&#232;></td></td>
</table>
");
if(@$VF==1) echo "Неверные данные";
}
else echo "Вы зашли как - ",$s; //Секретная часть

?>

Первая часть работает без проблем. Вторая часть и есть секретной, т.е если правильно выполнились сессии, $s становится не равным NULL, и пишется Вы зашли как...
Это услови сразу видно - дыра. Сделав av.php?s=1 условие сдается. Вопрос такой, какое лучше условие сделать. Слышал про хранение в таблице юзеров уникальные номера и каждый раз его проверять, Выход - ли это??? Что такое хеш, лучше ли он, как с ним работать. Посоветуйте, что лучше.

  Ответить  
 
 автор: psychomc   (24.12.2008 в 10:34)   письмо автору
 
   для: wcools   (24.12.2008 в 00:00)
 

<?
 
or die("&#205;&#229;&#242; &#241;&#238;&#229;&#228;&#232;&#237;&#229;&#237;&#232;&#255;");        //&#209;&#238;&#229;&#228;&#232;&#237;&#229;&#237;&#232;&#229; &#241; &#225;&#228;    
>  mysql_select_db("MyBD",$con) or die("&#205;&#229; &#236;&#238;&#227;&#243; &#226;&#251;&#225;&#240;&#224;&#242;&#252; &#193;&#196;");            //&#194;&#251;&#225;&#238;&#240; &#225;&#228; 
                        //&#207;&#240;&#238;&#226;&#229;&#240;&#255;&#229;&#236; &#229;&#241;&#242;&#252; &#235;&#232; &#243;&#230;&#229; &#242;&#224;&#234;&#238;&#233; &#235;&#238;&#227;&#232;&#237;
?>

не разобрался в том что написано сверху )

но знаю точно, что session_start(); надо запускать ДО вывода в браузер
честно сказать стрёмный у Вас какой-то код...либо я нифига в нём не понимаю ))
опять же, лучше всего почитайте другие темы

  Ответить  
 
 автор: wcools   (24.12.2008 в 11:27)   письмо автору
 
   для: psychomc   (24.12.2008 в 10:34)
 

Эти каракули - русские буквы. Они не особо важны, там сообщения ошибок и коменты.
А принцип работы проги прост. Если зайти первый раз, до вкл. сессий, выводится форма. Если ввезти в нее правильные логин и пароль, она больше не выводится, а выводится Вы - Логин.
ЗЫ: Сессии включаются до вывода текста в браузер.

  Ответить  
 
 автор: psychomc   (24.12.2008 в 14:46)   письмо автору
 
   для: wcools   (24.12.2008 в 11:27)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования