2014-03-01 48 views
3
<?php 
$dateiname = 'daten.txt'; 
$inhalt =$_POST['vorname'].' '.$_POST['nachname']."; ".$_POST['abteilung'].";".$_POST['strecke']."; ".$_POST['groesse'].' ; '.$_POST['tag'].'.'.$_POST['monat'].'.'.$_POST['jahr'].PHP_EOL.""; 
echo "Sie haben folgende Angaben gemacht:<br>"; 
echo "Name: $_POST[vorname] $_POST[nachname] 
<br>Abteilung: $_POST[abteilung] 
<br>Geburtsdatum: $_POST[tag].$_POST[monat].$_POST[jahr] 
<br>Strecke: $_POST[strecke] 
<br>Groesse: $_POST[groesse]<br> "; 
echo "Vielen Dank!"; 
$handle = @fopen($dateiname, "ab+"); 
fwrite($handle, $inhalt); 
fclose ($handle); 
if (file_exists($dateiname) == true) { 
@chmod ($dateiname, 0757); 
} 
sleep(10); 
header("location: http://google.com"); 
?> 

嘿家伙,我有一个问题。我尝试做一个PHP回声,然后在10secs之后重定向。但有了这个代码,因为你在产生的HTML页面,而不是在浏览器它显示给最终用户的代码睡不显示PHP回声和重定向

回答

6

PHP的回声......

在使用元刷新在浏览器中重定向之前,请暂停。生成包含类似HTML:

<html> 
    <head> 
     <meta http-equiv="refresh" content="3;url=http://www.somewhere.com/" /> 
    </head> 
    <body> 
     <h1>Redirecting in 3 seconds...</h1> 
    </body> 
</html> 

编辑

<?php 
$dateiname = 'daten.txt'; 
$inhalt =$_POST['vorname'].' '.$_POST['nachname']."; ".$_POST['abteilung'].";".$_POST['strecke']."; ".$_POST['groesse'].' ; '.$_POST['tag'].'.'.$_POST['monat'].'.'.$_POST['jahr'].PHP_EOL.""; 

echo '<html> 
    <head> 
     <meta http-equiv="refresh" content="10;url=http://www.google.com/" /> 
    </head> 
    <body>'; 

echo "Sie haben folgende Angaben gemacht:<br>"; 
echo "Name: $_POST[vorname] $_POST[nachname] 
<br>Abteilung: $_POST[abteilung] 
<br>Geburtsdatum: $_POST[tag].$_POST[monat].$_POST[jahr] 
<br>Strecke: $_POST[strecke] 
<br>Groesse: $_POST[groesse]<br> "; 
echo "Vielen Dank!"; 
$handle = @fopen($dateiname, "ab+"); 
fwrite($handle, $inhalt); 
fclose ($handle); 
if (file_exists($dateiname) == true) { 
@chmod ($dateiname, 0757); 
} 

echo '</body></html>'; 
+0

所以,我有一个输入表单,且此输入形式是由PHP来处理。有没有办法将这个php嵌入到HTML中? – thegesuser

+0

这不是PHP,这是HTML标记:您可以使用PHP生成此HTMl标记... –

+0

...但如果您在包含表单的页面上定时重定向,您将获得很多恼火的用户谁已部分填写表格突然被重定向 –

0

你不能回声语句后设置标题。

回声发送标题本身,所以另一个标题不会再次发送。

+0

好的谢谢。不知道那 – thegesuser

2

您不能在用户发送给用户一些数据之后重定向php用户。 但是您可以使用您的网页上的JavaScript实现这一点:

<script> 
    setTimeout(function(){ 
      windows.location = "next_page.html"; 
    }, 10000); 
</script> 

10000ms = 10秒

+0

JS将被禁用,并且繁荣,失败...考虑使用'meta'来代替,请阅读Mark的回答 –

+0

是的,我同意你:)。但是,并非所有情况下都可以更改页面的“元数据”(例如,如果您只能访问网站的内容,但无法更改模板)。 Thegesuser没有指定所有的上下文,所以我发布了这个选择。 – Bobby

+1

有道理:)尽管他必须在模板中输入脚本。虽然+1 –

0

PHP是服务器端编程语言。一旦它被发送到客户端,它就不能再更新页面,并且它返回整个页面作为HTML页面生成。 它得到一个请求并生成HMTL的响应并发送给客户端(在这种情况下,浏览器),sleep(10),停止PHP脚本 10秒之前生成响应。这意味着它在完成请求之前不回应任何东西。

1

我做得非常类似于@Mark Ba​​ker。除了使用$var代替$_POST['name']

<?php $name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$formcontent = "From: $name \n Message: $message"; 
$recipient = "[email protected]"; 
$subject = "My Contact Form"; 
$mailheader = "From: $email \r\n"; 
mail($recipient, $subject, $formcontent, $mailheader) or die("Son of a  biscuit, something went wrong!"); 
echo '<html> 
<head> 
    <meta http-equiv="refresh" content="4;url=http://www.mywebsite.com/" /> 

</head> 
<body> 
    <div>'; 
    echo "<h1>Thank you for the message: </h1><br>"; 
    echo "Name: $name <br> 
      Email: $email <br> 
      Message: $message"; 
    echo '</div></body></html>'; 
?>