Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Модуль Онлайн, регистрация и авотризация есть ) 
V
    Опции темы
eldar22
  Дата 3.5.2009, 19:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: 1
Всего: 1



Так встала проблема  сделать модуль онлайн так как я пишу чат и мне нужно знать присоденился

Регистрация есть
Код

<?php
 //Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');
if(empty($_POST['do'])) 
{
//Выводим форму
echo '<html><head><title>Регистрация</title></head><body>';
echo'<form action="" method="POST">';
echo 'Желаемый ник: <input name="nick" type="text" value=""><br/>';
echo 'Пароль: <input name="pass" type="password" value=""><br/>';
echo 'Ещё раз пароль: <input name="rpass" type="password" value=""><br/>';
echo 'Эл.адрес <input name="mail" type="text" value=""><br/>';
echo '<input name="do" type="submit" value="зарегистрировать">';
echo '</form></body></html>'; 
}
//Если данные отправлены
if($_POST['do'] !='') 
{
//Создаем запрос к базе для проверки существования Пользователя
$nick = mysql_real_escape_string($_POST['nick']);
$result=mysql_query("SELECT * FROM users WHERE nick='".$nick."'") or die ("Невозможно сделать выборку из таблицы users: ".mysql_error());
//Проверка результата запроса
if(mysql_num_rows($result)==0) 
{
//Проверка ввведенных паролей
if(empty($_POST['pass']) || empty($_POST['rpass']) OR $_POST['pass'] != $_POST['rpass'])
      {
                  echo "Одно из полей для ввода пароля пустое или введенные пароли не совпадают";
       }
else
       {
//Проверяем на валидность электронный адрес
if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['mail']))
     {
                         echo "E-mail aдрес должен быть вида: [email protected]";
      }
else
      {
//Осуществляем регистарацию
//Генерируем uniq_id
$uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());
$pass = mysql_real_escape_string($_POST['pass']);
$email = mysql_real_escape_string($_POST['mail']);
//Создаем запрос для записи данных в БД
$date=date("dmY");
$r = mysql_query("INSERT INTO users VALUES(0,'".$nick."','".md5($pass)."','".$email."','".$uniq_id."','".$date."','".$date."')") or die ("Не возможно сделать запись в таблицу users: ".mysql_error());
     }
     }
     }
else
      {
                echo "Извините, данный ник зарегин в БД";
     }
      }
   
?>
 




И авторизация есть  

Код

<?php
 //Необходимо подключиться к БД
$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB, $link) or die ('Не могу выбрать БД');

//Если нет сессий
if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {
 //Если кнопка не нажата, отображаем форму
if(!$_POST['do']){

echo '<form name="1" action="" method="post">
     <input name="login" type="text" value=""> <br/>
     <input name="password" type="password" value="">  <br/>
     <input name="do" type="submit" value="Войти">
</form>';

}

//Если кнопка нажата
if($_POST['do']) {
//Проверяем данные
$login = $_POST['login'];
$upass = $_POST['password'];
if($login !='' AND $upass !='') {
//Создаем запрос
$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."'");

//Проверяем существует ли хоть одна запись
if(mysql_num_rows($q1)===1) {
//Если есть, то создаем сессии и перенаправляем на эту страницу
$r=mysql_fetch_array($q1);
$_SESSION['user'] = $r['nick'];
$_SESSION['password'] = $r['password'];

$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));

@Header("Location: index.php");
}
else {echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}
}
}
else {echo 'Введите данные';}
}

else {

   $q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");
if(@mysql_num_rows($q2)==1){
   $r2 = @mysql_fetch_array($q2);

   echo 'Вы: '.ucfirst($r2['nick']).'<br/>';
echo '<a href="index.php">главная</a>   ';
echo '<a href="index.php?page=downloads">загрузки</a><br/>';

if($_GET['page'] !='') {
@include("tpl/".$_GET['page'].".php");
}
else { @include("tpl/default.php");}

 

   echo '<br/><br/><a href="index.php?exit=1">выход</a>';
}
   }

if($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link);   @Header("Location: index.php");}
?>



PM MAIL WWW   Вверх
Shark
Дата 3.5.2009, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



1. чтоб работать с сессиями пиши в кажом файле session_start()
2. из какого источника ты берешь этот бред @mysql_query?
3. не пользуйся собаками @
4. я тебе уже говорил чтоб писал после каждого запроса or die (mysql_error())
5. а ты каким-нить образом относишься к supervladislav'у??? а то вопросы похожи...
6. зачем тут использовать md5() и crypt() одновременно?
Код

if(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID']) {

7. создаешь таблицу и вносишь в нее нужные тебе данные


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
eldar22
Дата 3.5.2009, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: 1
Всего: 1



supervladislav первый раз слышу  

А вот насчёт or die (mysql_error()) я не подумал smile 

PM MAIL WWW   Вверх
SneG0K
Дата 3.5.2009, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Shark, ты че упал? Сравни стили программирования супервладислава и eldar22...
eldar22, собаки - это зло!
После каждого запроса писать or die() - это бред! Это кто как обрабатывает ошибки!
Да, хороший выход создать отдельную таблицу и постоянно ее обновлять (например каждые 15 сек)... 
PM WWW Skype   Вверх
Shark
Дата 3.5.2009, 20:08 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



SneG0K, ну что касается or die() я бы не сказал, что это бред, помогает...
ну и таблица вариантом будет только на начальном этапе....

Добавлено через 2 минуты и 38 секунд
и header'ы вроде должны писаться до вывода, или мне память изменяет?


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
bars80080
Дата 3.5.2009, 20:27 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



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

и лучше это делать уже на этапе разработки, потом всё равно забудешь
PM MAIL WWW   Вверх
SneG0K
Дата 3.5.2009, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 7
Всего: 54



Цитата(Shark @  3.5.2009,  19:08 Найти цитируемый пост)
и header'ы вроде должны писаться до вывода, или мне память изменяет? 

Не должны, а так и есть!
Цитата(bars80080 @  3.5.2009,  19:27 Найти цитируемый пост)
в рабочем коде die() должен фигурировать только в фатальных и бескомпромиссных ситуациях. в иных случаях он должен быть соответствующим образом обыгран (ex: сообщение, запрашиваемая Вами информация не найдена)

и лучше это делать уже на этапе разработки, потом всё равно забудешь 

+1

Слушайте его!!! Он плохому не научит!!!


Цитата(Shark @  3.5.2009,  19:08 Найти цитируемый пост)
ну и таблица вариантом будет только на начальном этапе....

Вполне рабочий вариант, только надо вылизать его, ибо будет бутылочным горлышком, если будет криво оптимизировано!
PM WWW Skype   Вверх
Djinn
Дата 3.5.2009, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 250
Регистрация: 18.5.2007

Репутация: 1
Всего: 1



кстати мне тоже интересно как лучше всего модуль онлайн делать ? smile для крупных порталов у кого свой VDS, сервер - просто писал все временные данные в tmpfs каталог, а как на хостинге оптимальнее всего делать ?
PM MAIL   Вверх
eldar22
Дата 4.5.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: 1
Всего: 1



Вот он модуль онлайн  
Код

<html>
<?php
 //Необходимо подключиться к БД
$link = mysql_connect('база','юзер','пароль')
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db('имя базы', $link) or die ('Не могу выбрать БД');
$sql="SELECT * FROM `users` WHERE `active`=1"; 
$result=mysql_query($sql);
$num_results=mysql_num_rows($result);
for ($i=0; $i<$num_results; $i++)
$row=mysql_fetch_array($result);
$login=$_GET['nick'];

echo '"<TR><TD>".($i+1).". <A HREF="javascript:netsend('".stripslashes($row['nick'])."')">".stripslashes($row['nick'])."</A></TD></TR>"' or die ("Здесь жду ошибку;) ".mysql_error());
?>
<META CONTENT="10; URL=users.php?login=<?=$login;?>" HTTP-EQUIV=Refresh>
<script LANGUAGE="JavaScript">
<!--
function netsend(dat)
{
window.parent.send.sendform.who.value += dat;
window.parent.send.sendform.message.focus();
}
//-->
</SCRIPT>
<TR>
<TD WIDTH="100%" ALIGN="center"><BR>
<FONT COLOR="#008080" FACE="Georgia" SIZE=3><B>Рекомендую:</B></FONT>
</TD>
</TR>
<TR>
<TD WIDTH="100%" ALIGN="left"><BR>
<noindex>1. <A HREF="http://www.сайт.py" TARGET=_blank>Сайт</A><BR></noindex>
<noindex>2. <A HREF="http://www.сайт2.py/форум/" TARGET=_blank>Сайт2</A><BR></noindex>
<noindex>3. <A HREF="http://www.сайт3.py/так просто/" TARGET=_blank>Сайт3</A></noindex>
</TD>
</TR>
<TR>
<TD WIDTH="100%" ALIGN="center"><BR>
<FONT COLOR="#008080" FACE="Georgia" SIZE=3><B>Правила чата:</B></FONT>
</TD>
</TR>
<TR>
<TD WIDTH="100%" ALIGN="left"><BR>
<B>1.</B> Уважайте админа<BR>

<B>2.</B> Если уходите то досвидание<BR>
<B>3.</B> За флуд и ругательства вы можете получить бан
</TD>
</TR>
</TABLE>
</BODY>
</FONT>
</html>


Вот только при запуске опять белый лист если убрать строку
Код

echo '"<TR><TD>".($i+1).". <A HREF="javascript:netsend('".stripslashes($row['nick'])."')">".stripslashes($row['nick'])."</A></TD></TR>"' or die ("Здесь жду ошибку;) ".mysql_error());


То всё заработает  то есть подключиться к базе будет обновляться каждый 10 сек  но кто онлайн не покажет поэтому прошу разобраться вот в этом коде

Код

echo '"<TR><TD>".($i+1).". <A HREF="javascript:netsend('".stripslashes($row['nick'])."')">".stripslashes($row['nick'])."</A></TD></TR>"' or die ("Здесь жду ошибку;) ".mysql_error());

PM MAIL WWW   Вверх
Shark
Дата 4.5.2009, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



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

<META CONTENT="10; URL=users.php?login=<?=$login;?>" HTTP-EQUIV=Refresh>
<script LANGUAGE="JavaScript">
<!--
function netsend(dat)
{
window.parent.send.sendform.who.value += dat;
window.parent.send.sendform.message.focus();
}
//-->
</SCRIPT>

 напиши до этой строчки
Код

echo '"<TR><TD>".($i+1).". <A HREF="javascript:netsend('".stripslashes($row['nick'])."')">".stripslashes($row['nick'])."</A></TD></TR>"' or die ("Здесь жду ошибку;) ".mysql_error());



--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
eldar22
Дата 4.5.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: 1
Всего: 1



Shark 
Нет результат тот  же белый лист

Код

<html>
<META CONTENT="10; URL=users.php?login=<?=$login;?>" HTTP-EQUIV=Refresh>
<script LANGUAGE="JavaScript">
<!--
function netsend(dat)
{
window.parent.send.sendform.who.value += dat;
window.parent.send.sendform.message.focus();
}
//-->
</SCRIPT>
<?php
 //Необходимо подключиться к БД
$link = mysql_connect('база','юзер','пароль')
or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db('имя базы', $link) or die ('Не могу выбрать БД');
$sql="SELECT * FROM `users` WHERE `active`=1"; 
$result=mysql_query($sql);
$num_results=mysql_num_rows($result);
for ($i=0; $i<$num_results; $i++)
$row=mysql_fetch_array($result);
$login=$_GET['nick'];

echo '"<TR><TD>".($i+1).". <A HREF="javascript:netsend('".stripslashes($row['nick'])."')">".stripslashes($row['nick'])."</A></TD></TR>"' or die ("Здесь жду ошибку;) ".mysql_error());

?>

<TR>
<TD WIDTH="100%" ALIGN="center"><BR>
<FONT COLOR="#008080" FACE="Georgia" SIZE=3><B>Рекомендую:</B></FONT>
</TD>
</TR>
<TR>
<TD WIDTH="100%" ALIGN="left"><BR>
<noindex>1. <A HREF="http://www.сайт.py" TARGET=_blank>Сайт</A><BR></noindex>
<noindex>2. <A HREF="http://www.сайт2.py/форум/" TARGET=_blank>Сайт2</A><BR></noindex>
<noindex>3. <A HREF="http://www.сайт3.py/так просто/" TARGET=_blank>Сайт3</A></noindex>
</TD>
</TR>
<TR>
<TD WIDTH="100%" ALIGN="center"><BR>
<FONT COLOR="#008080" FACE="Georgia" SIZE=3><B>Правила чата:</B></FONT>
</TD>
</TR>
<TR>
<TD WIDTH="100%" ALIGN="left"><BR>
<B>1.</B> Уважайте админа<BR>
<B>2.</B> Если уходите то досвидание<BR>
<B>3.</B> За флуд и ругательства вы можете получить бан
</TD>
</TR>
</TABLE>
</BODY>
</FONT>
</html>

PM MAIL WWW   Вверх
Shark
Дата 4.5.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



интересно.. как у тебя может выводиться белый лист при этом:
Код

echo '"<TR><TD>".($i+1).". <A HREF="javascript:netsend('".stripslashes($row['nick'])."')">".stripslashes($row['nick'])."</A></TD></TR>"' or die ("Здесь жду ошибку;) ".mysql_error());

если мне выдается ошибка: Parse error: syntax error, unexpected '"', expecting ',' or ';' in 

попробуй так:
Код

echo "<TR><TD>".($i+1)."<A HREF='javascript:netsend(".stripslashes($row['nick']).")'>".stripslashes($row['nick'])."</A></TD></TR>";

при таком коде мне выводится 1


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
eldar22
Дата 4.5.2009, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: 1
Всего: 1



Shark
Да у меня тоже вывелось 1
PM MAIL WWW   Вверх
Shark
Дата 4.5.2009, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 703
Регистрация: 18.6.2006
Где: Москва

Репутация: 4
Всего: 4



а что тебе вообще надо вывести???


--------------------
Смерть - это только начало... 
Агентство недвижимости Premial
PM MAIL WWW ICQ   Вверх
eldar22
Дата 4.5.2009, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 22.9.2008

Репутация: 1
Всего: 1



Пользователя ведь модуль онлайн то есть тот кто вошёл
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1106 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.