Показать сообщение отдельно

  #2  
Старый 26.12.2008, 16:08
Ru}{eeZ
Постоянный
Регистрация: 19.02.2008
Сообщений: 438
Провел на форуме:
956872

Репутация: 186
Отправить сообщение для Ru}{eeZ с помощью ICQ
По умолчанию

Гостевая книга
http://develop.clubweb.ru/guestbook/guestbook_index.php

guestbook_index.php:
PHP код:
<!--Таблица cтилей-->
<link rel = "stylesheet" type = "text/css" href = "style.css" />
<?php
//Максимальное количество новостей на страницу
$maxNews 5;
include(
'guestbook_config.php');
session_start();

//Если отправлены данные из формы...
if(isset($_POST['nameUser']) && isset($_POST['mailUser']) && isset($_POST['bodyUser']) && isset($_POST['captcaUser'])) {

  
//Проверка отправленных данных
  
foreach($badNames as $badName) {
    
$testNameUser preg_match('/^[^ ^($badName)].{1,12}$/'$_POST['nameUser']);
    if(
$testNameUser === TRUE$filNameUser $_POST['nameUser'];
  }
  
$filMailUser preg_match('/^[a-z0-9\-_\.]{1,15}@[a-z0-9\-_\.]{1,15}$/i'$_POST['mailUser']);
  
$filBodyUser preg_match('/^.{1,5000}$/'$_POST['bodyUser']);

  
//Если принятые из формы данные прошли проверку, то записываем их в базу...
  
if($filNameUser == TRUE && $filMailUser == TRUE && $filBodyUser == TRUE && $_SESSION['captcha'] == $_POST['captcaUser'/* && $badNames */) {

    
//Чтение базы и сортировка её данных по массивам через цикл
    
$fileBase file('base.txt');
    foreach(
$fileBase as $fileBase2) {
      list(
$id[], $name[], $mail[], $body[]) = split('\|&\|'$fileBase2);
    }

    
//К последней записи id добавляем 1 для записи нового id
    
$id array_pop($id);
    
$id++;

    
//$bodyUser = $_POST['bodyUser'];
    //$bodyUser = str_replace("\r\n", '<br />', $bodyUser);
    
$_POST['bodyUser'] = wordwrap(str_replace("\r\n"'<br>'htmlspecialchars($_POST['bodyUser'])), 60'<br>'1);
    
$_POST['bodyUser'] = preg_replace('#(https?://[^ ]+)#i','<a href="\\1">\\1</a>',$_POST['bodyUser']); 

    
//Отерытие файла на добавление записи
    
$fp fopen('base.txt''a');

    
//Запись данных в файл
    //fputs($fp, $id.'|&|'.htmlspecialchars($_POST['nameUser']).'|&|'.htmlspecialchars($_POST['mailUser']).'|&|'.htmlspecialchars($bodyUser)."\r\n");
    
fputs($fp$id.'|&|'.htmlspecialchars($_POST['nameUser']).'|&|'.htmlspecialchars($_POST['mailUser']).'|&|'.$_POST['bodyUser']."\r\n");
    
fclose($fp);
    
$_SESSION['captcha'] = '';
    echo <<<HERE
<table width = "500px" border = "0" align = "center" id = "mainTable">
<tr>
  <td>
    <center>Комментарий успешно добавлен</center>
  </td>
</table>
HERE;

  
//Если данные не верны...
  
} else {
    echo <<<HERE
<table width = "500px" border = "0" align = "center" id = "mainTable2">
<tr>
  <td>
    <center>Не верные данные</center>
  </td>
</tr>
HERE;
    echo 
'';
    if(
$filNameUser == FALSE) echo '<tr><td><span id = "mainTable2_2">- Не верное имя.</span><br />
<span id = "mainTable2_21">Имя может содержать только буквы русского и английского алфавита.</span></td></tr>'
;
    if(
$filMailUser == FALSE) echo '<tr><td><span id = "mainTable2_2">- Не верный e-mail адрес.</span><br />
<span id = "mainTable2_21">E-mail адрес может содержать только буквы английского алфавита, цифры и символы "-_.@".</span></td></tr>'
;
    if(
$filBodyUser == FALSE) echo '<tr><td><span id = "mainTable2_2">- Не верный текст комментария.</span><br />
<span id = "mainTable2_21">Текст должен быть не длиннее 5 тысяч символов.</span></td></tr>'
;
    if(
$_SESSION['captcha'] !== $_POST['captcaUser']) echo '<tr><td><span id = "mainTable2_2">- Не верно введён текст с проверочного изображения.</span><br />
<span id = "mainTable2_21">Если Вам не понятен текст, изображённый на проверочном изображении, просто обновите страницу.</span></td></tr>'
;
    echo 
'</table>';
  }
} else {

  
//Чтение базы и сортировка её данных по массивам через цикл
  
$fileBase file('base.txt');
  foreach(
$fileBase as $fileBase2) {
    list(
$id[], $name[], $mail[], $body[]) = split('\|&\|'$fileBase2);
  }
  echo <<<HERE
<table width = "100%" height = "100%" border = "0" cellspacing = "0"><tr><td valign = "top">
<table width = "500px" border = "0" align = "center" id = "mainTable">
HERE;

  
//Если в данных сессии содержатся верные логин администратора и пароль
  
if(isset($_SESSION['loginName']) && isset($_SESSION['loginPass'])) {
    if(
$_SESSION['loginName'] == $admin['name'] && $_SESSION['loginPass'] == $admin['pass']) {
    echo <<<HERE
<tr>
  <td valign = "top" height = "1px" id = "tdNew">
  <span id = "adminLink"><a href = "guestbook_admin.php">Адмынко</a></span>
  </td>
</tr>
HERE;
    }
  }

  
//Если передан номер страницы ($_GET['page'])...
  
if(empty($_GET['page'])) $_GET['page'] = 1;
  if(isset(
$_GET['page']) && is_array($_GET['page']) === FALSE) {
    
//$huy = $maxNews * $_GET['page'];

    //Проверка каждой новости на существование и вывод существующих на экран

    //Если в guestbook_config.php, в переменной $commentsOrder выбрано значение "1" (От меньшего к большему)...
    
if($commentsOrder === 1) {
      for(
$i $maxNews $_GET['page'] - $maxNews$i $maxNews $_GET['page']; $i++) {
        
//$countId = count($id) - 1; for($i = $countId - $maxNews * $_GET['page'] + $maxNews; $i > $countId - $maxNews * $_GET['page']; $i--) {
        
if(isset($id[$i]) && isset($name[$i]) && isset($mail[$i]) && isset($body[$i])) {
          echo <<<HERE
<tr>
  <td valign = "top" height = "1px" id = "tdNew">
    <span id = "titleComment"><b>
$id[$i]</b>, От: <a href = "mailto:$mail[$i]?subject=GuestBookClubWeb">$name[$i]</a><br /></span>
    
$body[$i]
  </td>
</tr>
HERE;
        }
      }
    }
    
//Если в guestbook_config.php, в переменной $commentsOrder выбрано значение "2" (От большего к меньшему)...
    
if($commentsOrder === 2) {
      
$countId count($id) - 1;
      for(
$i $countId $maxNews $_GET['page'] + $maxNews$i $countId $maxNews $_GET['page']; $i--) {
        if(isset(
$id[$i]) && isset($name[$i]) && isset($mail[$i]) && isset($body[$i])) {
          echo <<<HERE
<tr>
  <td valign = "top" height = "1px" id = "tdNew">
    <span id = "titleComment"><b>
$id[$i]</b>, От: <a href = "mailto:$mail[$i]?subject=GuestBookClubWeb">$name[$i]</a><br /></span>
    
$body[$i]
  </td>
</tr>
HERE;
        }
      }
    }
  }

  
//Вывести список (количество по отношению к новостям) страниц
  
echo <<<HERE
<tr>
  <td valign = "top" id = "pageString" height = "1px">
  <center>
HERE;
  for(
$i 1$i <= ceil(count($name)/$maxNews); $i++) {
    if(
$_GET['page'] == $i) echo '<font color = "gray">'."$i".'</font> ';
    else echo 
"<a href = \"?page=$i\">$i </a>";
  }

  
//Поле для добавления комментария
  
echo <<<HERE
    </center>
  </td>
</tr>
<tr>
  <td height = "1px">

    <table width = "100%" border = "0">
    <form method = "POST">
    <tr>
      <td width = "1px" id = "secondTable">
        Ваше&nbsp;Имя:
      </td>
      <td width = "100%">
        <input type = "text" name = "nameUser" style = "width: 100%;">
      </td>
    </tr>
    <tr>
      <td id = "secondTable">
        Ваш&nbsp;Mail:
      </td>
      <td>
        <input type = "text" name = "mailUser" style = "width: 100%;">
      </td>
    </tr>
    <tr>
      <td colspan = "2">
        <textarea style = "width: 100%; height: 100px;" name = "bodyUser"></textarea>
      </td>
    </tr>
    <tr>
      <td colspan = "2">
        <img src = "img.php"><input type = "text" name = "captcaUser">
      </td>
    </tr>
    <tr>
      <td colspan = "2" align = "right" height = "1px">
        <input type = "submit" value = "Отправить">
      </td>
    </tr>
    </form>
    </table>

  </td>
</tr>
</table>
</td></tr><tr><td height = "1px" valign = "top" align = "right">
<span id = "cop"><a href = "http://develop.clubweb.ru">GuestBookClubWeb 1.1</a></span>
</td></tr></table>
HERE;
//var_dump($_SESSION['captcha']);
}
?>
guestbook_admin.php:
PHP код:
<?php
include('guestbook_config.php');
$maxStrings 15;
session_start();

if(isset(
$_POST['loginName']) && isset($_POST['loginPass'])) {
  
$_SESSION['loginName'] = $_POST['loginName'];
  
$_SESSION['loginPass'] = $_POST['loginPass'];
}

if(isset(
$_POST['exit'])) {unset($_SESSION); session_destroy();}

if(isset(
$_SESSION['loginName']) && isset($_SESSION['loginPass'])) {
  if(
$_SESSION['loginName'] == $admin['name'] && $_SESSION['loginPass'] == $admin['pass']) {
    echo <<<HERE
<form method = "POST">
  <input type = "submit" name = "exit" value = "Выход">&nbsp;<a href = "guestbook_index.php">Гостевая книга</a>
</form>
<a href = "guestbook_admin.php?list">Список новостей</a>&nbsp;-
<a href = "guestbook_admin.php?settings">Настройки системы</a>
<hr>
HERE;
    if(isset(
$_GET['list']))  {
      echo <<<HERE
<table width = "100%" border = "1">
<tr>
  <td align = "center" width = "1px">
<b>ИД</b>
  </td>
  <td align = "center" width = "1px">
<b>Имя</b>
  </td>
  <td align = "center" width = "1px">
<b>E-mail</b>
  </td>
  <td align = "center">
<b>Текст</b>
  </td>
  <td align = "center" width = "1px">
<b>Дата</b>
  </td>
  <td align = "center" width = "1px">
<b>Действия</b>
  </td>
</tr>
HERE;
      
$fileBase file('base.txt');
      foreach(
$fileBase as $fileBase2) {
        list(
$id[], $name[], $mail[], $body[]) = split('\|&\|'$fileBase2);
      }
      
$huy $maxStrings $_GET['page'];
      for(
$i $huy $maxStrings$i $huy$i++) {
        if(isset(
$id[$i]) && isset($name[$i]) && isset($mail[$i]) && isset($body[$i])) {
          echo <<<HERE
<tr>
  <td>
$id[$i]
  </td>
  <td>
$name[$i]
  </td>
  <td>
$mail[$i]
  </td>
  <td>
$body[$i]
  </td>
  <td>
дата
  </td>
  <td>
<a href = "?edit=
$i">Редактировать</a>&nbsp;-&nbsp;<a href = "?delete=$i">Удалить</a>
  </td>
</tr>
HERE;
      }}
      echo 
'<tr><td colspan = "6" align = "center">';
      for(
$i 1$i <= ceil(count($name)/$maxStrings); $i++) {
        if(!isset(
$_GET['page'])) $_GET['page'] = 1;
        if(
$_GET['page'] == $i) echo '<font color = "gray">['."$i".']</font> ';
        else echo 
"<a href = \"?list&page=$i\">[$i] </a>";
      }
      echo 
'</td></tr></table>';
    }
  } else echo 
'Все бомжи';
} else {
  echo <<<HERE
<table height = "100%" width = "100%" border = "0">
<tr>
  <td align = "center">
  <form method = "POST">
    <input type = "text" name = "loginName"><br>
    <input type = "password" name = "loginPass"><br>
    <input type = "submit" value = "Вход">
  </form>
  </td>
</tr>
</table>
HERE;
}

if(isset(
$_GET['settings'])) {
  if(isset(
$_POST['order'])) {
    
$fgcConf file_get_contents('guestbook_config.php');
    
$fpConf fopen('guestbook_config.php''w');
    
$fgcConf preg_replace('|\$commentsOrder = [1,2];|''$commentsOrder = '."{$_POST['order']}".';'$fgcConf);
    
fputs($fpConf$fgcConf);
    
fclose($fpConf);
    echo 
'Настройки успешно изменены';
  } else {
  echo <<<HERE
<table border = "1" width = "100%">
<form method = "POST">
<tr>
  <td>
    Показ&nbsp;новостей:
  </td>
  <td width = "100%">
    <input type = "radio" name = "order" value = "1">От меньшего к большему
    <input type = "radio" name = "order" value = "2">От большего к меньшему
  </td>
</tr>
<tr>
  <td colspan = "2" align = "right">
    <input type = "submit" value = "Сконфигурировать">
  </td>
</tr>
</form>
</table>
HERE;
  }
}

?>
guestbook_config.php:
PHP код:
<?php
$admin
['name'] = 'login';
$admin['pass'] = 'pass';
$commentsOrder 2;
$badNames = array(
'Admin',
'Administrator',
'Админ',
'Администратор',
'Аdmin',
'Аdministrator',
'Аdministrаtor',
'Аdministratоr'
);
?>
img.php:
PHP код:
<?php
session_start
();
$image imageCreate(10030);
imageColorAllocate($image255255255);
for(
$i 0$i 10$i++) $color[] = imageColorAllocate($imagemt_rand(0,240), mt_rand(0,240), mt_rand(0,240));
$abc = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','1','2','3','4','5','6','7','8','9');
$rand = array();
$fullRand '';
for(
$i 0$i 6$i++) $rand[] = $abc[mt_rand(0,22)];
foreach(
$rand as $randOne$fullRand .= $randOne;
$_SESSION['captcha'] = $fullRand;
for(
$i 0$i 6$i++) imageTtfText($image,mt_rand(12,15),mt_rand(-20,20),15 $i mt_rand(4,8),mt_rand(20,25),$color[$i],'arial.ttf',$rand[$i]);
for(
$i 0$i 3$i++) imageArc($imagemt_rand(0,90), mt_rand(0,20), mt_rand(10,60), mt_rand(10,60), mt_rand(-380,0), mt_rand(0,380), $color[$i]); 
header('Content-type: image/png');
imagePng($image);
?>
style.css:
Код HTML:
body {
  font-family: tahoma;
  margin: 0px;
}

#mainTable {
  background-color: #dbeaff;
}

#mainTable2 {
  background-color: #dbeaff;
  color: red;
}

#mainTable2_2 {
  background-color: #dbeaff;
  font-size: 12px;
  color: #c50000;
}

#mainTable2_21 {
  background-color: #dbeaff;
  font-size: 10px;
  color: #797979;
}

#secondTable {
  background-color: #f6faff;
  font-size: 14px;
  color: #426ba4;
}

#tdNew {
  border-bottom: 1px solid #f6faff;
  font-size: 14px;
}

#tdNew a:link {
  color: #0074bd;
}

#tdNew a:visited {
  color: #0074bd;
}

#tdNew a:hover {
  color: #24aaff;
}

#pageString a {
  color: #70acff;
  text-decoration: none;
}

#adminLink a {
  color: #70acff;
  text-decoration: none;
}

#cop {
  font-size: 10px;
}

#cop a:link {
  color: #77caff;
}

#cop a:visited {
  color: #77caff;
}

#cop a:hover {
  color: #24aaff;
}

#titleComment {
  color: gray;
}
base.txt (Заполняется скриптом):
Код:
1|&|макииа|&|cevr@erbvrb.ru|&|vwrrbrbrg erhk gerh guiwer gui3rhgui er
2|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
3|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
4|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
5|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
6|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
7|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
8|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
9|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
10|&|btr|&|trtntntn@iehf.com|&|rbetntnt4nt4 t4 n tr4n t4
+ кладём arial.ttf

Писал чисто для самообучения так сказать
Админка недописана, если кто-то хочет - пишите))
 
Ответить с цитированием