【问题标题】:PHP echo and redirectPHP 回显和重定向
【发布时间】:2014-03-01 11:16:08
【问题描述】:
<?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 回显,然后在 10 秒后重定向。但是使用此代码,php echo 不会显示。

【问题讨论】:

    标签: php redirect echo


    【解决方案1】:

    因为您正在为页面生成 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>';
    

    【讨论】:

    • 所以,我有一个输入表单,这个输入表单由 php.ini 处理。有没有办法把这个 php 嵌入到 HTML 中?
    • 这不是 PHP,这是 HTML 标记:您可以使用 PHP 生成此 HTMl 标记...
    • ...但是如果你在一个包含表单的页面上放置一个定时重定向,你会得到很多恼火的用户,他们已经部分完成了表单的填写,突然被重定向
    • 是否可以抓取 PHP 回显以将其显示在 html 页面上?
    • 我真的不明白你在问什么:是你的 PHP 代码生成 HTML 标记,它可以回显你想要回显的任何内容
    【解决方案2】:

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

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

    10000 毫秒 = 10 秒

    【讨论】:

    • JS 将被禁用,并且繁荣,失败...考虑改用meta,阅读马克的回答
    • 是的,我同意你的看法:)。但是,并非在所有情况下都可以更改页面的metas(例如,如果您只能访问网站的内容,但不能更改模板)。 Thegesuser 没有指定所有上下文,所以我发布了这个替代方案。
    • 有道理:)虽然他也必须在模板中提供脚本..虽然+1
    • 也可以通过body onload&lt;body onload="timer=setTimeout(function(){ window.location='http://www.google.com';}, 3000)"&gt;
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我的做法与@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>';
      ?>
      

      【讨论】:

        【解决方案5】:

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

        echo 自己发送标头,因此不会再次发送另一个标头。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-08
          • 2019-04-08
          • 2021-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多