Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: скрипт блог
 
 автор: lightning.say   (01.07.2011 в 16:27)   письмо автору
 
 

Доброго всем времени суток!
Не подскажете скрипт блога с использоанием MySQL?
Спасибо!

  Ответить  
 
 автор: cheops   (02.07.2011 в 00:19)   письмо автору
 
   для: lightning.say   (01.07.2011 в 16:27)
 

А сами его создать не хотите? Вроде не очень сложное приложение? Если что-то вызывает затруднение мы бы могли помочь.

  Ответить  
 
 автор: Emm   (02.07.2011 в 02:03)   письмо автору
 
   для: cheops   (02.07.2011 в 00:19)
 

=)

  Ответить  
 
 автор: lightning.say   (02.07.2011 в 06:31)   письмо автору
 
   для: cheops   (02.07.2011 в 00:19)
 

Ок! Переделываю гостевую книгу в блог.

index.php

<?

  $title
="Блог";
  include 
"../admin/config.php";  
  include 
"../util/top1.php";    
?>  
<h1 class=artnamepage>Блог</h1>

<?
  
// Осуществляем соединение с базой данных
  // Извлекаем из строки запроса параметр start
  
if(isset($_GET['start'])) $start $_GET['start'];
  else 
$start "";
  
// Стартовая точка
  
if (empty($start)) $start 0;
  
// Стартовая точка не может быть меньше нуля
  
if ($start 0$start 0;
  
// Запрашиваем общее число отображаемых сообщений
  
$query "SELECT count(*) FROM blog
            WHERE hide = 'show'"
;
  
$tot mysql_query($query);
  
// Запрашиваем сами сообщения
  
$query "SELECT * FROM blog
            WHERE hide = 'show' 
            ORDER BY puttime DESC
            LIMIT 
$start$pnumber";
  
$thm mysql_query($query);
  if(!
$tot || !$thmputerror("Ошибка при выборке сообщений...");
  
// Общее число отображаемых сообщений
  
$countmysql_result($tot,0);
  
// Выводим ссылки на предыдущие и следующие сообщения
  
if ($start 0)  print "<a href=index.php?start=".($start-$pnumber).">Предыдущие</A>";
  if (
$count $start $pnumber)  print " <a href=index.php?start=".($start $pnumber).">Следующие</A>";
  while(
$themes mysql_fetch_array($thm))
  {
    
// Извлекаем переменные из базы данных
    
$theme trim($themes['theme']);
    
$msg trim($themes['msg']);
?>
<table border="0" cellpadding="0" cellspacing="0" width=80%>
    <tr bgcolor="#DEDEDE">
      <td height="20"><p>&nbsp;&nbsp;<b><? echo $theme?></b>&nbsp;
      <td align="right"><p class=help>от: <? print $themes['puttime']; ?></td>
    </tr>
    <tr>
        <td><p><? echo $msg?><br>
        </td>
    </tr>
</table><br>       
<?
  
}
  
// Выводим ссылки на предыдущие и следующие сообщения
  
if ($start 0)  print "<a href=index.php?start=".($start-$pnumber).">Предыдущие</a>";
  if (
$count $start $pnumber)  print " <a  href=index.php?start=".($start $pnumber).">Следующие</a>";

include 
"../util/bottom1.php";    
?>


addrec.php

<?

// Устанавливаем соединение с базой данных
include "../admin/config.php";
$error "";
$action "";
// Возвращаем значение переменной action, переданной в урле
$action $_POST["action"];
// Если оно не пусто - добавляем сообщение в базу данных
if (!empty($action)) 
{
  
// Проверяем сообщение на слишком длинные слова
  
$lenmsg strlen($msg);
  
$templen 0;
  
$temp strtok($msg" ");
  if (
strlen($msg)>60)
  {
    while (
$templen $lenmsg)
    { 
      if (
strlen($temp)>60)
      {
        
$action ""
        
$error $error."<LI>Текст сообщения содержит слишком много символов без пробелов\n";
        break;
      }
      else
      {
        
$templen $templen strlen($temp) + 1;
      }
      
$temp strtok(" ");            
    }       
  }
  
  
// Проверяем правильность ввода информации в поля формы
  
$_POST["msg"] = trim($_POST["msg"]);
  if (empty(
$_POST["msg"])) 
  {
    
$action ""
    
$error $error."<LI>Вы не ввели сообщение\n";
  }

  
$_POST["theme"] = trim($_POST["theme"]);
  if (empty(
$_POST["theme"])) 
  {
    
$action ""
    
$error $error."<LI>Вы не ввели Тему\n";
  } 


  
// Обрабатываем HTML-тэги и скрипты в сообщении и информации
  // ограничиваем объём сообщения
  
$theme substr($_POST["theme"],0,32);
  
$theme htmlspecialchars(stripslashes($theme));
  
$msg substr($_POST["msg"],0,1024);
  
$msg htmlspecialchars(stripslashes($msg));
  

      
  if (empty(
$error)) 
  {
    
$msg nl2br($msg);
    
// Обрабатываем встроенные тэги
    
$msg str_replace("[u]""<u>"$msg);
    
$msg str_replace("[U]""<u>"$msg);
    
$msg str_replace("""<i>"$msg);
    
$msg str_replace("[I]""<i>"$msg);
    
$msg str_replace("""<B>"$msg);
    
$msg str_replace("[B]""<B>"$msg);
    
$msg str_replace("""<SUB>"$msg);
    
$msg str_replace("[SUB]""<SUB>"$msg);
    
$msg str_replace("""<SUP>"$msg);
    
$msg str_replace("[SUP]""<SUP>"$msg);
    
$msg str_replace("[/u]""</u>"$msg);
    
$msg str_replace("[/U]""</u>"$msg);
    
$msg str_replace("
"
"</i>"$msg);
    
$msg str_replace("[/I]""</i>"$msg);
    
$msg str_replace("
""</B>"$msg);
    
$msg str_replace("[/B]""</B>"$msg);
    
$msg str_replace("""</SUB>"$msg);
    
$msg str_replace("[/sub]""</SUB>"$msg);
    
$msg str_replace("""</SUP>"$msg);
    
$msg str_replace("[/sup]""</SUP>"$msg);
    
$msg eregi_replace("(.*)\\[url\\](.*)\\[/url\\](.*)","\\1<a href=\\2>\\2</a>\\3"$msg);
    
$msg str_replace("\n"" "$msg);
    
$msg str_replace("\r"" "$msg);
    
// Запрос к базе данных на добавление сообщения
    
$query "INSERT INTO blog VALUES (0,
                    '
$theme',
                                       '
$msg',                                       
                                        NOW(),
                                        'show');"
;
    if(
mysql_query($query))
    {
      
// Если в конфигурационном файле 
      // $sendmail = true отправляем уведомление
      
if($sendmail)
      {
        
$thm "blog - a new post";
        
$msg "post: $theme$msg";
        
mail($valmail$thm$msg);
      }
      
// Возвращаемся на главную страницу, если всё прошло удачно
      
print "<HTML><HEAD>\n";
      print 
"<META HTTP-EQUIV='Refresh' CONTENT='0; URL=index.php'>\n";
      print 
"</HEAD></HTML>\n";
      exit();
    }
    else
    {
      
// Выводим сообщение об ошибке в случае неудачи
      
echo "<a href='index.php'>Вернуться</a>";
      echo(
"<P> Ошибка при добавлении сообщения</P>");
      echo(
"<P> $query</P>");
      exit();
    }
  }
}

if (empty(
$action)) 
{
  
$title="Добавить сообщение в блог";   
  include 
"../util/top1.php";   
?>
<h1 class=artnamepage>Блог</h1>
<p><a href="index.php" title="Вернуться в блог">Блог</a></p>
<form action=addrec.php method=post>
<input type=hidden name=action value=post>
<table>
  <tr>
    <td><p><b>Тема</b> *:</td>
    <td><input class=input type=text name=theme value='<? echo $theme?>'></td>
  </tr>  
  <tr>
    <td><p><b>Сообщение</b> *:</td>
    <td><textarea class=input cols=42 rows=5 name=msg><? echo $msg?></textarea></td>
  </tr>
  <tr>
    <td></td>
    <td><input class=button type="submit" value="Добавить"></td>
  </tr>
  </table>      
</form>
<?php
  
// Выводим сообщение об ошибке
  
if (!empty($error)) 
  {
    print 
"<p class=msg><b>Во время добавления записи произошли следующие ошибки:</b></p>";
    print 
"<UL><p>\n";
    print 
$error;
    print 
"</UL>\n";
  }
}
include 
"../util/bottom1.php"
?>

  Ответить  
 
 автор: cheops   (02.07.2011 в 15:26)   письмо автору
 
   для: lightning.say   (02.07.2011 в 06:31)
 

Давайте код, addrec.php сделаем более современным, а содержимое базы данных, не зависящим от оформления
<?php
  
// Устанавливаем соединение с базой данных 
  
include "../admin/config.php"
  
$error[] = array(); 
  
// Если оно не пусто - добавляем сообщение в базу данных 
  
if (!empty($_POST["action"]))  
  { 
    if (!
get_magic_quotes_gpc())
    {
      
$_POST["msg"]   = mysql_escape_string($_POST["msg"]);
      
$_POST["theme"] = mysql_escape_string($_POST["theme"]);
    }

    
// Проверяем правильность ввода информации в поля формы 
    
$_POST["msg"] = trim($_POST["msg"]); 
    if (empty(
$_POST["msg"])) $error[] = "Вы не ввели сообщение\n"
    
$_POST["theme"] = trim($_POST["theme"]); 
    if (empty(
$_POST["theme"])) $error[] = "Вы не ввели Тему\n"

         
    if (empty(
$error))  
    { 
      
// Запрос к базе данных на добавление сообщения 
      
$query "INSERT INTO blog
                VALUES (NULL, 
                        '
$_POST[theme]', 
                        '
$_POST[msg]',                                        
                        NOW(), 
                        'show');"

      if(!
mysql_query($query))
      { 
        
// Выводим сообщение об ошибке в случае неудачи 
        
echo "<a href='index.php'>Вернуться</a>"
        echo(
"<P> Ошибка при добавлении сообщения</P>"); 
        echo(
"<P> $query</P>"); 
        exit(); 
      } 
      
// Если в конфигурационном файле  
      // $sendmail = true отправляем уведомление 
      
if($sendmail
      { 
        
$thm "blog - a new post"
        
$msg "post: $theme$msg"
        
mail($valmail$thm$msg); 
      } 
      @
header("Location: index.php");
      exit();
    } 
  } 

  
$title="Добавить сообщение в блог";    
  include 
"../util/top1.php";    
?> 
<h1 class="artnamepage">Блог</h1> 
<p><a href="index.php" title="Вернуться в блог">Блог</a></p> 
<form action="addrec.php" method="post"> 
<input type="hidden" name="action" value="post"> 
<table> 
  <tr> 
    <td><p><b>Тема</b> *:</td> 
    <td><input class="input" type="text" name="theme"
               value='<?php echo htmlspecialchars($themeENT_QUOTES); ?>'></td> 
  </tr>   
  <tr> 
    <td><p><b>Сообщение</b> *:</td> 
    <td><textarea class="input" cols="42" rows="5" 
        name="msg"><?php echo htmlspecialchars($msgENT_QUOTES); ?></textarea></td> 
  </tr> 
  <tr> 
    <td></td> 
    <td><input class="button" type="submit" value="Добавить"></td> 
  </tr> 
  </table>       
</form> 
<?php 
  
// Выводим сообщение об ошибке 
  
if (!empty($error))
  { 
    echo 
"<div class='error'>"implode("<br>"$error)"</div>";
  } 
  include 
"../util/bottom1.php";  
?>
А при выводе сообщений, содержимое <? echo $msg; ?> будем обрабатывать при помощи htmlspecialchars() и осуществлять все преобразования встроенных тэгов, которые лучше оформить в виде отдельной функции.

  Ответить  
 
 автор: lightning.say   (02.07.2011 в 16:32)   письмо автору
 
   для: cheops   (02.07.2011 в 15:26)
 

проверка if (empty($error)) блокирует запись в бд, исправил на if (!empty($error)) запись осуществилась,
и вот здесь echo "<div class='error'>"implode("<br>", $error)"</div>"; почему-то пишет:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in C:\Data\II\Site\blog\addrec.php on line 79

  Ответить  
 
 автор: cheops   (02.07.2011 в 21:50)   письмо автору
 
   для: lightning.say   (02.07.2011 в 16:32)
 

>проверка if (empty($error)) блокирует запись в бд,
Она и должна блокировать, если есть какие-то ошибки
>echo "<div class='error'>"implode("<br>", $error)"</div>";
Исправьте эту строку следующим образом
echo "<div class='error'>".implode("<br>", $error)."</div>";

  Ответить  
 
 автор: lightning.say   (03.07.2011 в 01:30)   письмо автору
 
   для: cheops   (02.07.2011 в 21:50)
 

похоже вот эта строчка $error[] = array(); мешает осуществится проверке if (empty($error)) в пользу записи и в конце выходит Array вместо ошибки, похоже квадратные скобки после $error мешали, без них все норм.

  Ответить  
 
 автор: cheops   (03.07.2011 в 13:38)   письмо автору
 
   для: lightning.say   (03.07.2011 в 01:30)
 

Да, конечно, $error[] = array(); следует заменить на $error = array();

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования