[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Гостевая на файлах
fallow
Тут уроки от Twin'a читаю, очень хорошие уроки, спасибо большое)
Только вот застрял на этом уроке, на последнем коде.
Мой код не работает, свреяю с кодом Twin'a всё такое же или я не вижу...
Я не понимаю почему если массив с ошибками пуст и файл есть, то мы вытаскиваем из файла нормальный массив, потом все ключи, потом к самому большому ключу +1? Где далее это используется?
А где мы записываем строку в файл, если файл есть? Мой код не записывает, если есть файл.
В чём проблема? Не врублюсь.

<?php

header("Content-type: text/html; charset-utf8");
error_reporting(E_ALL);

$text1 = !empty($_POST['text1'])? $_POST['text1'] : null;
$text2 = !empty($_POST['text2'])? $_POST['text2'] : null;
$info = array();

if(!empty($_POST['ok']))
{
if(!$text1)
$info[] = 'Вы не указали ваш логин!';
if(!$text2)
$info[] = 'Напишите что нибудь в сообщении!';

if(count($info) == 0)
{
if(file_exists('text.txt'))
{//если файл существует, читаем файл
$posts = unserialize(file_get_contents('text.txt'));
//достаем все ключи в другой массив
$keys = array_keys($posts);
//достаем самый большой и при,авляем к нему один
$id = max($keys) + 1;
}
else
{//если файла нет
$id = 1;
//создаем новый массив...=
$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;
// = и засовываем в текст.файл
file_put_contents('text.txt',serialize($posts));

//сбрасываем POST данные
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
//и выходим из скрипта
exit();
}
}
}

else
{//если кнопка не нажата то занести в массив
$info[] = 'Напишите что нибудь...';
}
?>
<form action="" method="POST">
Логин:<br />
<
input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>" /><br />
Сообщение:<br />
<
textarea name="text2"><?php echo htmlspecialchars($text2);?></textarea><br />
<
input name="ok" type="submit" />
</
form>
<?php
//выводим ошибки которые собранны в массиве
echo implode('<br />',$info).'<br />';

if(file_exists('text.txt'))
{
//читаем файл и десериализуем массив
$array = unserialize(file_get_contents('text.txt'));
//проходим по циклу вынимая каждый раз пару: ключ => значение
foreach($array as $key => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(htmlspecialchars($post['mess']));
?>
<div id="post">
<
h4><strong class="left">Логин: <?php echo $name; ?></strong><strong class="right">Дата: <?php echo $date; ?></strong></h4>
<
p><?php echo $mess; ?></p>
</
div>

<?php
}
}





Спустя 8 часов, 15 минут, 5 секунд (9.01.2011 - 11:22) twin написал(а):
В заблуждение тебя ввело то, что у меня блок else не взят в фигурные скобки.
Нужно не так:
           else
          {//если файла нет
              $id = 1;
              //создаем новый массив...=
              $posts[$id]['date'] = date('d-m-Y');
              $posts[$id]['name'] = $text1;
              $posts[$id]['mess'] = $text2;
              // = и засовываем в текст.файл
              file_put_contents('text.txt',serialize($posts)); 
             
              //сбрасываем POST данные
              header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
              //и выходим из скрипта 
              exit();     
          }


а так:
           else
$id = 1; //если файла нет


//создаем новый массив...=

$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;
// = и засовываем в текст.файл
file_put_contents('text.txt',serialize($posts));

//сбрасываем POST данные
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
//и выходим из скрипта
exit();

Спустя 3 часа, 4 минуты, 35 секунд (9.01.2011 - 14:27) fallow написал(а):
Оу, спасибо twin smile.gif
Просто я не привык к такому, всегда закрываю блок.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.