|
|
|
| Вот такая у меня беда, установил пятую версию и не работает функция проверки сообщения на слишком длинные слова без пробелов . Ставлю четвертую все в порядке...
Подскажите кто знает, в чем проблема?
// Проверяем сообщение на слишком длинные слова
$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(" ");
}
}
|
| |
|
|
|
|
|
|
|
для: kak
(15.10.2007 в 16:52)
| | register_globals = on | |
|
|
|
|
|
|
|
для: mihdan
(16.10.2007 в 00:50)
| | Спасибо.
попробую | |
|
|
|
|
|
|
|
для: mihdan
(16.10.2007 в 00:50)
| | Эта штука у меня register_globals = off. А, как включить не знаю... | |
|
|
|
|
|
|
|
для: mihdan
(16.10.2007 в 00:50)
| | Спасибо.
Дело было именно в этом register_globals = off и только... | |
|
|
|
|
|
|
|
для: kak
(15.10.2007 в 16:52)
| | А откуда $msg взялся? | |
|
|
|
|
|
|
|
для: cheops
(16.10.2007 в 12:27)
| | Вот полный код
<?
///////////////////////////////////////////////////
// Web-приложения для книги "Профессиональный сайт на PHP 5"
// 2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Голышев С.В. (glsv@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
///////////////////////////////////////////////////
// Устанавливаем соединение с базой данных
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["name"] = trim($_POST["name"]);
if (empty($_POST["name"]))
{
$action = "";
$error = $error."<LI>Вы не ввели имя\n";
}
// При помощи регулярных выражений проверяем правильность ввода e-mail
$_POST["email"]=trim($_POST["email"]);
if(!empty($_POST["email"]))
{
if (!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST["email"]))
{
$action = "";
$error = $error."<LI>Неверно введен е-mail. Введите e-mail в виде <i>something@server.com</i> \n";
}
}
// Обрабатываем HTML-тэги и скрипты в сообщении и информации
// об авторе, ограничиваем объём сообщения
$name = substr($_POST["name"],0,32);
$name = htmlspecialchars(stripslashes($name));
$city = substr($_POST["city"],0,32);
$city = htmlspecialchars(stripslashes($city));
$email = substr($_POST["email"],0,32);
$email = htmlspecialchars(stripslashes($email));
$url = substr($_POST["url"],0,60);
$url = htmlspecialchars(stripslashes($url));
$msg = substr($_POST["msg"],0,1024);
$msg = htmlspecialchars(stripslashes($msg));
// Добавляем протокол в url, если пользователь забыл это сделать сам
$url = strtr($url, "HTPF", "htpf");
if (trim($url)!="")
{
if (strtolower((substr($url, 0, 7))!="http://") && (strtolower(substr($url, 0, 7))!="ftp://")) $url="http://".$url;
}
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 guest VALUES (0,
'$name',
'$city',
'$email',
'$url',
'$msg',
'-',
NOW(),
'show');";
if(mysql_query($query))
{
// Если в конфигурационном файле
// $sendmail = true отправляем уведомление
if($sendmail)
{
$thm = "guestbook - a new post";
$msg = "post: $msg\nname: $name";
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/top.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=name value='<? echo $name; ?>'></td>
</tr>
<tr>
<td><p><b>Город:</b></td>
<td><input class=input type=text name=city value='<? echo $city; ?>'></td>
</tr>
<tr>
<td><p><b>E-mail:</b></td>
<td><input class=input type=text name=email value='<? echo $email; ?>'></td>
</tr>
<tr>
<td><p><b>URL:</b></td>
<td><input class=input type=text size=40 name=url value='<? echo $url; ?>'></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/bottom.php";
?>
|
| |
|
|
|
|
|
|
|
для: kak
(17.10.2007 в 15:48)
| |
<?php
$action = $_POST["action"];
// тут напишите
$msg = $_POST["msg"];
?>
|
| |
|
|
|
|
|
|
|
для: mihdan
(17.10.2007 в 17:21)
| | Спасибо, сейчас попробую... | |
|
|
|
|
|
|
|
для: mihdan
(17.10.2007 в 17:21)
| | Че то не "пашет"
Добавить не дает сообщение без пробелов, а сообщение: "текст содержит слова без пробелов" не выводит.
В четвертой же версии все в порядке без исправлений, работает.
Может правда из-за register_globals = off? А, как включить не знаю... | |
|
|
|
|