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

Форум PHP

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

 

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

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

тема: Не работает функция в PHP 5 которая работает PHP4
 
 автор: kak   (15.10.2007 в 16:52)   письмо автору
 
 

Вот такая у меня беда, установил пятую версию и не работает функция проверки сообщения на слишком длинные слова без пробелов . Ставлю четвертую все в порядке...

Подскажите кто знает, в чем проблема?


  // Проверяем сообщение на слишком длинные слова
  $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(" ");            
    }       
  }
  


   
 
 автор: mihdan   (16.10.2007 в 00:50)   письмо автору
 
   для: kak   (15.10.2007 в 16:52)
 

register_globals = on

   
 
 автор: kak   (16.10.2007 в 10:57)   письмо автору
 
   для: mihdan   (16.10.2007 в 00:50)
 

Спасибо.
попробую

   
 
 автор: kak   (17.10.2007 в 18:15)   письмо автору
 
   для: mihdan   (16.10.2007 в 00:50)
 

Эта штука у меня register_globals = off. А, как включить не знаю...

   
 
 автор: kak   (17.10.2007 в 20:49)   письмо автору
 
   для: mihdan   (16.10.2007 в 00:50)
 

Спасибо.
Дело было именно в этом register_globals = off и только...

   
 
 автор: cheops   (16.10.2007 в 12:27)   письмо автору
 
   для: kak   (15.10.2007 в 16:52)
 

А откуда $msg взялся?

   
 
 автор: kak   (17.10.2007 в 15:48)   письмо автору
 
   для: 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($url07))!="http://") && (strtolower(substr($url07))!="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"
?>

   
 
 автор: mihdan   (17.10.2007 в 17:21)   письмо автору
 
   для: kak   (17.10.2007 в 15:48)
 


<?php
$action 
$_POST["action"]; 
// тут напишите 
$msg $_POST["msg"]; 
?>

   
 
 автор: kak   (17.10.2007 в 17:57)   письмо автору
 
   для: mihdan   (17.10.2007 в 17:21)
 

Спасибо, сейчас попробую...

   
 
 автор: kak   (17.10.2007 в 18:20)   письмо автору
 
   для: mihdan   (17.10.2007 в 17:21)
 

Че то не "пашет"
Добавить не дает сообщение без пробелов, а сообщение: "текст содержит слова без пробелов" не выводит.
В четвертой же версии все в порядке без исправлений, работает.
Может правда из-за register_globals = off? А, как включить не знаю...

   
Rambler's Top100
вверх

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