|
|
|
|
|
для: lightning.say
(03.07.2011 в 01:30)
| | Да, конечно, $error[] = array(); следует заменить на $error = array(); | |
|
|
|
|
|
|
|
для: cheops
(02.07.2011 в 21:50)
| | похоже вот эта строчка $error[] = array(); мешает осуществится проверке if (empty($error)) в пользу записи и в конце выходит Array вместо ошибки, похоже квадратные скобки после $error мешали, без них все норм. | |
|
|
|
|
|
|
|
для: 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>";
|
| |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: 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($theme, ENT_QUOTES); ?>'></td>
</tr>
<tr>
<td><p><b>Сообщение</b> *:</td>
<td><textarea class="input" cols="42" rows="5"
name="msg"><?php echo htmlspecialchars($msg, ENT_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() и осуществлять все преобразования встроенных тэгов, которые лучше оформить в виде отдельной функции. | |
|
|
|
|
|
|
|
для: 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 || !$thm) puterror("Ошибка при выборке сообщений...");
// Общее число отображаемых сообщений
$count= mysql_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> <b><? echo $theme?></b>
<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 в 00:19)
| | =) | |
|
|
|
|
|
|
|
для: lightning.say
(01.07.2011 в 16:27)
| | А сами его создать не хотите? Вроде не очень сложное приложение? Если что-то вызывает затруднение мы бы могли помочь. | |
|
|
|
|
|
|
| Доброго всем времени суток!
Не подскажете скрипт блога с использоанием MySQL?
Спасибо! | |
|
|
| |
|