Redirect (PHP) после отправленной формы

12
[Удален]
1855

Мне нужно, чтобы показывалась соответствуюшая страничка (например назовём её thank_you.html), после того, как форма отправлена. Не подскажите код, который это сделает.

В данном случае мой код файла - feedback.tpl - выглядит так:

<div class="clear"></div>

<script type="text/javascript" src="/template/common/js/jquery.validate.js"></script>
<script type="text/javascript" src="/template/common/js/messages_<?=$lang;?>.js"></script>
<script type="text/javascript" src="/template/common/js/feedback.validate.js"></script>
<div class="clear"></div>
<div style="display:<?=$display;?>">
<h3><?=nl2br($const[29]);?></h3>
</div>

<form id="feedform" method="post" action="">

<table class="form" border="0" bgcolor="#eaeaea" cellspacing="16" cellpadding="0" width="100%">
<tr>
<td>
<div class="label_div">
<input type="hidden" name="script" value="feedback">
<?=$const[24];?>
<input type="hidden" value="<?=$const[24];?>" name="label[1]">
<input type="hidden" value="name" name="data[1]">
</div>

<input size="32" type="text" id="name" name="name" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[32];?>
<input type="hidden" value="<?=$const[32];?>" name="label[10]">
<input type="hidden" value="phone" name="data[10]">
</div>

<input size="32" type="text" id="phone" name="phone" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[25];?>
<input type="hidden" value="<?=$const[25];?>" name="label[2]">
<input type="hidden" value="email" name="data[2]">
</div>

<input size="32" type="text" id="email" name="email" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[26];?>
<input type="hidden" value="<?=$const[26];?>" name="label[3]">
<input type="hidden" value="message" name="data[3]">
</div>

<!textarea cols="59" rows="9" id="message" name="message" style="width:100%"></!textarea></td></tr><tr><td>

<table class="form" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>

<div class="label_div captcha">
<?=$const[27];?>
</div>
<div class="input_div">
<input type="text" class="required i_captcha" id="captcha" name="captcha" value="">
</td><td><img src="/template/common/captcha/images/image.php?<? echo time(); ?>" style="margin-left:6px;" width="132" height="30" alt="captcha">
</div>

</td>
</tr>
</table>


</td></tr><tr><td>
<input type="submit" class="submit" value="<?=$const[28];?>">

</td>
</tr>
</table>
</form>

<div class="clear"></div>
Hartamon
На сайте с 04.07.2006
Offline
165
#1

Решение Вам практически сказали в этой теме. Нужно только немного подключить голову и google

<?


if($_REQUEST["script"]=="feedback"){

header("Location: thank_you.html");
}
else
{
?>
код формы
<?
}
?>
[Удален]
#2

Hartamon, спасибо. Но не получается у меня. Всё равно показывается прежняя страница, а не thank_you.html.

Вот такой код сделал:

<div class="clear"></div>
<script type="text/javascript" src="/template/common/js/jquery.validate.js"></script>
<script type="text/javascript" src="/template/common/js/messages_<?=$lang;?>.js"></script>
<script type="text/javascript" src="/template/common/js/feedback.validate.js"></script>
<div class="clear"></div>
<div style="display:<?=$display;?>">
<h3><?=nl2br($const[29]);?></h3>
</div>

<?

if($_REQUEST["script"]=="feedback"){

header("Location: thank_you.html");
}
else
{
?>
<form id="feedform" method="post" action="">

<table class="form" border="0" bgcolor="#eaeaea" cellspacing="16" cellpadding="0" width="100%">
<tr>
<td>
<div class="label_div">
<input type="hidden" name="script" value="feedback">
<?=$const[24];?>
<input type="hidden" value="<?=$const[24];?>" name="label[1]">
<input type="hidden" value="name" name="data[1]">
</div>

<input size="32" type="text" id="name" name="name" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[32];?>
<input type="hidden" value="<?=$const[32];?>" name="label[10]">
<input type="hidden" value="phone" name="data[10]">
</div>

<input size="32" type="text" id="phone" name="phone" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[25];?>
<input type="hidden" value="<?=$const[25];?>" name="label[2]">
<input type="hidden" value="email" name="data[2]">
</div>

<input size="32" type="text" id="email" name="email" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[26];?>
<input type="hidden" value="<?=$const[26];?>" name="label[3]">
<input type="hidden" value="message" name="data[3]">
</div>

<!textarea cols="59" rows="9" id="message" name="message" style="width:100%"></!textarea></td></tr><tr><td>

<table class="form" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>

<div class="label_div captcha">
<?=$const[27];?>
</div>
<div class="input_div">
<input type="text" class="required i_captcha" id="captcha" name="captcha" value="">
</td><td><img src="/template/common/captcha/images/image.php?<? echo time(); ?>" style="margin-left:6px;" width="132" height="30" alt="captcha">
</div>

</td>
</tr>
</table>


</td></tr><tr><td>
<input type="submit" class="submit" value="<?=$const[28];?>">

</td>
</tr>
</table>
</form>
<?
}
?>
ParserYa
На сайте с 04.10.2010
Offline
29
#3

А что открывается по адресу http://ваш_сайт.ру/thank_you.html ?

[Удален]
#4
ParserYa:
А что открывается по адресу http://ваш_сайт.ру/thank_you.html ?

В том-то и дело, что не редиректится на http://ваш_сайт.ру/thank_you.htm!

Просто на тойже страничке показывается.

Hartamon
На сайте с 04.07.2006
Offline
165
#5

Заголовки должны отправляться перед телом документа, а у вас перед header() вот это:


<div class="clear"></div>
<script type="text/javascript" src="/template/common/js/jquery.validate.js"></script>
<script type="text/javascript" src="/template/common/js/messages_<?=$lang;?>.js"></script>
<script type="text/javascript" src="/template/common/js/feedback.validate.js"></script>
<div class="clear"></div>
<div style="display:<?=$display;?>">
<h3><?=nl2br($const[29]);?></h3>
</div>

[Удален]
#6

Хм, не понятно, куда конкретно тогда поставить:

<div class="clear"></div>

<script type="text/javascript" src="/template/common/js/jquery.validate.js"></script>
<script type="text/javascript" src="/template/common/js/messages_<?=$lang;?>.js"></script>
<script type="text/javascript" src="/template/common/js/feedback.validate.js"></script>
<div class="clear"></div>
<div style="display:<?=$display;?>">
<h3><?=nl2br($const[29]);?></h3>
</div>

:(

Hartamon
На сайте с 04.07.2006
Offline
165
#7

Перед <form id="feedform" method="post" action=""> ?

ParserYa
На сайте с 04.10.2010
Offline
29
#8

что за мода зафигачить все в один файл? и ПХП и ХТМЛ и все смешать..

В самое начало файла поставьте условие if($_REQUEST["script"]=="feedback"){ и так далее, а потом напишите else { и туда уже свой ХТМЛ код..

atbk:
В том-то и дело, что не редиректится на http://ваш_сайт.ру/thank_you.htm!

Я спросил, что открывается, если в браузере вбить эту страницу?

Hartamon
На сайте с 04.07.2006
Offline
165
#9
ParserYa:
что за мода зафигачить все в один файл? и ПХП и ХТМЛ и все смешать..

главное понимать, что делаешь, а не тыкать код наугад :)

[Удален]
#10
ParserYa:


Я спросил, что открывается, если в браузере вбить эту страницу?

Если в браузере вбить эту страницу, то покажется ошибка 404. Так как саму страницу я не добавил - но это не суть как важно. Важно чтобы редирект работал, а он не сработал.

Я очень извиняюсь ...

atbk добавил 11.02.2011 в 14:49

Hartamon:
Перед <form id="feedform" method="post" action=""> ?

Сделал так, но всё равно не редиректится, а остаётся на той-же страничке. Вот код:

<?

if($_REQUEST["script"]=="feedback"){

header("Location: thank_you.html");
}
else
{
?>

<div class="clear"></div>
<script type="text/javascript" src="/template/common/js/jquery.validate.js"></script>
<script type="text/javascript" src="/template/common/js/messages_<?=$lang;?>.js"></script>
<script type="text/javascript" src="/template/common/js/feedback.validate.js"></script>
<div class="clear"></div>
<div style="display:<?=$display;?>">
<h3><?=nl2br($const[29]);?></h3>
</div>

<form id="feedform" method="post" action="">

<table class="form" border="0" bgcolor="#eaeaea" cellspacing="16" cellpadding="0" width="100%">
<tr>
<td>
<div class="label_div">
<input type="hidden" name="script" value="feedback">
<?=$const[24];?>
<input type="hidden" value="<?=$const[24];?>" name="label[1]">
<input type="hidden" value="name" name="data[1]">
</div>

<input size="32" type="text" id="name" name="name" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[32];?>
<input type="hidden" value="<?=$const[32];?>" name="label[10]">
<input type="hidden" value="phone" name="data[10]">
</div>

<input size="32" type="text" id="phone" name="phone" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[25];?>
<input type="hidden" value="<?=$const[25];?>" name="label[2]">
<input type="hidden" value="email" name="data[2]">
</div>

<input size="32" type="text" id="email" name="email" maxlength="100" value=""></td></tr><tr><td>

<div class="label_div">
<?=$const[26];?>
<input type="hidden" value="<?=$const[26];?>" name="label[3]">
<input type="hidden" value="message" name="data[3]">
</div>

<!textarea cols="59" rows="9" id="message" name="message" style="width:100%"></!textarea></td></tr><tr><td>

<table class="form" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>

<div class="label_div captcha">
<?=$const[27];?>
</div>
<div class="input_div">
<input type="text" class="required i_captcha" id="captcha" name="captcha" value="">
</td><td><img src="/template/common/captcha/images/image.php?<? echo time(); ?>" style="margin-left:6px;" width="132" height="30" alt="captcha">
</div>

</td>
</tr>
</table>


</td></tr><tr><td>
<input type="submit" class="submit" value="<?=$const[28];?>">

</td>
</tr>
</table>
</form>

<?
}
?>
12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий