[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с гостевой
Andrey65
Вопро для Вас смешной, но я не могу сам додуматься. Проблема следующая. Когда нажимаю на кнопку "отправить" поля и сообщения исчезают. При нажатии в меню на гостевую все появляется.




<!--гостевая-->
<?php


/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/


/////////////////////////////////////////////////////////////////

// VARIABLES
// ПЕРЕМЕННЫЕ

/////////////////////////////////////////////////////////////////


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


/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ

/////////////////////////////////////////////////////////////////

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);
// Вытаскиваем самый большой элемент и увеличиваем на 1
$id = max($keys) + 1;
} // Если файла нет, значит запись № 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));


exit();
}
}

else
$info[] = 'Напишите что-нибудь';

/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ

/////////////////////////////////////////////////////////////////
?>
<form action="http://test1.ru/index.php?p=guests" method="post">
Логин:<br />
<
input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<
textarea name="text2" cols="40" rows="10"><?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 $id => $post)
{ // Тут уже проходили
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(htmlspecialchars($post['mess']));
?>
<div style="border:1px solid; width:70%; background-color:#A9A9A9; min-height:100px; margin:5px; padding:5px">
<?php echo $date; ?> / <strong><?php echo $name; ?></strong>
<
hr width="30%" align="left" />
<?php echo $mess; ?>
</div>
<?php
}
}





Спустя 31 минута, 5 секунд (5.02.2011 - 19:59) waldicom написал(а):
может убрать exit() ?

Спустя 6 минут, 8 секунд (5.02.2011 - 20:05) Andrey65 написал(а):
Дайте пожулуйста пояснение как это работает header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);

Спустя 2 минуты, 49 секунд (5.02.2011 - 20:08) Andrey65 написал(а):
когда убрал exit() при обновлении дублирует записи, как избавиться от этого.

Спустя 7 минут, 20 секунд (5.02.2011 - 20:15) Sopromatenot написал(а):
А зачем ты проигнорировал это:

    
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);


Допиши и запусти.. если есть какаято ошибка, то она будет видна.

Спустя 5 минут, 59 секунд (5.02.2011 - 20:21) Andrey65 написал(а):
Я просто подключил эту гостевую. У меня там уже есть голова, там же и генерируется меню. Не могу по-русски обьяснить проще вам посмотреть

Спустя 32 минуты, 14 секунд (5.02.2011 - 20:54) WTFTW написал(а):
вместо
 exit() 
сделай
exit('<meta http-equiv="refresh" content="0; url=http://' . 
$_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '">');

Спустя 23 минуты, 49 секунд (5.02.2011 - 21:18) Andrey65 написал(а):
Сделал. Происходит редирект на index.php, потом опять надо заходить на гостевую. На примере по которому я делаю там

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);


Как я понял служит для перезагрузки страницы без повторной записи. Если с ней, то выводит ошибку что у меня уже где-то исп-ся header а именно design/header.php

Спустя 3 минуты, 48 секунд (5.02.2011 - 21:21) Sopromatenot написал(а):
Цитата (Andrey65 @ 5.02.2011 - 18:18)
Сделал. Происходит редирект на index.php, потом опять надо заходить на гостевую. На примере по которому я делаю там

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);


Как я понял служит для перезагрузки страницы без повторной записи. Если с ней, то выводит ошибку что у меня уже где-то исп-ся header а именно design/header.php

Просто нельзя отправить header после каково либо вывода на страницу. А ты уже написал половину шаблона страницы и тебе пишут что мол нельзя:

Warning: Cannot modify header information - headers already sent by ...

Спустя 4 минуты, 52 секунды (5.02.2011 - 21:26) Andrey65 написал(а):
И как мне быть. Смириться с тем, что после отправки перекидывает на главную.? Уже голова не соображает, запутался.

Спустя 2 минуты, 7 секунд (5.02.2011 - 21:28) WTFTW написал(а):
Andrey65 эм.

Спустя 4 минуты (5.02.2011 - 21:32) WTFTW написал(а):
exit('<meta http-equiv="refresh" content="0; url=http://' . 
$_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . '?' . $_SERVER['QUERY_STRING'] . '">');

Спустя 9 минут, 34 секунды (5.02.2011 - 21:42) Andrey65 написал(а):
Ура!!! Заработало!!! Спасибо WTFTW !!! Хотелось бы самому понять. Где можно почитать проэту конструкцию?

Спустя 4 минуты, 33 секунды (5.02.2011 - 21:46) WTFTW написал(а):
Andrey65 http://www.tigir.com/html.htm.

Но рекомендую почитать про разделение логики и представления. потому что с помощью header('location:'); реально легче работать, да и, по моему, правильней.

Карму ставь, я кармодр*чер biggrin.gif .


_____________
Цитата
Не стоит недооценивать предсказуемость моей тупизны
Быстрый ответ:

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