Форма - post в файл.

geBo4ka

Guest
Форма - post в файл.

Привет. Вот не работает скрипт, помогите разобраться в чем причина?
Ршибок не выдает, пишет : обработано успешно, но в задонном файле текст не появляется.

PHP:
<?PHP 
//Поместите этот код в один файл и назовите его addnews.php

if($HTTP_POST_VARS['submit'])
{ 
if($HTTP_POST_VARS['password'] == 'mysecretpassword')
{ 
if(!$HTTP_POST_VARS['headline'])
{ 
echo "Вы должны ввести заголовок новости"; 
exit; 
} 
if(!$HTTP_POST_VARS['text'])
{ 
echo "Вы должны ввести текст новости"; 
exit; 
}
if(strstr($HTTP_POST_VARS['headline'],"|"))
{ 
echo "Заголовок не должен содержать символ - |"; 
exit; 
} 
if(strstr($HTTP_POST_VARS['text'],"|"))
{ 
echo "Текст не должен содержать символ - |"; 
exit; 
}
$fp = fopen('news.txt','a'); 
if(!$fp)
{ 
echo "Ошибка открытия файла!"; 
exit; 
} 
$line = date("m.d.y") . "|" . $HTTP_POST_VARS['headline']; 
$line .= "|" . $HTTP_POST_VARS['text']; 
$line = str_replace("\r\n","<BR>",$line); 
$line .= "\r\n"; 
if(!fclose($fp))
{ 
echo "Ошибка закрытия файла!"; 
exit; 
} 
echo "Форма успешно обработана"; 
} 
else
{ 
echo "Неверный пароль"; 
} 
} 
?>

<FORM ACTION="<?=$PHP_SELF?>" METHOD="POST" NAME="ad_news"> 
Заголовок:<BR> 
<INPUT TYPE="text" SIZE="30" NAME="headline"><BR> 
Текст новости:<BR> 
<TEXTAREA NAME="text" COLS="40" ROWS="5"></TEXTAREA><BR><BR> 
Пароль:<BR> 
<INPUT TYPE="password" SIZE="30" NAME="password"><BR> 
<INPUT TYPE="submit" NAME="submit" VALUE="Добавить!"> <BR> 
</FORM>
 

Фанат

oncle terrible
Команда форума
Надо понять одну вещь.
Что просто глядя в код сложно сказать, в чем может быть проблема.
проблем может быть миллион.
И программист должен сам уметь находить хотя бы источник проблемы. Для начала - убедившись, что программа не вызывает сообщений об ошибках.
Скорее всего, у тебя есть ошибки при работе с файлом, но ты их не видишь. про то, как включить - написано здесь:
PHP FAQ: Ничего не работает! Что делать???
 

Денч

Новичок
PHP:
<?PHP 
//Поместите этот код в один файл и назовите его addnews.php 

if($HTTP_POST_VARS['submit']) 
{ 
  if($HTTP_POST_VARS['password'] == 'mysecretpassword') 
  { 
    if(!$HTTP_POST_VARS['headline']) 
    { 
      echo "Вы должны ввести заголовок новости"; 
      exit; 
    } 
    if(!$HTTP_POST_VARS['text']) 
    { 
      echo "Вы должны ввести текст новости"; 
      exit; 
    } 
    if(strstr($HTTP_POST_VARS['headline'],"|")) 
    { 
       echo "Заголовок не должен содержать символ - |"; 
       exit; 
    } 
    if(strstr($HTTP_POST_VARS['text'],"|")) 
    { 
      echo "Текст не должен содержать символ - |"; 
      exit; 
    } 
  }
  else 
  { 
    echo "Неверный пароль"; 
    exit;
  }
  $fp = fopen('news.txt','a'); 
  if(!$fp) 
  { 
    echo "Ошибка открытия файла!"; 
    exit; 
  }  
  $line = date("m.d.y") . "|" . $HTTP_POST_VARS['headline']; 
  $line .= "|" . $HTTP_POST_VARS['text']; 
  $line = str_replace("\r\n","<BR>",$line); 
  $line .= "\r\n"; 
  if(!fclose($fp)) 
  { 
     echo  "Ошибка закрытия файла!"; 
     exit; 
  } 
  echo "Форма успешно обработана"; 
} 
?>
 

Фанат

oncle terrible
Команда форума
Денч, спасибо.
тот вариант, конечно, ни читать, ни понять невозможно

-~{}~ 18.12.04 00:18:

geBo4ka, кстати, теперь видно, что вариант совсем неудачный.
рекомендую обратить внимание вот на этот: http://phpclub.ru/talk/showthread.php?s=&threadid=43521
 

geBo4ka

Guest
display_errors = On
Скрипт ошибки не выводит, однако кто то заметил, что там переменная line формируется, но не вносится в файл!

Тот скрипт на который вы дали ссылку пишет что не был введено Имя и Текс сообщения...
 

Денч

Новичок
В упор не вижу, где запись в файл...

-~{}~ 18.12.04 00:50:

Добавь после
PHP:
$line .= "\r\n";
во это
PHP:
fwrite($fp,$line);
 

Нечто

Психолог РНРClub
Что-то мне захотелось все ужать :D типа чувство прекрасного.
PHP:
if(!empty($_POST['submit'])) {
  if(!isset($_POST['password']) || $_POST['password'] != 'mysecretpassword')
  die('Неверный пароль');
  if(empty($_POST['headline'])) die('Вы должны ввести заголовок новости');
  if(empty($_POST['text'])) die('Вы должны ввести текст новости');
  if(strstr($_POST['headline'],'|')) die('Заголовок не должен содержать символ - |');
  if(strstr($_POST['text'],'|')) die('Текст не должен содержать символ - |');

  $fp = fopen('news.txt','a') or die('Ошибка открытия файла!');
  $line = date('m.d.y') . '|' . $_POST['headline'] . '|' . $_POST['text'];
  $line = str_replace("\r\n",'<br />',$line) . "\r\n";
  fwrite($fp,$line) or die('Ошибка записи в файл!');
  fclose($fp) or die('Ошибка закрытия файла!');
  echo('Форма успешно обработана');
}
 

Фанат

oncle terrible
Команда форума
зачем ужимать кривой код?
мне тоже хотелось, но когда я увидел, что он делает - расхотелось.
 

Нечто

Психолог РНРClub
Фанат
Гы.. :D
Мне это кайф доставляет, особенно когда изначально криво.
 

Фанат

oncle terrible
Команда форума
Мне тоже.
И наоборот - кривой код прямо зуд вызывает. Не в смысле зуд исправить ,а в смысле физический дискомфорт.
Но здесь...

Впрочем, если судить по этому ответу
Тот скрипт на который вы дали ссылку пишет что не был введено Имя и Текс сообщения...
то тут исправляй-не исправляй - толку не будет
 

geBo4ka

Guest
Спасибо вам большое! Подскажите где почитать о том, как эти формы размножать, что бы можно было добавить сви поля?
 

geBo4ka

Guest
ВОт гады! издеваются! похоже было что я хоть немного над вами издевался? Ладно, спаибо вам за все, реально помогли! Спасибо!
 

Фанат

oncle terrible
Команда форума
во-первых, не издеваются, а подкалывают.
Во-вторых, издеваются не потому, что над ними издевались, а потому, что грех такого, сено-солома, не подколоть.
В-третьих, не хватало еще, чтобы ты тут над кем-то издевался.

Подсказка. Вот этой твоей гениальной фразы
как эти формы размножать, что бы можно было добавить сви поля?
Никто не понял.
 

geBo4ka

Guest
Ой! простите тогда! попробуй на своем программерском! Ну вы меня понимаете :)

как добавить дополнительные поля ввода в эту форму? =) Правильно?
 

Денч

Новичок
Пока все идет нормально, никто не станет подкалывать.
Но как только задатут вопрос типа такого: "Я скачал из интернета файл. Что мне с ним делать?" Как все начинают угорать.

-~{}~ 18.12.04 17:07:

Правильно. Попробуй вставить в нужное место новое поле:).
Надеюсь
PHP:
<INPUT TYPE="text"
знаешь что такое?;)
 
Сверху