ET-Chat

Top 10 Самых общительных на главной
Top.class.php
Код:
<?php
/**
 * Class Index, login page creator
 *
 * LICENSE: CREATIVE COMMONS PUBLIC LICENSE  "Namensnennung — Nicht-kommerziell 2.0"
 *
 * @copyright  2009 <SEDesign />
 * @license    http://creativecommons.org/licenses/by-nc/2.0/de/
 * @version    $3.0.6$
 * @link       http://www.sedesign.de/de_produkte_chat-v3.html
 * @since      File available since Alpha 1.0
 */
 
class Top extends DbConectionMaker
{
	/**
	* LangXml Obj for login page
	* @var LangXml
	*/
	public $lang;
	
	/**
	* Unix timestamp for login form. This serve as a test for bot blocking.
	* @var int
	*/
	public $aktuell_date_u;
	
	/**
	* Constructor
	*
	* @uses ConnectDB::sqlSet()	
	* @uses ConnectDB::close()	
	* @return void
	*/
	public function __construct (){
	
		// call parent Constructor from class DbConectionMaker
		parent::__construct();
			
		
        $online=$this->dbObj->sqlGet("SELECT etchat_username,etchat_user_point,etchat_user_id   FROM `db1_etchat_user` 
ORDER BY `etchat_user_point` DESC 
LIMIT 0 , 10");
		$i=0;
		$j=0;
		while($online[$i][$j]!="")
		{
		echo "<a href='?profile&op=show&id=".$online[$i][$j+2]."'>".$online[$i][$j]." ".$online[$i][$j+1]."</a><br>";
		$i++;
		}
		// close db connection
		$this->dbObj->close();
		
		// create new LangXml Object
		$langObj = new LangXml;
		$this->lang=$langObj->getLang()->index_php[0];
		
		$this->aktuell_date_u=date('U');
		$_SESSION[$this->_prefix.'set_check']=md5($this->aktuell_date_u);
	
	
		
	

		  
	}
	
	/**
	* Initializer for template
	*
	* @return void
	*/

	
}
Использование
Код:
$tmp=new Top();
Список кто в чате
Online.class.php
Код:
<?php
/**
 * Class Index, login page creator
 *
 * LICENSE: CREATIVE COMMONS PUBLIC LICENSE  "Namensnennung — Nicht-kommerziell 2.0"
 *
 * @copyright  2009 <SEDesign />
 * @license    http://creativecommons.org/licenses/by-nc/2.0/de/
 * @version    $3.0.6$
 * @link       http://www.sedesign.de/de_produkte_chat-v3.html
 * @since      File available since Alpha 1.0
 */
 
class Online extends DbConectionMaker
{
	/**
	* LangXml Obj for login page
	* @var LangXml
	*/
	public $lang;
	
	/**
	* Unix timestamp for login form. This serve as a test for bot blocking.
	* @var int
	*/
	public $aktuell_date_u;
	
	/**
	* Constructor
	*
	* @uses ConnectDB::sqlSet()	
	* @uses ConnectDB::close()	
	* @return void
	*/
	public function __construct (){
	
		// call parent Constructor from class DbConectionMaker
		parent::__construct();
			
		
        $online=$this->dbObj->sqlGet("select  etchat_user_online_user_name,etchat_onlineuser_fid  from db1_etchat_useronline");
		$i=0;
		$j=0;
		while($online[$i][$j]!="")
		{
		echo "<a href='?profile&op=show&id=".$online[$i][$j+1]."'>".$online[$i][$j]."</a><br>";
		$i++;
		}
		// close db connection
		$this->dbObj->close();
		
		// create new LangXml Object
		$langObj = new LangXml;
		$this->lang=$langObj->getLang()->index_php[0];
		
		$this->aktuell_date_u=date('U');
		$_SESSION[$this->_prefix.'set_check']=md5($this->aktuell_date_u);
	
	
		
	

		  
	}
	
	/**
	* Initializer for template
	*
	* @return void
	*/

	
}
Использование
Код:
$obj=new Online();
 
чат действительно хороший,как то я его ставил раз,но сейчас начал ставить,писать инфу в конфиг и запускать инсталятор и мне вот такую фиговину начал показывать
Willkommen bei der Installation von ET-Chat v3

Bevor die Datenbank angelegt werden kann, mьssen Sie die Datei config.php mit einem Editor (Notepad oder Wordpad) auf ihrem PC цffnen und dort die Parameter Ihrer Datenbankverbindung eintragen. Diese Parameter erfahren Sie bei Ihrem Webhostanbieter.

Die aktuellen Einstellungen in der config.php :

Die Anbindung an die Datenbank erfolgt ьber PDO-Extension.

Als Datenbank ist mysql augewдhlt.
Host: localhost
Login: chat1
Pass: chat1
Database: chat1
(Hier mьssen die Parameter Ihres Datenbanks stehen.)
Die Installation kann nicht durchgefьhrt werden.

Ursache/n:
Keine pdo_mysql-Erweiterung gefunden.(pdo_mysql sollte installiert sein!)


Bitte korrigieren Sie die Einstellungen Ihres Webservers um den ET-Chat zu installieren.
неподскажете что к чем?
я растерян:nezn:
Переводчик с немецкого чуш выдаёт какую то мне на слух непонятную
 
  • Заблокирован
  • #14
Если подождеш руссифицированный сюда выложу)вечерком

Добавлено через 42 секунды
чат действительно хороший,как то я его ставил раз,но сейчас начал ставить,писать инфу в конфиг и запускать инсталятор и мне вот такую фиговину начал показывать
неподскажете что к чем?
я растерян:nezn:
У тя нету pdo_mysql
 
База вопросов на 5000
=)
 

Вложения

  • bazabd.rar
    103,6 KB · Просмотры: 30
  • Заблокирован
  • #17
дам советик, поставь фильтрования на всех полях, + скрой папки от общего обозрения а то вот к примеру...

чтобы это закрыть добавь файлик .htaccess
с таким содержанием
#
# Если Апач выдает ERROR 500 - "Internal Server Error", то закомментируйте
# следующие команды. Но в дальнейшем разберитесь и верните их. Экономьте
# трафик пользователей с модемов! От этого завит, на сколько будет тормозить
# ваш чат.
#
# Настройка кеширования картинок, js и css. Чтобы при каждом запросе зря не
# подгружать картинки и .css
#
# ОЧЕНЬ РЕКОМЕНДУЕТСЯ ВКЛЮЧИТЬ. Ускорение загрузки на 1 секунду при каждом
# обновлении страниц (на медленных модемах еще больше преимущество будет).
# Для включения раскомментируйте 2 строки:

#ExpiresActive On
#ExpiresDefault "now plus 120 min"


#------------------------------------------------------
#
# Грузить по-умолчанию главный файл:
#
DirectoryIndex index.php


#------------------------------------------------------
#
# Настройка опций PHP
#
php_flag magic_quotes_gpc off
php_flag register_globals on
php_flag display_errors on
php_flag display_startup_errors on
php_value error_reporting 2047
далее нащет фильтрации полей регистрации и профиля....
все поля в профиле уязвимы, заисключением наверно тока поля о себе
ну вообще, это вина разработчиков что так сделали... счас все нужно перекрывать...
 
я согласен выше сказанным про фильтрацию я забыл
вот выкладываю
обновленный reg.class.php
Код:
<?php
/**
 * Class Index, login page creator
 *
 * LICENSE: CREATIVE COMMONS PUBLIC LICENSE  "Namensnennung — Nicht-kommerziell 2.0"
 *
 * @copyright  2009 <SEDesign />
 * @license    http://creativecommons.org/licenses/by-nc/2.0/de/
 * @version    $3.0.6$
 * @link       http://www.sedesign.de/de_produkte_chat-v3.html
 * @since      File available since Alpha 1.0
 */
 
class Reg extends DbConectionMaker
{
	/**
	* LangXml Obj for login page
	* @var LangXml
	*/
	public $lang;
	
	/**
	* Unix timestamp for login form. This serve as a test for bot blocking.
	* @var int
	*/
	public $aktuell_date_u;
	
	/**
	* Constructor
	*
	* @uses ConnectDB::sqlSet()	
	* @uses ConnectDB::close()	
	* @return void
	*/
	public function __construct (){
	
		// call parent Constructor from class DbConectionMaker
		parent::__construct();
			
		// starts session in index.php
		session_start();
		
		// Sets  cookie with Unix timestamp. This serve as a test for bot blocking.
		setcookie($this->_prefix."cookie_test", date('U'));
		
		// Sets charset and content-type for index.php
		header('content-type: text/html; charset=utf-8');
		
		// Set all Data from [prefix]_etchat_config Table to Session-Vars. So needs only to be run once on login page.
		$this->configTabData2Session();
		
		// something like cron-job to delete wasteful/old data from db
		$this->dbObj->sqlSet("delete FROM {$this->_prefix}etchat_messages where etchat_timestamp < ".(date('U')-($_SESSION['etchat_'.$this->_prefix.'loeschen_nach']*3600*24)));
		$this->dbObj->sqlSet("delete FROM {$this->_prefix}etchat_blacklist where etchat_blacklist_time < ".date('U'));
		$this->dbObj->sqlSet("delete FROM {$this->_prefix}etchat_kick_user where etchat_kicked_user_time < ".date('U'));

		// close db connection
		//$this->dbObj->close();
		
		// create new LangXml Object
		$langObj = new LangXml;
		$this->lang=$langObj->getLang()->index_php[0];
		
		$this->aktuell_date_u=date('U');
		$_SESSION[$this->_prefix.'set_check']=md5($this->aktuell_date_u);
			$op=$_POST['op'];
			$nick=$_POST['nick'];
			$gender=$_POST['gender'];
	$pass=$_POST["pass"];
		if ( ($op="reg")  and  ($nick!="") and ($pass!=""))
{
		$this->registr_user($nick,$pass,$gender); 
		
		} 
	
		{
		// initialize index template
		$this->initTemplate();
		}
	

		  
	}
	
	/**
	* Initializer for template
	*
	* @return void
	*/
	private function initTemplate(){
		// Include Template
		include_once("styles/".$_SESSION['etchat_'.$this->_prefix.'style']."/reg.tpl.html");
	}
	function  registr_user($nick,$pass,$gender) {
	$nick=$this->inputclean($nick,true);
	$pass=$this->inputclean($pass,true);
	$gender=$this->inputclean($gender,true);
	
	//$this->configTabData2Session();
	$otv=$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_user ( etchat_username, etchat_usersex,etchat_userpw ) VALUES ( '".$nick."', '".$gender."','".md5($pass)."')");
	if ($otv!="")
	{
		include_once("styles/".$_SESSION['etchat_'.$this->_prefix.'style']."/regall.tpl.html");
		} else 
		{
		$this->initTemplate();
		}



	}
 public 	function inputclean($input, $sql=false) {
    $input = htmlentities($input, ENT_QUOTES, 'UTF-8');
    // мнемонизировали строку.

    if(get_magic_quotes_gpc ())
    {
        $input = stripslashes ($input);
        // убрали лишнее теперь экранирование.
    }
    if ($sql)
    {
      ///  $input = mysql_real_escape_string ($input);
        // если нужен MySQL-запрос, то делаем соответствующую очистку. 
        // Подключение к базе должно быть активным!
    }
    $input = strip_tags($input);
    //режем теги.

    $input=str_replace ("\n"," ", $input);
    $input=str_replace ("\r","", $input);
    //обрабатываем переводы строки.

    return $input;}
	
}
profile.class.php
Код:
<?php
/**
 * Class Index, login page creator
 *
 * LICENSE: CREATIVE COMMONS PUBLIC LICENSE  "Namensnennung נNicht-kommerziell 2.0"
 *
 * @copyright  2009 <SEDesign />
 * @license    http://creativecommons.org/licenses/by-nc/2.0/de/
 * @version    $3.0.6$
 * @link       http://www.sedesign.de/de_produkte_chat-v3.html
 * @since      File available since Alpha 1.0
 */
 
class Profile extends DbConectionMaker
{
	/**
	* LangXml Obj for login page
	* @var LangXml
	*/
	public $lang;
  public static   $text;
	/**
	* Unix timestamp for login form. This serve as a test for bot blocking.
	* @var int
	*/
	public $aktuell_date_u;
	
	/**
	* Constructor
	*
	* @uses ConnectDB::sqlSet()	
	* @uses ConnectDB::close()	
	* @return void
	*/
	public function __construct (){
	
		// call parent Constructor from class DbConectionMaker
		parent::__construct();
			
		
		
		// Sets  cookie with Unix timestamp. This serve as a test for bot blocking.

		
		// Set all Data from [prefix]_etchat_config Table to Session-Vars. So needs only to be run once on login page.
		$this->configTabData2Session();
		
		// something like cron-job to delete wasteful/old data from db
		$this->dbObj->sqlSet("delete FROM {$this->_prefix}etchat_messages where etchat_timestamp < ".(date('U')-($_SESSION['etchat_'.$this->_prefix.'loeschen_nach']*3600*24)));
		$this->dbObj->sqlSet("delete FROM {$this->_prefix}etchat_blacklist where etchat_blacklist_time < ".date('U'));
		$this->dbObj->sqlSet("delete FROM {$this->_prefix}etchat_kick_user where etchat_kicked_user_time < ".date('U'));
		
		// create new LangXml Object
		$langObj = new LangXml;
		$this->lang=$langObj->getLang()->index_php[0];
		
		$this->aktuell_date_u=date('U');
		
	
 
	
		{
		// initialize index template
		
		}
	//$text="";
	$op=$this->inputclean($_REQUEST['op'],true);
	$id=$this->inputclean($_REQUEST['id'],true);
  if ($op=="show")
		  {
		  if ($id!="")
		  {
		  $info=$this->dbObj->sqlGet("SELECT `etchat_username`,`etchat_user_point`,city,icq,skype,jabber,year,pol,name,surname,o_sebe from  db1_etchat_user where `etchat_user_id`=".$id);
		  
		   
		  $city=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][2]),true);
		  $icq=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][3]),true);
		  $skype=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][4]),true);
		  $jabber=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][5]),true);
		  $year=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][6]),true);
		  $pol="";
		  switch ($info[0][7]){
		  case 0:
		  $pol="Неизвестный";
		   break;
		   case 1:
		   $pol="Мужской";
		   break;
		   case 2:
		   $pol="Женский";
		   break;
	
		  
		  }
		  $name=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][8]),true);
		  $surname=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][9]),true);
		  $o_sebe=$this->inputclean(iconv("windows-1251", "utf-8",$info[0][10]),true);
		  $this->text="Ник ".$info[0][0]."<br>Очков ".$info[0][1]."<br> Город  $city<br> ICQ $icq <br> Skype $skype<br> Jabber  $jabber<br> Дата Рождения $year <br> Пол $pol <br>  Имя $name <br> Фамилия $surname <br>О себе <br> $o_sebe";
		
		  }else 
		  {
		  $this->text= "ХМ ошибко)";
		  }
		  } else if ($op=="edit")
		  {
		  $nick=$this->inputclean($_COOKIE['et_nick'],true);
		  $pass=$this->inputclean($_COOKIE['et_pass'],true);
		  if (($nick!="") and ($pass!=""))
		  {
		    $edit=$this->dbObj->sqlGet("SELECT etchat_userpw,`etchat_username`,city,icq,skype,jabber,year,pol,name,surname,o_sebe from  db1_etchat_user WHERE `etchat_username` LIKE '$nick'");
			$pass=md5($pass);
			$pass1=$edit[0][0];
			if ($pass==$pass1)
			{
			$city=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][2]),true);
			$icq=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][3]),true);
			$skype=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][4]),true);
			$jabber=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][5]),true);
			$year=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][6]),true);
			$name=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][8]),true);
			$surname=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][9]),true);
			$o_sebe=$this->inputclean(iconv("windows-1251", "utf-8",$edit[0][10]),true);
			
			$this->text='<form action="?profile&op=update" method="POST">
Имя <input type=text name="name" value="'.$name.'"><br>
Фамилия <input type=text name="surname" value="'.$surname.'"><br>
Город  <input type=text name="city" value="'.$city.'"><br>
ICQ  <input type=text name="icq" value="'.$icq.'"><br>
Skype <input type=text name="skype" value="'.$skype.'"><br>
Jabber <input type=text name="jabber" value="'.$jabber.'"><br>
Дата Рождения        <input type=text name="year" value="'.$year.'"><br>
Пол   <SELECT NAME="pol"><OPTION VALUE="0">неизвестный</OPTION>
    <OPTION VALUE="1">мужской</OPTION>
  <OPTION VALUE="2">женский</OPTION>
</SELECT><br>
О себе:<br>
<TEXTAREA   name="o_sebe" cols=60 rows=7 >'.$o_sebe.'</TEXTAREA><br>
<input type=submit value="Сохранить">
</form>';
			}
		  
		  }
		  else
		  {
		  $this->text= "Вы не авторизовались!";
		  }
		  
		  
		  } else if ($_REQUEST['op']=="update")
		  {
		  $nick=$this->inputclean($_COOKIE['et_nick'],true);
		  $pass=$this->inputclean($_COOKIE['et_pass'],true);
		  if (($nick!="") and ($pass!=""))
		  {
		    $edit6=$this->dbObj->sqlGet("SELECT etchat_userpw,`etchat_username`,city,icq,skype,jabber,year,pol,name,surname,o_sebe from  db1_etchat_user WHERE `etchat_username` LIKE '$nick'");
			$pass=md5($pass);
			$pass1=$edit6[0][0];
			if ($pass==$pass1)
			{
		      
		  	$city=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['city']),true);
			$icq=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['icq']),true);
			$skype=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['skype']),true);
			$jabber=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['jabber']),true);
			$year=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['year']),true);
			$name=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['name']),true);
			$surname=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['surname']),true);
			$o_sebe=$this->inputclean(iconv("utf-8", "windows-1251",$_POST['o_sebe']),true);
		  // UPDATE `db1_etchat_user` SET `city` = 'Саратов1' WHERE `etchat_user_id` =35 LIMIT 1 ;
		       $edit666=$this->dbObj->sqlSet("UPDATE `db1_etchat_user` SET `city` = '$city',`icq` = '$icq',`skype` = '$skype',`jabber` = '$jabber',
			   `year`= '$year' ,`name` = '$name',`surname` = '$surname',`o_sebe` = '$o_sebe' WHERE `etchat_username` LIKE '$nick'");
			   $this->text="Профиль успешно обновлен";
			   } else 
			   {
			   $this->text="Ошибко";
			   }
			   
		  }
		 }
		  $this->initTemplate();
		  
	}
	
	/**
	* Initializer for template
	*
	* @return void
	*/
	public function inputclean($input, $sql=false) {
    $input = htmlentities($input, ENT_QUOTES, 'UTF-8');
    // мнемонизировали строку.

    if(get_magic_quotes_gpc ())
    {
        $input = stripslashes ($input);
        // убрали лишнее теперь экранирование.
    }
    if ($sql)
    {
    //    $input = mysql_real_escape_string ($input);
        // если нужен MySQL-запрос, то делаем соответствующую очистку. 
        // Подключение к базе должно быть активным!
    }
    $input = strip_tags($input);
    //режем теги.

    $input=str_replace ("\n"," ", $input);
    $input=str_replace ("\r","", $input);
    //обрабатываем переводы строки.

    return $input;
}
	private function initTemplate(){
		// Include Template
		include_once("styles/".$_SESSION['etchat_'.$this->_prefix.'style']."/profile.tpl.html");
	}

	
}

так вот вроде и все
p.s спасибо что протестил
по поводу htaccess
просто туда нужно добавить
пару таких строк
Код:
<FilesMatch "\.php$"> 
Order allow,deny 
Deny from all 
</FilesMatch>
и этот файл засунуть в дирректорию class и /class/admin
 
все сис файлы позакрывать нужно, deny files вот так примерно в htaccess.
 
  • Заблокирован
  • #20
и еще я не уверен но паходу лучше было бы шифровать паролики в md5
паходу еще скуль валит....
 
Назад
Сверху