Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Guest book

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: простенький скрипт гостеваой книги
T-Mon
Отправлено: 24 Ноября, 2007 - 14:43:47
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Все те тупые вопросы, которые я задавал участникам данного форума заключались в учебной разработке данного кода, обратите внимание, что:
PHP:
скопировать код в буфер обмена
  1. $host="localhost";
  2. $login="root";
  3. $pass="";
  4. $db_name="db_book";
  5. $table="data";

настраивается под свои параметры СУБД и под свой вкус. Некоторые участки кода желательно закомментировать, так как они подразумевают нессанкционированный доступ к базе данных.
Код книги:
PHP:
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. <title>Guestbook</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=cp1251">
  5.  
  6. </head>
  7. <body>
  8. <form method="post" accept-charset="cp1251">
  9. Your name:<br>
  10. <input type="text" size=40 name="name">
  11. <br>
  12. Your message:<br>
  13. <textarea name="post" rows=10 cols=30></textarea>
  14. <br>
  15. <input type="submit" value="Post a message">
  16. <input type="hidden" name="input" value='1'>
  17. <br>
  18. </form>
  19.  
  20. <?PHP
  21. /*Very simple and without any special design guest book
  22. with only possibility to post messages and names.
  23. It doesn't support any cookies or sessions - that means
  24. that there is no special possibility to moderate it.
  25. There are some moderate options to Delete messages and
  26. to Reset the whole Database, but it is available for
  27. every visitor, so i strictly advise your to comment it!
  28. The best way to moderate guest book is to use phpmyadmin*/
  29.  
  30. // Some otions of MySQL connection
  31. $host="localhost";
  32. $login="root";
  33. $pass="";
  34. $db_name="db_book";
  35. $table="data";
  36. //Connecting to MySQL and customizing encoding detection
  37. $data=mysql_connect($host,$login,$pass) or die ("Cannot connect mysql");
  38. mysql_query ("set character_set_client='cp1251'");
  39. mysql_query ("set character_set_results='cp1251'");
  40. mysql_query ("set collation_connection='cp1251_general_ci'");
  41. //Reseting guestbook if special link clicked (Comment it!!!)
  42. $action=isset($_GET['action'])?$_GET['action']:'';
  43. if ($action=="NULL")
  44. {
  45.         $query="DROP DATABASE IF EXISTS `$db_name`;";
  46.         mysql_query($query,$data);
  47. }
  48. //Creating and selecting the database if it doesn't exist
  49. $query="CREATE DATABASE IF NOT EXISTS `$db_name`;";
  50. mysql_query($query,$data);
  51. mysql_select_db($db_name,$data) or die ("Cannot select the database");
  52. //Creating the table if it doesn't exist
  53. $query="CREATE TABLE IF NOT EXISTS `$table` (
  54. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  55. `name` VARCHAR( 20 ) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL ,
  56. `post` VARCHAR( 500 ) CHARACTER SET cp1251 COLLATE cp1251_bin NOT NULL
  57. );";
  58. mysql_query($query,$data);
  59. //Deleting message which is chosen (doesn't decrease id in mysql)
  60. $id=isset($_GET['id'])?$_GET['id']:'';
  61. if ($id)
  62. {
  63.         $query="DELETE FROM `$table` WHERE `id`=$id";
  64.         mysql_query($query,$data);
  65. }
  66. //Reading the form and checking for a correct post
  67. $name=isset($_POST['name'])?$_POST['name']:'';
  68. $post=isset($_POST['post'])?$_POST['post']:'';
  69. $test=1;
  70. if (isset($_POST['input']))
  71. {
  72. if (strlen($name)<1)
  73. {
  74.         echo ("You haven't specified your name!<br><br>");
  75.         $test=0;
  76. }
  77. elseif ((strlen($name)>20)&&($test))
  78. {
  79.         echo ("Your name is too long!<br><br>");
  80.         $test=0;
  81. }
  82. elseif ((strlen($post)<1)&&($test))
  83. {
  84.         echo ("You haven't written the message!<br><br>");
  85.         $test=0;
  86. }
  87. elseif ((strlen($post)>500)&&($test))
  88. {
  89.         echo ("Your message is too long!<br><br>");
  90.         $test=0;
  91. }
  92. elseif ($test)
  93. {
  94. //Inserting data inside the table if post is a correct one
  95. $query="INSERT INTO `$table` (name, post) VALUES ('$name','$post')";
  96. mysql_query($query,$data);
  97. }
  98. }
  99. //Reading and showing all storaged posts
  100. $query="SELECT id,name,post FROM `$table` ORDER BY id DESC";
  101. $result=mysql_query($query,$data);
  102. $counter=0;
  103. while ($name=mysql_fetch_assoc($result))
  104. {
  105.         $counter++;  //Counting number of posts
  106.         $current="id";
  107. foreach ($name as $index => $value)
  108. {
  109.         if ($index=="id") //Showing post id
  110.         {
  111.                 echo "<b>Post ID: $value ";
  112.                 $id=$value;
  113.         }
  114.         elseif ($index=="name") //Showing post author
  115.         {
  116.                 echo "Post author: $value</b>";
  117.                 echo " <a href='./index.php?id=$id'>[Delete post]</a><br>"; //And showing 'Delete' link (Better to comment it!)
  118.         }
  119.         else
  120.         {
  121.                 //Parsing some bb codes into html
  122.                 $value=str_replace('[b]','<b>',$value);
  123.         $value=str_replace('[B]','<b>',$value);
  124.         $value=str_replace('[/b]','</b>',$value);
  125.         $value=str_replace('[/B]','</b>',$value);
  126.         $value=str_replace('[i]','<i>',$value);
  127.         $value=str_replace('[I]','<i>',$value);
  128.         $value=str_replace('[/i]','</i>',$value);
  129.         $value=str_replace('[/I]','</i>',$value);
  130.         $value=str_replace('[u]','<u>',$value);
  131.         $value=str_replace('[U]','<u>',$value);
  132.         $value=str_replace('[/u]','</u>',$value);
  133.         $value=str_replace('[/U]','</u>',$value);
  134.         //Showing our message
  135.                 echo "$value<br><hr>";
  136.         }
  137. }
  138. }
  139. //Showing number of posts
  140. if (!$counter) {
  141.         echo "<i>The guestbook is empty!</i>";
  142.         }
  143.         else
  144.         {
  145.                 echo "The total number of posts: <b>$counter</b>";
  146.         }
  147. //'Reset guestbook' link (Drops database and resets id count) Better to comment it until it's needed!!!
  148. echo "<br><br><a href='./index.php?action=NULL'><b><i>Reset guestbook (Carefully! Drops database!)</b></i></a>";
  149.  
  150. ?>
  151. </body>
  152. </html>
 
 Top
Snic
Отправлено: 24 Ноября, 2007 - 15:21:57
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




очень интересно как раз я собирался гостевую делать
доработать чуток и good
думаю твой код использовать в своей CMS можно?\n\n(Добавление)
Первое что надо доработать это NULL
при null'e он бахает все базу а не обнуляет свою таблицу это очень неудобно Как думаешь?


-----
Лень - двигатель прогресса, имхо Улыбка
Работаю над проектами в сфере информационного сайтостроения.
 
 Top
T-Mon
Отправлено: 24 Ноября, 2007 - 15:28:55
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Только нужно будет админские права настроить... ну и еще более жестко проверять на наличие html в коде, а то будут проблемы вывода. А так, юзай.\n\n(Добавление)
Мля, это я провтыкал... там table должно быть, а не дб)))\n\n(Добавление)
Как при нажатии кнопки Submit менять УРЛ, чтоб $_GET не получало команду обнуляться таблицу, после предыдущего обнуления во время печатания нового сообщения. То есть после обнуление базы, если писать сообщения, предыдущее будет удаляться, а новое с параметром id=1 будет внесено в базу.
 
 Top
Snic
Отправлено: 24 Ноября, 2007 - 16:26:02
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Окт. 2007  


Помог: 0 раз(а)




Вот чуток поправил для тебя твою GB смотри дальше твори выдумывай пробуй.
Файл прикрепляю.
Скачать файл: gb_edit_by_snic.rar
Скачан раз: 381


-----
Лень - двигатель прогресса, имхо Улыбка
Работаю над проектами в сфере информационного сайтостроения.
 
 Top
valenok Модератор
Отправлено: 24 Ноября, 2007 - 17:02:47
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




GNU ?


-----
Truly yours, Sasha.
 
My status
 Top
Infuzzer
Отправлено: 24 Ноября, 2007 - 17:54:29
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Нояб. 2007  
Откуда: Израиль, Ашкелон


Помог: 0 раз(а)




GPL
 
 Top
valenok Модератор
Отправлено: 24 Ноября, 2007 - 17:58:11
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




тоже самое


-----
Truly yours, Sasha.
 
My status
 Top
Infuzzer
Отправлено: 24 Ноября, 2007 - 19:21:36
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Нояб. 2007  
Откуда: Израиль, Ашкелон


Помог: 0 раз(а)




Не тоже самое.
 
 Top
valenok Модератор
Отправлено: 24 Ноября, 2007 - 20:39:50
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:

GNU General Public License (Универсальная общедоступная лицензия GNU или Открытое лицензионное соглашение GNU) — возможно, наиболее популярная лицензия на свободное программное обеспечение, созданная в рамках проекта GNU в 1988 г. Её также сокращённо называют GNU GPL или даже просто GPL, если из контекста понятно, что речь идёт именно о данной лицензии (существует довольно много других лицензий, содержащих слова «general public license» в названии). Вторая версия этой лицензии была выпущена в 1991 году, третья версия, после многолетней работы и длительной дискуссии — в 2007 году. GNU Lesser General Public License (LGPL) — это модифицированная версия GPL, предназначенная для некоторых библиотек ПО.

Цель GNU GPL — предоставить пользователю права копировать, модифицировать и распространять (в том числе на коммерческой основе) программы (что по умолчанию запрещено законом об авторских правах), а также гарантировать, что и пользователи всех производных программ получат вышеперечисленные права. Принцип «наследования» прав называется «копилефт» (транслитерация английского «copyleft») и был придуман Ричардом Столлмэном. По контрасту с GPL, лицензии собственнического ПО очень редко дают пользователю такие права и обычно, наоборот, стремятся их ограничить, например, запрещая восстановление исходного кода.


http://ru[dot]wikipedia[dot]org/wiki/GNU[dot][dot][dot]l_Public_License

Да я знаю что не юникс


-----
Truly yours, Sasha.
 
My status
 Top
T-Mon
Отправлено: 24 Ноября, 2007 - 21:47:13
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Да делайте с кодом, что хотите, мне как-то все равно, будет правда приятно если копирайте поставите... правда кому это надо?
P.S. А книшу я еще сам модифицирую.\n\n(Добавление)
В планах:
1. Инсталлятор программы
2. Придания элементарного дизайна
3. Создание и редактирование прав модераторов в спецпанели.
4. Редактирование\удаление сообщений в спецпанели.
5. Базовые настройки программы в спецпанели.
6. Логи действий модераторов.
7. Корректное отображение сообщений вне зависимости от длины слов\запрет на введение слов длиннее позволенного.
8. Запрет на использование html в имени\сообщение.
9. Расширенное количество bb-кодов.
10. Разделение всего блока сообщений на страницы.
11. Поддержка нескольких языков и оформлений.\n\n(Добавление)
12. Мат-фильтр.
 
 Top
valenok Модератор
Отправлено: 24 Ноября, 2007 - 23:21:23
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




3,12,4,6,7(ч2),8
вычеркните и не имейте себе мозг


-----
Truly yours, Sasha.
 
My status
 Top
T-Mon
Отправлено: 24 Ноября, 2007 - 23:31:10
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Нояб. 2007  


Помог: 0 раз(а)




Хмм, для этого я и делаю это, чтоб немного поиметь себе мозг и чему-небудь научиться.
 
 Top
Infuzzer
Отправлено: 25 Ноября, 2007 - 00:44:42
Post Id


Гость


Покинул форум
Сообщений всего: 80
Дата рег-ции: Нояб. 2007  
Откуда: Израиль, Ашкелон


Помог: 0 раз(а)




valenok
Вот видишь Улыбка
GNU General Public License (GPL)
XD
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« FreeLance »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB