 |
 |
Форум сетевых администраторов » Программирование » PHP » Cannot add header...и кнопка назад
| Автор |
| Тема |
 |
|
 |
|
|
|
Участник
|
| Cannot add header...и кнопка назад |
[сооб. #69760]
10-08-2004 20:03 |
|
Участник
Зарегистрирован: Aug 2004
Место проживания:
Публикаций: 2
Статус:  |
Подскажите плиз!
уже совсем запарился.
проблема мне кажеться известная.
Вообщем скрипт добавляет информацию, в базу данных,
и переводит автоматически на другую страницу.
с помощью следующей строки:
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: определен
|
10-08-2004 20:03 |
|
|
Участник+
|
| Revers а что слабо текст страницы в переменную... |
[сооб. #69762]
10-08-2004 21:13 |
|
Участник+


Зарегистрирован: Mar 2003
Место проживания: Барнаул, Россия
Публикаций: 1169
Статус: ![he][es в оф-лайне](images/offline.gif) |
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: определен
|
10-08-2004 21:13 |
|
|
Power in your mind !
|
| можно сделать так : в принципе есле поле "text"... |
[сооб. #69777]
11-08-2004 08:32 |
|
Power in your mind !


Зарегистрирован: Sep 2002
Место проживания: Moscow
Публикаций: 172
Статус:  |
можно сделать так : в принципе есле поле "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: определен
|
11-08-2004 08:32 |
|
|
Участник
|
привет всем....
с такой проблемой сталкиваются... |
[сооб. #69778]
11-08-2004 08:49 |
|
Участник

Зарегистрирован: Feb 2004
Место проживания: Комсомольск-на-Амуре, Россия
Публикаций: 6
Статус:  |
привет всем....
с такой проблемой сталкиваются многие....
по-хорошему все твои проблемы 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: определен
|
11-08-2004 08:49 |
|
|
Участник
|
Спасибо за советы!
мне подсказали что здесь... |
[сооб. #69800]
11-08-2004 19:11 |
|
Участник
Зарегистрирован: Aug 2004
Место проживания:
Публикаций: 2
Статус:  |
Спасибо за советы!
мне подсказали что здесь может помочь функция ob_start()
я попробовал и все здорово получилось.
и проще всего, мне кажеться.
правда еще мне говорили что с этой функцией надо быть осторожным.
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
11-08-2004 19:11 |
|
|
Участник
|
| 1. проверка получаешь ты данные после сабмита... |
[сооб. #69836]
13-08-2004 08:03 |
|
Участник

Зарегистрирован: Oct 2001
Место проживания:
Публикаций: 33
Статус:  |
1. проверка получаешь ты данные после сабмита или просто выводишь форму.
2.Вывел форму, заполнил форму, Submit
3. Если получил данные, то занес в базу и сделал Location
Зачем тебе ob_start() ?
Сообщить модератору об этом сообщении | Предупреждение | IP: определен
|
13-08-2004 08:03 |
|
|
|
Формат времени GMT. Текущее время 10:24.
|
Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения. |
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
|
|
|
|
| |
Page generated in 0.29209709 seconds (98.20% PHP - 1.80% MySQL) with 26 queries.
|
 |