Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Программирование » PHP » Cannot add header...и кнопка назад
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
Revers
Участник

Зарегистрирован: Aug 2004
Место проживания:
Публикаций: 2
Статус: Revers в оф-лайне
Cannot add header...и кнопка назад [сообщение #69760]

Подскажите плиз!
уже совсем запарился.
проблема мне кажеться известная.
Вообщем скрипт добавляет информацию, в базу данных,
и переводит автоматически на другую страницу.
с помощью следующей строки:
echo '<script>window.location="show.php"</script>';
отображаеться нужная страница, все ок.
Но когда нажимаеш кнопку "Назад"
то скрипт опять добавляет информацию, и автоматически
переводит на эту же страницу.
и так можно добавить их одинаковых сколько хочеш .

Насколько я знаю этого глюка не будет если использовать
header("Location: show.php")
но если я использую эту функцию, то выскакивает ошибка
Cannot add header information - headers already sent by..

насколько я знаю, эта ошибка возникает, потому что ранее
до вызова функции header() скрипт автоматически отослал уже какие то заголовки
тоесть надо передвинуть функцию выше любого другого отсылания заголовков,
но зделать этого я не могу, потому что это самое автоматическое отсылание происходит(насколько я смог разобраться) из за того что у меня выше расположены строки в которых выводиться форма например

echo'<form name="myform" method="GET" action="use.php">';

но передвинуть функцию header() выше формы я никак не могу.
иначе никто этой формы и не увидит.

Подскажите как тут быть
а то уже все что знал перепробовал.

Вот кот страницы на которой находиться форма.

<?
echo'<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body bgcolor="7FB7F5">';

echo'<form name="myform" method="GET" action="use.php">';
echo'<p><b> Enter text:</b></p>';
echo'<textarea name="text" rows=10 cols=80></textarea><br><br>';
echo'<input type="submit" name="send" value="Send"><br><br>';
echo'</form>';
echo'<hr width="100%" color="ffffff">';

$msqlbase=mysql_connect("localhost","root") or die ("NOT");
mysql_select_db("base") or die ("NOT");
mysql_query("INSERT INTO table (name) VALUES ('$text')") or die("SORRY, invalid query");
mysql_close($msqlbase);

if (isset($send)){
// echo '<script>window.location="show.php"</script>';

header("Location: show.php");
}

?>

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 10-08-2004 20:03
Нажмите сюда для просмотра профайла Revers Отправить Персональное сообщение Revers Найти сообщения от Revers Добавить Revers в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
he][es
Участник+
Средний рейтинг: 4.07 | Оценок: 30
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: he][es в оф-лайне
[сообщение #69762]

Revers а что слабо текст страницы в переменную засунуть?

PHP:


$body 
= "<html>
<head>
<META http-equiv=\"Content-Type" 
content=\"text/html; charset=windows-1251\">
</head>
<body bgcolor=\"7FB7F5\">"
;

if (isset(
$_POST['text'])) {
 
$msqlbase=mysql_connect("localhost","root") or die ("NOT");
mysql_select_db("base") or die ("NOT");
mysql_query("INSERT INTO table (name) VALUES ('$text')") or die("SORRY, invalid query");
mysql_close($msqlbase);
header("Location: show.php");
} else {
print 
$body;
}


? и выводить где надо... тогда и хэдер можно послать когда угодно... только это не решит твоей проблемы! Если ты вернешься назад, браузер спросит "Послать данные?" да->добавит в БД, нет выдаст форму...

__________________
Админ - вождь Апачей...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 10-08-2004 21:13
Нажмите сюда для просмотра профайла he][es Отправить Персональное сообщение he][es Найти сообщения от he][es Добавить he][es в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
rio
Power in your mind !
Средний рейтинг: 3.67 | Оценок: 3
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Moscow
Публикаций: 172
Статус: rio в оф-лайне
[сообщение #69777]

можно сделать так : в принципе есле поле "text" уникальное то тогда :

PHP:


if(!isset($step) or step = "")
{
echo
'<form name="myform.php?step=2" method="GET" action="use.php">';
echo
'<p><b> Enter text:</b></p>';
echo
'<textarea name="text" rows=10 cols=80></textarea><br><br>';
echo
'<input type="submit" name="send" value="Send"><br><br>';
echo
'</form>';
echo
'<hr width="100%" color="ffffff">';
} else {
  if(
mysql_affected_rows(mysql_query("SELECT * FROM table where text='".$text."'")) <= 0)
{
   
mysql_query("INSERT INTO table (name) VALUES ('$text')"); 
header("Location: show.php"); 
} else {
   
header("Location: myform.php"); 
}

}


по идее , должно сработать (не прверял)

__________________
Ковчег построили дилетанты, а профессионаллы построили "Титаник" - не бойтесь спрашивать то , чего вы не знаете , а так же делать то - чего не умеете !

Сообщение было отредактировано rio 11-08-2004 в 08:44

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 11-08-2004 08:32
Нажмите сюда для просмотра профайла rio Отправить Персональное сообщение rio Посетить домашнию страничку rio! Найти сообщения от rio Добавить rio в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
zerkms
Участник
Средний рейтинг: 5 | Оценок: 1

Зарегистрирован: Feb 2004
Место проживания: Комсомольск-на-Амуре, Россия
Публикаций: 6
Статус: zerkms в оф-лайне
[сообщение #69778]

привет всем....

с такой проблемой сталкиваются многие....

по-хорошему все твои проблемы Revers решаются вот так:

чтобы не было "headers already sent by...." у тебя должен быть header.php, который содержит все теги <html><body>.... и подлкючаться к каждой странице ДО вывода любой информации.

чтобы не отправлялась инфа повторно и не предлагалось повторно отправить данные через POST - нужно в него добавить:

_____________
header ('Cache-Control: private, pre-check=0, post-check=0, max-age=0');
header ('Expires: 0');
header ('Pragma: no-cache');
_____________

выбор за тобой - что ты сделаешь, но я бы не стал юзать тот бред, который предложил he][es - уж извини...

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 11-08-2004 08:49
Нажмите сюда для просмотра профайла zerkms Отправить Персональное сообщение zerkms Посетить домашнию страничку zerkms! Найти сообщения от zerkms Добавить zerkms в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Revers
Участник

Зарегистрирован: Aug 2004
Место проживания:
Публикаций: 2
Статус: Revers в оф-лайне
[сообщение #69800]

Спасибо за советы!

мне подсказали что здесь может помочь функция ob_start()
я попробовал и все здорово получилось.

и проще всего, мне кажеться.
правда еще мне говорили что с этой функцией надо быть осторожным.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 11-08-2004 19:11
Нажмите сюда для просмотра профайла Revers Отправить Персональное сообщение Revers Найти сообщения от Revers Добавить Revers в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
lord
Участник
Средний рейтинг: 5 | Оценок: 1

Зарегистрирован: Oct 2001
Место проживания:
Публикаций: 33
Статус: lord в оф-лайне
[сообщение #69836]

1. проверка получаешь ты данные после сабмита или просто выводишь форму.
2.Вывел форму, заполнил форму, Submit
3. Если получил данные, то занес в базу и сделал Location

Зачем тебе ob_start() ?

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 13-08-2004 08:03
Нажмите сюда для просмотра профайла lord Отправить Персональное сообщение lord Найти сообщения от lord Добавить lord в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Искатель
Участник+
Средний рейтинг: 4 | Оценок: 4
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Dec 2001
Место проживания: Россия Е-бург
Публикаций: 322
Статус: Искатель в оф-лайне
[сообщение #69853]

---------------
Зачем тебе ob_start() ?
---------------
Ð_то ему нужно для того что бы выводить хедеры в любой части кода...

см. 1-ый пост сначала у него идут echo для вывода html кода, а потом!!!
if (isset($send)){
// echo '<script>window.location="show.php"</script>';

header("Location: show.php");
}
такой огород без об_старт просто напросто не заработает...

__________________
http://faq.pp.ru/read_mee/

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 13-08-2004 16:21
Нажмите сюда для просмотра профайла Искатель Отправить Персональное сообщение Искатель Посетить домашнию страничку Искатель! Найти сообщения от Искатель Добавить Искатель в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 10:34.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 0.29668307 seconds (97.95% PHP - 2.05% MySQL) with 23 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.