2014-03-01 49 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>'; 
?>