За последние 24 часа нас посетили 18005 программистов и 1653 робота. Сейчас ищут 1415 программистов ...

[beta] И снова чат... шаблонный

Тема в разделе "Решения, алгоритмы", создана пользователем EvelRus, 30 июл 2008.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Решил завести новую тему т.к. теперь чат будет на шаблонах и полностью на Mysql + все исходники я буду кидать сюда...
    Как и в прошлый раз прошу четко указывать где я не прав, а ГЛАВНОЕ ПОЧЕМУ!!!
    Пожалуй, начнем

    PHP:
    1.  
    2. <?php
    3. /*************************************\
    4. *              config.php                            
    5. *     ----------------------------                  
    6. *   Programm: DoD_Chat 1.2b (MySql)    
    7. *   Date:     27/07/2008              
    8. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    9. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    10. \*************************************/
    11.  
    12. date_default_timezone_set ('Europe/Moscow');
    13. //error_reporting(E_ALL | E_STRICT);
    14. // Настройки для соединения с БД
    15. $db_server = 'localhost';
    16. $db_user = '';
    17. $db_passwd = '';
    18. $db_table = '';
    19.  
    20. // Настройки для работы с БД
    21. $db_table_config = 'chat_config'; // имя таблицы с конфигурацией чата
    22. $db_table_ipban = 'chat_ipban'; // Имя таблицы со списком IP адресов, которым запрещен доступ к чату
    23. $db_table_logs = 'chat_logs'; // Имя таблицы с логами чата
    24. $db_table_users = 'phpbb_users'; // Имя таблицы с пользователями чата
    25. $db_table_users_id = 'user_id'; // Имя поля с ID пользователя в таблице $db_table_users
    26. $db_table_users_name = 'username'; // Имя поля с логином пользователя в таблице $db_table_users
    27. $db_table_users_passwd = 'user_password'; // имя поля с паролем пользователя в таблице table $db_table_users
    28.  
    29. ?>
    30.  
    PHP:
    1.  
    2. <?php
    3. /*************************************\
    4. *              index.php                            
    5. *     ----------------------------                  
    6. *   Programm: DoD_Chat 1.2b (MySql)    
    7. *   Date:     27/07/2008              
    8. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    9. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    10. \*************************************/
    11.  
    12. // Инициализируем сессию
    13. // Подключение дополнительных файлов
    14. include_once ('config.php');
    15. include_once ('includes/functions.php');
    16. // Соеденяемся с БД
    17. db_connect($db_server, $db_user, $db_passwd, $db_table);
    18. mysql_query('SET NAMES CP1251');
    19.  
    20. // Выход из чата
    21. $act = $_GET['act'];
    22. if ($act == 'exit')
    23. {
    24.  log_write($_SESSION['username'], '<b>[Вышел из чата]</b>', null, null, date('H:i:s'), '1');
    25.  $sql = ("UPDATE `$db_table_users` SET `user_chat_online` = '0' WHERE `$db_table_users`.`$db_table_users_id` = $_SESSION[user_id] LIMIT 1");
    26. $sql = mysql_query($sql) or die (mysql_error());
    27.  header('Location: index.php');
    28.  die();
    29. }
    30.  
    31. // Определение и подключение языка "по-умолчанию"
    32. $sql = mysql_fetch_array(mysql_query("SELECT * FROM `$db_table_config` WHERE `name_config` = 'default_lang'"));
    33. $lang_def = $sql['value_config'];
    34. include_once ('languages/'.$lang_def.'/lang_main.php');
    35.  
    36. // Проверка что IP пользователя не занесен в бан
    37. $sql = ("SELECT * FROM `chat_ipban` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."' LIMIT 1");
    38. $sql = mysql_query($sql) or die ($lang['ip_close_error']);
    39. // Если IP адрес есть в БД
    40. if (mysql_num_rows ($sql) == 1)
    41. {
    42.  die ($lang['ip_close']);
    43. }
    44. // Проверка заполнения формы входа
    45. // Если не заполнена, вывести
    46. if (!isset($_POST['submit']))
    47. {
    48.  $sql = mysql_fetch_array(mysql_query("SELECT * FROM `$db_table_config` WHERE `name_config` = 'title_chat'"));
    49.  $title = $sql['value_config'];
    50.  $template = file_get_contents ('template/index.tpl');
    51.  $template = str_replace ('{title_chat}', $title, $template);
    52.  echo $template;
    53. }
    54. else
    55. {
    56.   $_POST['login'] = mysql_real_escape_string($_POST['login']);
    57.   $_POST['password'] = mysql_real_escape_string($_POST['password']);
    58.  
    59.   // Проверка наличия пользователя
    60.   $sql = ("SELECT * FROM `$db_table_users` WHERE `$db_table_users_name` = '".$_POST['login']."' LIMIT 0 , 1");
    61.   $sql = mysql_query($sql) or die (mysql_error());
    62.  
    63.   // Если такого нет, выдать сообщение об ошибке
    64.   if (mysql_num_rows ($sql) == 0)
    65.   {
    66.    die ($lang['user_none']);
    67.   }
    68.  
    69.   // Если пользователь, все же, существует =)
    70.   $data = mysql_fetch_array(mysql_query("SELECT * FROM `$db_table_users` WHERE `$db_table_users_name` = '$_POST[login]'"));
    71.  
    72.   // Если логин и пароль верные, входим
    73.   if (($_POST['login'] == $data[$db_table_users_name]) && md5($_POST['password']) == $data[$db_table_users_passwd])
    74.   {
    75.    // Проверяем что этому пользователю можно зайти в чат
    76.    if ($data['user_chat_ban'] == 1)
    77.    {
    78.     die ($lang['user_in_ban']);
    79.    }
    80.    // Проверяем чему равна карма и нарушения
    81.    elseif ($data['user_chat_error'] >= $data['user_chat_karma'])
    82.    {
    83.     die ($lang['user_karma_error']);
    84.    }
    85.     $_SESSION['login'] = true;
    86.     $_SESSION['username'] = $data[$db_table_users_name];
    87.     $_SESSION['user_id'] = $data[$db_table_users_id];
    88.     $_SESSION['user_chat_status'] = $data['user_chat_status'];
    89.     $_SESSION['user_chat_rank'] = $data['user_chat_rank'];
    90.     $_SESSION['user_chat_reload'] = $data['user_chat_reload'];
    91.     $_SESSION['user_chat_sort'] = $data['user_chat_sort'];
    92.     $sql = ("UPDATE `$db_table_users` SET `user_chat_online` = '1', `user_chat_ip` = '".$_SERVER['REMOTE_ADDR']."', `user_chat_session` = '".session_id()."', `user_chat_action` = '".time()."' WHERE `$db_table_users`.`user_id` = $_SESSION[user_id] LIMIT 1");
    93.     $sql = mysql_query($sql) or die (mysql_error());
    94.     log_write($_SESSION['username'], '<b>[Входит в чат]</b>', null, null, date('H:i:s'), '1');
    95.     header('Location: chat.php');
    96.    }
    97.    // Если логин и/или пароль не верные
    98.    else
    99.    {
    100.     die ($lang['user_none_login']);
    101.    }
    102. }
    103. ?>
    104.  
    PHP:
    1. <?php
    2. /*************************************\
    3. *              chat.php                            
    4. *     ----------------------------                  
    5. *   Programm: DoD_Chat 1.2b (MySql)    
    6. *   Date:     27/07/2008              
    7. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    8. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    9. \*************************************/
    10.  
    11. // Инициализируем сессию
    12. if (!isset($_SESSION['login']) || !$_SESSION['login'])
    13. {
    14.  header('Location: index.php');
    15. }
    16. // Подключение дополнительных файлов
    17. include_once ('config.php');
    18. include_once ('includes/functions.php');
    19.  
    20. // Соеденяемся с БД
    21.  
    22. db_connect($db_server, $db_user, $db_passwd, $db_table);
    23. mysql_query('SET NAMES CP1251');
    24. $sql = mysql_fetch_array(mysql_query("SELECT * FROM `$db_table_config` WHERE `name_config` = 'title_chat'"));
    25. $title = $sql['value_config'];
    26. $template = file_get_contents ('template/chat.tpl');
    27. $template = str_replace ('{title_chat}', $title, $template);
    28. echo $template;
    29. ?>
    PHP:
    1. <?php
    2. /*************************************\
    3. *            win_main.php                            
    4. *     ----------------------------                  
    5. *   Programm: DoD_Chat 1.2b (MySql)    
    6. *   Date:     27/07/2008              
    7. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    8. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    9. \*************************************/
    10.  
    11. // Инициализируем сессию
    12. if (!isset($_SESSION['login']) || !$_SESSION['login'])
    13. {
    14.  header('Location: index.php');
    15. }
    16. // Подключение дополнительных файлов
    17. include_once ('config.php');
    18. include_once ('includes/functions.php');
    19.  
    20. // Соеденяемся с БД
    21. db_connect($db_server, $db_user, $db_passwd, $db_table);
    22. mysql_query('SET NAMES CP1251');
    23. $sql = ("SELECT * FROM `chat_logs` WHERE `privat` = '' AND `date` = '".date('d-m-Y')."' ORDER BY `id` ".$_SESSION[user_chat_sort]." LIMIT 0 , 30");
    24. $sql = mysql_query($sql) or die (mysql_error());
    25.  
    26. //Обновление окна
    27. Header('Refresh: '.$_SESSION['user_chat_reload']);
    28.  
    29. // Если сообщений нет
    30. if (mysql_num_rows ($sql) == 0)
    31. {
    32. $error = ('Сообщений, пока, нет');
    33. }
    34.  
    35. if (empty($error))
    36. {
    37.  while($nextrow = mysql_fetch_array($sql))
    38.  {
    39.   $template = file_get_contents ('template/win_main.tpl');
    40.   $nextrow['what'] = str_replace($_SESSION['username'],'<b>'.$_SESSION['username'].'</b>',$nextrow['what']);
    41.   $template = str_replace (array('[if_no_error]','[/if_no_error]','{error}'), '', $template);
    42.   $template = str_replace ('{time}', $nextrow['time'], $template);
    43.   $template = str_replace ('{who}', $nextrow['who'], $template);
    44.   $template = str_replace ('{what}', $nextrow['what'], $template);
    45.   echo $template;
    46.  }
    47. }
    48. else
    49. {
    50.  $template = file_get_contents ('template/win_main.tpl');
    51.  $template = preg_replace ("#\[if_no_error\](.+?)\[\/if_no_error\]#is", "", $template);
    52.  $template = str_replace ('{error}', $error, $template);
    53.  echo $template;
    54. }
    55. ?>
    PHP:
    1. <?php
    2. /*************************************\
    3. *            win_menu.php                            
    4. *     ----------------------------                  
    5. *   Programm: DoD_Chat 1.2b (MySql)    
    6. *   Date:     27/07/2008              
    7. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    8. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    9. \*************************************/
    10.  
    11. // Инициализируем сессию
    12. if (!isset($_SESSION['login']) || !$_SESSION['login'])
    13. {
    14.  header('Location: index.php');
    15. }
    16. // Подключение дополнительных файлов
    17. include_once ('config.php');
    18. include_once ('includes/functions.php');
    19.  
    20. $template = file_get_contents ('template/win_menu.tpl');
    21. echo $template;
    22. ?>
    PHP:
    1. <?php
    2. /*************************************\
    3. *            win_main.php                            
    4. *     ----------------------------                  
    5. *   Programm: DoD_Chat 1.2b (MySql)    
    6. *   Date:     27/07/2008              
    7. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    8. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    9. \*************************************/
    10.  
    11. // Инициализируем сессию
    12. if (!isset($_SESSION['login']) || !$_SESSION['login'])
    13. {
    14.  header('Location: index.php');
    15. }
    16. // Подключение дополнительных файлов
    17. include_once ('config.php');
    18. include_once ('includes/functions.php');
    19.  
    20. db_connect($db_server, $db_user, $db_passwd, $db_table);
    21. mysql_query('SET NAMES CP1251');
    22.  
    23. // Определение и подключение языка "по-умолчанию"
    24. $sql = mysql_fetch_array(mysql_query("SELECT * FROM `$db_table_config` WHERE `name_config` = 'default_lang'"));
    25. $lang_def = $sql['value_config'];
    26. include_once ('languages/'.$lang_def.'/lang_main.php');
    27.  
    28. $sql = "SELECT * FROM `$db_table_users` WHERE `$db_table_users_name`='$_SESSION[username]'";
    29. $sql = mysql_fetch_array(mysql_query($sql)) or print($lang['only_read']);
    30. if ($sql['user_chat_read'] >= time())
    31. {
    32.  $time_read = round(($sql['user_chat_read'] - time())/60);
    33.  $error = $lang['only_read_mess_begin'].' '.$time_read.' '.$lang['minutes'];
    34.  $template = file_get_contents ('template/win_mess_form.tpl');
    35.  $template = preg_replace ("#\[if_no_error\](.+?)\[\/if_no_error\]#is", "", $template);
    36.  $template = str_replace ('{error}', $error, $template);
    37.  echo $template;
    38. }
    39. else
    40. {
    41.  $template = file_get_contents ('template/win_mess_form.tpl');
    42.  $template = str_replace (array('[if_no_error]','[/if_no_error]','{error}'), '', $template);
    43.  $template = str_replace ('{content}', $content, $template);
    44.  echo $template;
    45. }
    46. if ($_POST['message'] != '')
    47. {
    48.  log_write($_SESSION['username'], $_POST['message'], $_POST['status'], $_POST['privat'], date(H.':'.i.':'.s));
    49. }
    50. ?>
    PHP:
    1.  
    2. <?php
    3. /*************************************\
    4. *           win_privat.php                            
    5. *     ----------------------------                  
    6. *   Programm: DoD_Chat 1.2b (MySql)    
    7. *   Date:     27/07/2008              
    8. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    9. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    10. \*************************************/
    11.  
    12. // Инициализируем сессию
    13. if (!isset($_SESSION['login']) || !$_SESSION['login'])
    14. {
    15.  header('Location: index.php');
    16. }
    17. // Подключение дополнительных файлов
    18. include_once ('config.php');
    19. include_once ('includes/functions.php');
    20.  
    21. // Соеденяемся с БД
    22. db_connect($db_server, $db_user, $db_passwd, $db_table);
    23. mysql_query('SET NAMES CP1251');
    24. $sql = ("SELECT * FROM `chat_logs` WHERE `who` = '".$_SESSION['username']."' AND `date` = '".date('d-m-Y')."' AND `privat` != '' OR `privat` = '".$_SESSION['username']."' ORDER BY `id` ".$_SESSION['user_chat_sort']." LIMIT 0 , 15");
    25. $sql = mysql_query($sql) or die (mysql_error());
    26.  
    27. //Обновление окна
    28. Header('Refresh: '.$_SESSION['user_chat_reload']);
    29.  
    30. if (mysql_num_rows ($sql) == 0)
    31. {
    32. $error = ('Окно привата');
    33. }
    34. if (empty($error))
    35. {
    36.  while($nextrow = mysql_fetch_array($sql))
    37.  {
    38.   $template = file_get_contents ('template/win_privat.tpl');
    39.   $template = str_replace (array('[if_no_error]','[/if_no_error]','{error}'), '', $template);
    40.   $template = str_replace ('{time}', $nextrow['time'], $template);
    41.   $template = str_replace ('{who}', $nextrow['who'], $template);
    42.   $template = str_replace ('{privat}', $nextrow['privat'], $template);
    43.   $template = str_replace ('{what}', $nextrow['what'], $template);
    44.   echo $template;
    45.  }
    46. }
    47. else
    48. {
    49.  $template = file_get_contents ('template/win_privat.tpl');
    50.  $template = preg_replace ("#\[if_no_error\](.+?)\[\/if_no_error\]#is", "", $template);
    51.  $template = str_replace ('{error}', $error, $template);
    52.  echo $template;
    53. }
    54. ?>
    55.  
    PHP:
    1.  
    2. <?php
    3. /*************************************\
    4. *            win_user.php                            
    5. *     ----------------------------                  
    6. *   Programm: DoD_Chat 1.2b (MySql)    
    7. *   Date:     27/07/2008              
    8. *   Author:   DragonOfDeath by support [url=http://www.php.ru]www.php.ru[/url]      
    9. *   Contact:  [email=DragonOfDeath@bk.ru]DragonOfDeath@bk.ru[/email]
    10. \*************************************/
    11.  
    12. // Инициализируем сессию
    13. // Подключение дополнительных файлов
    14. include_once ('config.php');
    15. include_once ('includes/functions.php');
    16. // Соеденяемся с БД
    17. db_connect($db_server, $db_user, $db_passwd, $db_table);
    18. mysql_query('SET NAMES CP1251');
    19.  
    20. //Обновление окна
    21. Header('Refresh: 30');
    22.  
    23. $sql = "SELECT * FROM `$db_table_users` WHERE `user_chat_online`='1' ORDER BY `$db_table_users_name` ASC";
    24. $sql = mysql_query($sql) or print($lang['online_error']);
    25. while($nextrow = @mysql_fetch_array($sql))
    26. {
    27.  if ((time() - $nextrow['user_chat_action'])  > '900')
    28.  {
    29.  $sql1 = ("UPDATE `$db_table_users` SET `user_chat_online` = 0 WHERE `$db_table_users_id` = ".$nextrow[$db_table_users_id]." LIMIT 1");
    30.  $sql1 = mysql_query($sql1) or print("Не могу убрать ".$nextrow[$db_table_users_name]." из On-Line<br>");
    31.  @Header('Location: index.php');
    32.  }
    33.   $nextrow['user_chat_gender'];
    34.   $template = file_get_contents ('template/win_user.tpl');
    35.   if ($nextrow['user_chat_rank'] == 1 || $nextrow['user_chat_rank'] == 2 || $nextrow['user_chat_rank'] == 3)
    36.   {
    37.    $template = str_replace ('{user}', '<i><a href="#" onClick="parent.frames[\'messages\'].document.getElementById(\'privat\').value = this.innerHTML; return false;">'.$nextrow[$db_table_users_name].'</a></i>', $template);
    38.   }
    39.   else
    40.   {
    41.    $template = str_replace ('{user}', '<a href="#" onClick="parent.frames[\'messages\'].document.getElementById(\'privat\').value = this.innerHTML; return false;">'.$nextrow[$db_table_users_name].'</a>', $template);
    42.   }
    43.   if($nextrow['user_chat_gender'] == 1)
    44.   {
    45.    $template = str_replace ('{sex}', '<img src="images/sex_m.gif">', $template);
    46.   }
    47.   elseif ($nextrow['user_chat_gender'] == 2)
    48.   {
    49.    $template = str_replace ('{sex}', '<img src="images/sex_j.gif">', $template);
    50.   }
    51.   else
    52.   {
    53.    $template = str_replace ('{sex}', '<img src="images/sex_x.gif">', $template);
    54.   }
    55.   $template = str_replace ('{karma}', $nextrow['user_chat_karma'], $template);
    56.   $template = str_replace ('{error}', $nextrow['user_chat_error'], $template);
    57.   echo $template;
    58. }
    59. ?>
    60.  

    ---------------------------------------------------------------------------------------------------------------------------------------

    Шаблоны
    HTML:
    1.  
    2. <!-- chat.tpl -->
    3. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    4. <meta http-equiv="Content-Language" content="ru">
    5. <link rel=stylesheet href="template/style.css" type="text/css">
    6. <title>{title_chat}</title>
    7. </head>
    8. <frameset rows="20,*" border="0">
    9. <frame name="menu" marginheight="20" scrolling="no" src="win_menu.php" noresize border="0">
    10. <frameset cols="80%,*" border="0">
    11. <frameset rows="*,80,150" border="0">
    12. <frame name="main" scrolling="auto" src="win_main.php">
    13. <frame scrolling="no" name="messages" src="win_mess.php">
    14. <frame scrolling="auto" name="privat" src="win_privat.php">
    15. </frameset>
    16. <frame name="user" src="win_user.php" scrolling="auto" target="_self">
    17. </frameset>
    18. </frameset>
    19. </html>
    HTML:
    1.  
    2. <!-- error_mysql.tpl -->
    3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    4.  <meta http-equiv="Content-Language" content="ru">
    5.  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    6.  <title>Ошибка</title>
    7. </head>
    8.  <p align="center">Нет соединения с базой данных
    9.  <p align="center"><b>Проверьте параметры в config.php</b>
    10. </body>
    11. </html>
    HTML:
    1.  
    2. <!-- index.tpl -->
    3. <script language="JavaScript">
    4. <!-- //
    5. {
    6. if (self.parent.frames.length != 0)
    7. self.parent.location="index.php"
    8. }
    9. // -->
    10. </script>
    11. <form method="POST" action="index.php">
    12.     <table border="0" width="100%">
    13.         <tr>
    14.             <td align="right" width="50%">Логин:</td>
    15.             <td align="left" width="50%"><input type="text" name="login" size="20"></td>
    16.         </tr>
    17.         <tr>
    18.             <td align="right" width="50%">Пароль:</td>
    19.             <td align="left" width="50%"><input type="password" name="password" size="20"></td>
    20.         </tr>
    21.         <tr>
    22.             <td align="center" colspan="2">
    23.             <input type="submit" value="Отправить" name="submit"><input type="reset" value="Сброс" name="reset"></td>
    24.         </tr>
    25.     </table>
    26. </form>
    HTML:
    1.  
    2. <!-- win_main.tpl -->
    3. <script language="javascript">
    4. <!--
    5. if (self == parent)
    6. {
    7. self.window.location='index.php';
    8. }
    9. -->
    10. <link rel=stylesheet href="template/style.css" type="text/css">
    11. <body class="font_txt">
    12. {error}
    13. [if_no_error]
    14. <font color="0000FF">
    15. <a target"messages" href="#" onClick="parent.frames['messages'].document.getElementById('message').value = parent.frames['messages'].document.getElementById('message').value + ' см. ' + this.innerHTML + ' ';">[{time}]</a></font> ->
    16. <a target"messages" href="#" onClick="parent.frames['messages'].document.getElementById('message').value = parent.frames['messages'].document.getElementById('message').value + this.innerHTML; return false;">{who}:</a> {what}<br>
    17. [/if_no_error]
    18. </body>
    HTML:
    1.  
    2. <!-- win_menu.tpl -->
    3. <link rel=stylesheet href="template/style.css" type="text/css">
    4. <body class="font_all">
    5. <script language="javascript">
    6. <!--
    7. if (self == parent)
    8. {
    9. self.window.location='index.php';
    10. }
    11. -->
    12. <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0">
    13.  
    14. <a href="#" onclick="javascript: window.open('win_setup.php','user_set','width=350, height=200, resizable=no, scrollbars=no, status=no, toolbar=no, menubar=no'); void(0); return false;">Настройки</a>
    15. <a href="#" onClick="window.parent.main.location.reload(); return false;">Обновить</a>
    16. <a href="#" onclick="javascript: window.open('win_help.php','Help','width=500, height=300, resizable=no, scrollbars=no, status=no, toolbar=no, menubar=no'); void(0); return false;">Помощь</a>
    17. <a href="#" onclick="javascript: window.open('win_rulez.php','Rulez','width=500, height=300, resizable=no, scrollbars=no, status=no, toolbar=no, menubar=no'); void(0); return false;">Правила</a>
    18. <a href="#" onclick=window.location.href="index.php?act=exit">Выход</a>
    19. </body>

    HTML:
    1.  
    2. <!-- win_mess_form.tpl -->
    3. <link rel=stylesheet href="template/style.css" type="text/css">
    4. <body class="font_all">
    5. <script language="javascript">
    6. <!--
    7. if (self == parent)
    8. {
    9. self.window.location='index.php';
    10. }
    11. // -->
    12. {error}
    13. [if_no_error]
    14. <form method="POST" action="" name="post" onsubmit="document.forms[0].submit.disabled=true">
    15. <div align="left">
    16. <table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>
    17.     <td><div align="center">
    18. <table border="0" width="100%" cellspacing="0" cellpadding="0"><tr><td colspan="2"><p align="center">
    19. <textarea rows="2" name="message" id="message" cols="35" id="message" onKeyPress = "if (event.keyCode==10 || (event.ctrlKey && event.keyCode==13)) {document.post.submit.click();}">
    20. </textarea></td></tr><tr><td align="center">
    21. <select size="1" name="status">
    22. <option selected value="">Интонация</option>
    23. <option value="Отлично">Отлично</option>
    24. </td><td align="center">Лично:<input type="text" name="privat" size="20"></td></tr>
    25. </table></div></td><td><p align="center">
    26. <input type="submit" value="Сказать [Crtl+Enter]" name="submit0" onClick="this.value='Отправка...';"><br>
    27. <input type="reset" value="Очистить" name="reset0"></td><td width="100%">
    28.         <table border="0" width="100%">
    29.             <tr>
    30.                 <td align="center" width="3%"><img border="0" src="images/smile/aa.gif"></td>
    31.                 <td align="center" width="3%">&nbsp;</td>
    32.                 <td align="center" width="3%">&nbsp;</td>
    33.                 <td align="center" width="3%">&nbsp;</td>
    34.                 <td align="center" width="3%">&nbsp;</td>
    35.                 <td align="center" width="3%">&nbsp;</td>
    36.                 <td align="center" width="3%">&nbsp;</td>
    37.                 <td align="center" width="3%">&nbsp;</td>
    38.                 <td align="center" width="3%">&nbsp;</td>
    39.                 <td align="center" width="3%">&nbsp;</td>
    40.             </tr>
    41.             <tr>
    42.                 <td align="center" width="3%">&nbsp;</td>
    43.                 <td align="center" width="3%">&nbsp;</td>
    44.                 <td align="center" width="3%">&nbsp;</td>
    45.                 <td align="center" width="3%">&nbsp;</td>
    46.                 <td align="center" width="3%">&nbsp;</td>
    47.                 <td align="center" width="3%">&nbsp;</td>
    48.                 <td align="center" width="3%">&nbsp;</td>
    49.                 <td align="center" width="3%">&nbsp;</td>
    50.                 <td align="center" width="3%">&nbsp;</td>
    51.                 <td align="center" width="3%">&nbsp;</td>
    52.             </tr>
    53.             </table>
    54.         </td></tr>
    55. </table></div>
    56. </form>
    57. [/if_no_error]
    58. </body>
    Почему-то слетел ctrl+enter

    HTML:
    1.  
    2. <!-- win_privat.tpl -->
    3. <script language="javascript">
    4. <!--
    5. if (self == parent)
    6. {
    7. self.window.location='index.php';
    8. }
    9. -->
    10. <link rel=stylesheet href="template/style.css" type="text/css">
    11. <body class="font_txt">
    12. {error}
    13. [if_no_error]
    14. <a target"messages" href="#" onClick="parent.frames['messages'].document.getElementById('message').value = parent.frames['messages'].document.getElementById('message').value + ' см. ' + this.innerHTML + ' ';">[{time}]</a> &gt;
    15. <a target"messages" href="#" onClick="parent.frames['messages'].document.getElementById('privat').value = this.innerHTML; return false;">{who}</a> ->
    16. <a target"messages" href="#" onClick="parent.frames['messages'].document.getElementById('privat').value = this.innerHTML; return false;">{privat}</a>: {what}<br>
    17. [/if_no_error]
    18. </body>
    HTML:
    1.  
    2. <!-- win_user.tpl -->
    3. <link rel=stylesheet href="template/style.css" type="text/css">
    4. <script language="javascript">
    5. <!--
    6. if (self == parent)
    7. {
    8. self.window.location='index.php';
    9. }
    10. -->
    11. <body class="font_all">
    12. {sex} {user} "{karma}"-"{error}"<br>
    13. </body>
    14.  

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

    Заранее спасибо!

    PS весь код находится в актуальном состоянии... т.е. ровно то, что на сервере... тестить можно тут... http://vowik.ru/chat (test:test)
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    SQL-инъекция.
    Еще одна? о_0
    Потенциальная sql-инъекция. Может я пропустил где регистрационные данные обрабатываются, но а что если имя пользователя будет 0'; DELETE FROM `table' WHERE `id`<0 ?
     
  3. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Поправил, но Вот с нулём не понял как исправить... и потом... данные чтения сообщений из базы нельзя перехватить :)
     
  4. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Зато можно закрыть запрос чтения и начать другой :) Я про то, что логин (имя пользователя) тоже может быть куском sql-запроса.
     
  5. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Я добавил майсикьюлескейп...
     
  6. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    это прикол такой? :)

    Насколько я знаю - это должны быть полноценные страницы
     
  7. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    shurastik, нет, это что бы можно было интегрировать чат в любоую существующую CMS
     
  8. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    это понятно :) само название таблицы улыбнуло.

    я сам щас такой везде-интегрируемый форум пишу. у него даже авторизации своей нет.
     
  9. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    не отклоняясь от темы... что-нить мне скажи, по существу :)
    Это стандартное имя таблицы :)
     
  10. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Именно так.
     
  11. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Долой фреймы! Даёшь AJAX! :)
     
  12. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    Ну во-первых в каждом файле повторяется код:

    PHP:
    1. <?
    2. // Инициализируем сессию
    3. // Подключение дополнительных файлов
    4. include_once ('config.php');
    5. include_once ('includes/functions.php');
    6. // Соеденяемся с БД
    7. db_connect($db_server, $db_user, $db_passwd, $db_table);
    8. mysql_query('SET NAMES CP1251');
    9. ?>
    я бы его вынес куда-нибудь...

    в некоторых выборках с базы забыл имена таблиц на переменные из конфига заменить.

    это так, без глубокого анализа :) но особых ляпов не видно


    +1
     
  13. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    В config.php например :)
     
  14. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    ничего не будет
     
  15. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Sergey89
    А если
    ?
     
  16. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    mysql_query может выполнить только 1 запрос. И этот запрос SELECT, в данном случае.
     
  17. dAllonE

    dAllonE Guest

    Sergey89, ну можно попытаться выцепить через UNION какие-нибудь бонусные данные...
     
  18. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Я говорил конкретно про DELETE. То что тут SQL инъекция и надо исправлять и ежу понятно.
     
  19. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Если поможешь сделать такую штуку, буду очень благодарен :)
    Ковычки экранируются! вроде бы )))))
     
  20. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Nemo, я в JS не бельмеса, так что ничем не помогу. :)
     
  21. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    ТОгда зачем говорить?:)
     
  22. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    У меня книжка была по PHP + AJAX там была реализация.
     
  23. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Там в принципе ничего сложного:
    Есть какая-то переменная last_id, которая хранит id последнего загруженного сообщения, каждую секунду скрипт берем сообщения у которых id > last_id. Кот-то вот так.
     
  24. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Ты мне реализацию покажи... как загрузить последнии 30 сообщений...
     
  25. shurastik

    shurastik Активный пользователь

    С нами с:
    22 фев 2008
    Сообщения:
    285
    Симпатии:
    0
    Адрес:
    Латвия
    у меня есть пример, за полчаса написанный, могу скинуть :)