IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Как его заставить забыться (https://www.imho.ws/showthread.php?t=31464)

Cinik 06.06.2003 11:34

Как его заставить забыться
 
Подскжите плиз начинающему.
Сделал скрипт на ПХП отправки мыла (mail() функция), заполяешь формы на страничке нажимаешь submit при нажатии данные передаются функции и происходит отправка письма, но если после нажать обновить, отправляется еще одно письмо.
Она помнит и нажатие и все введенные данные.
Как сделать, чтобы после отправки все забывалось.

Stasik 06.06.2003 14:56

сделай редирект на другую страницу

Cinik 06.06.2003 14:59

В смысле после нажатия на кнопку отправить перенаправлять на другую с траницу?

medved2002 06.06.2003 17:21

угу...
if($_SERVER['REQUEST_METHOD'] == POST){
/* Заносим данные */

die(header('Location: thanks.php')); // редиректим на страницу со спасибо.
}

Stasik 06.06.2003 19:58

угу

Cinik 09.06.2003 09:22

Ок вроде все так как нужно, только на страницу thanks.php не переходит, почему это может быть?

RaZEr 09.06.2003 10:22

Попробуй послать пару символов в поток:

header('Location: thanks.php');
echo ' ';

Cinik 09.06.2003 10:29

Не помогает ;-((

RaZEr 09.06.2003 10:44

Тогда отлаживай, смотри доходит он до header'а или нет, а там видно будет.

Cinik 09.06.2003 10:59

if($_SERVER['REQUEST_METHOD'] == POST){
/* Заносим данные */
echo $dopinfo;
die(header('Location: ../data/thanks.php')); // редиректим на страницу
echo ' ';
}

нажимаю на submit выводится переменная $dopinfo, значит доходит, но больше ничего не происходит
у меня в определдени
<form action="<?php echo $PHP_SELF ?>" method="post" name="kandidat">
может в этом причина

RaZEr 09.06.2003 11:03

да нельзя выводить ничего перед заголовком ... убери "echo $dopinfo;"

Cinik 09.06.2003 11:08

Убрал, оставил вот так
if($_SERVER['REQUEST_METHOD'] == POST){
/* Заносим данные */
die(header('Location: ../data/thanks.php')); // редиректим на страницу
echo ' ';
}

все равно не переходит

Cinik 09.06.2003 11:19

А может просто есть пример скрипта, надо всего лишь заполнить форму из нескольких полей, потом нажать кнопку отправить и через функцию mail() отправиться письмо, а напишеть "спасибо" .все работает, только при нажатии "отправить" письмо уходит еще раз со старыми данными, если использовать
if($_SERVER['REQUEST_METHOD'] == POST){
после повтора нажатия данные теперь имхо обнуляются, но при нажатии "обновить" страницу выскакивает окошко типа надо повторно отправить данные. как вот все это обойти.

RaZEr 09.06.2003 11:42

die убери. оставь header.

Cinik 09.06.2003 11:49

Нет, не проходит, а чем можно хеадеры посмотреть, проверить

RaZEr 09.06.2003 11:52

Их незачем проверять. Ты лучше бы вывод ошибок включил ... а то я смотрю то ли у тебя с головой беда, то ли ошибки отключены.

Cinik 09.06.2003 12:05

Незнание не есть отсутствие головы, но это так... к слову...
Накидал простенько:
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<form action="<?php echo $PHP_SELF ?>" method="post" name="name">
<textarea name="dopinfo" cols="52" rows="5" class="fieldsform"></textarea>
<input name="Submit" type="submit" class="fieldsform" value="Отправить данные">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == POST){
header('Location: index.php'); // редиректим на страницу со спасибо.
}
?>
</body>
</html>
Ошибки:
Notice: Use of undefined constant POST - assumed 'POST' in P:\test.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at P:\test.php:8) in P:\test.php on line 14

RaZEr 09.06.2003 12:11

POST возьми в кавычки, а на будущее замечательный сайт - www.php.net

Cinik 09.06.2003 12:16

Ковычки убрал, все равно не переходит на другой сайт. Warning остался

предлагаешь на php.net на форуме спросить?

RaZEr 09.06.2003 12:34

Что-то я никак не найду где я просил убрать кавычки ?

medved2002 09.06.2003 12:44

Блин!!!! RFTM!!!!

Нельзя выводить header если ты уже чего то напечатал:
Либо делай так

<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
header('Location: index.php'); // редиректим на страницу со спасибо.
}
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<form action="<?php echo $PHP_SELF ?>" method="post" name="name">
<textarea name="dopinfo" cols="52" rows="5" class="fieldsform"></textarea>
<input name="Submit" type="submit" class="fieldsform" value="Отправить данные">
</form>

</body>
</html>

medved2002 09.06.2003 12:53

либо так
<?
ob_start();
?>
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<form action="<?php echo $PHP_SELF ?>" method="post" name="name">
<textarea name="dopinfo" cols="52" rows="5" class="fieldsform"></textarea>
<input name="Submit" type="submit" class="fieldsform" value="Отправить данные">
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST"){
die(header('Location: index.php')); // редиректим на страницу со спасибо.
}
?>
</body>
</html>
<?
ob_end_flush()
?>

RaZEr 09.06.2003 12:55

Да не, мне никак ему не впереть что у него POST без кавычек. У него ошибку из-за этого выкидывает, а ошибка это уже output started.

medved2002 09.06.2003 13:03

ага это точно... не заметил...

Но только это не должно генерировать ошибку ибо ПХП решит что POST это константа.

RaZEr 09.06.2003 13:11

Почитай топик ...

medved2002 09.06.2003 13:17

прочитал и чего?

RaZEr 09.06.2003 13:30

Цитата:

Ошибки:
Notice: Use of undefined constant POST - assumed 'POST' in P:\test.php on line 13
и ничего ...

Cinik 09.06.2003 13:59

RaZEr Пардон, в смысле поставил ковычки;-)))

Попробовал оба варианта от medved2002 в первом вариант:
и не выводя форму сразу выбрасывает в файл index.php

Второй вариант работает как нужно, фенкс большое

зы. а посылают RTFM, а не RFTM )))

RaZEr 09.06.2003 14:11

Ну тебе лучше знать ;)

medved2002 09.06.2003 14:15

2RaZEr
действительно :)... Сорри поленился дочитать... :))

А как посылать, это вопрос к посылающему... Я послал правильно и по адресу :)


Часовой пояс GMT +4, время: 02:16.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.