PHP回显和重定向

时间:2014-03-01 11:16:09

标签: php redirect echo

<?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后重定向。但是使用此代码,不会显示php echo

5 个答案:

答案 0 :(得分:6)

因为您正在使用生成页面的html代码,而不是在浏览器中将其显示给最终用户......

在使用元刷新重定向到浏览器之前,请暂停一下。生成包含以下内容的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>';

答案 1 :(得分:2)

在向用户发送一些数据后,您无法从用户重定向用户。 但是,您可以通过在页面上使用javascript来实现此目的:

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

10000ms = 10秒

答案 2 :(得分:1)

我和@Mark Ba​​ker非常相似。除了使用$var而不是$_POST['name']

<?php $name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent = "From: $name \n Message: $message";
$recipient = "me@email.com";
$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>';
?>

答案 3 :(得分:0)

你不能在echo语句后设置标题。

echo发送标头本身,因此不再发送另一个标头。

答案 4 :(得分:0)

PHP是服务器端编程语言。一旦将其发送到客户端,它就不能再更新页面,并返回作为HTML页面生成的整个页面。 它获得一个请求并生成响应为HMTL并将其发送到客户端(在本例中为浏览器),sleep(10),停止PHP脚本 在生成响应之前持续10秒。 这意味着它在完成请求之前不会回应任何内容。