IE8 不显示 php echo

IE8 is not displaying php echo

我正在使用以下代码在点击开始按钮时在文本字段中显示当前系统时间。此代码在 FireFox 和 Chrome 中运行良好,但 IE 8 在点击开始按钮时不显示时间和日期。如果我点击提交按钮,它就会工作。

请指教我这里做错了什么:

    <form name="form1" action='' method='post'>
    <table>
      <tr>
            <th>
            <p>Vendor was contacted at:</p>
            <button name="time" >Start</button><br>
            <?php
            if (isset($_POST['start']))
            {
            $date_start = date('m-d-Y H:i:s');;
            $_SESSION['start'] = $date_start;
            }
            ?>
            <br>
            <input name="start" type="text" class="textfield" value="<?php echo $_SESSION['start']; ?>"
            <br>
            </th>
    </tr>
     <tr>
        <th>
           <br><input type='submit' name='submit' value='Submit'><br>
        </th>
       </tr>
    </table>
    </form>

您的 HTML 无效。您忘记了 <input

上的 >
<input name="start" type="text" class="textfield" value="<?php echo $_SESSION['start']; ?>">
  • 请完整阅读我的回答,包括 "Footnotes"。

除了关于输入缺少结束字符的另一个答案;不知道会话是否已经开始,正在提交以下答案。

首先,您在评论中说它不会抛出任何 errors/notices。

"@Fred-ii-, the code you suggested doesn't display any errors. – adminhaq 25 mins ago"

如果您没有启动会话,那么您没有正确设置错误报告或未配置为 "display" 通知。

session_start(); 需要驻留在所有使用会话的文件中。如果你试图将数据传递到另一个页面,那也是不清楚的。

输入本身应该包含类似于以下内容的内容:

<b>Notice</b>: Undefined variable: _SESSION in <b>/var/usr/httdocs/folder/file.php</b> on line <b>(line number)</b>

对于value="<?php echo $_SESSION['start']; ?>",所以最好为此使用三元运算符。

即:value="<?php echo !empty($_SESSION['start']) ? $_SESSION['start'] : ""; ?>"

完全测试代码:

<?php 

error_reporting(E_ALL);
ini_set('display_errors', 1);

session_start();

?>

<form name="form1" action='' method='post'>
<table>
  <tr>
        <th>
        <p>Vendor was contacted at:</p>
        <button name="time" >Start</button><br>
        <?php
        if (isset($_POST['start']))
        {
        $date_start = date('m-d-Y H:i:s');

        $_SESSION['start'] = $date_start;
        }
        ?>
        <br>

        <input name="start" type="text" class="textfield" value="<?php echo !empty($_SESSION['start']) ? $_SESSION['start'] : ""; ?>">

        <br>
        </th>
</tr>
 <tr>
    <th>
       <br><input type='submit' name='submit' value='Submit'><br>
    </th>
   </tr>
</table>
</form>

旁注:表单不包含 name 属性,因此您可以安全地将其从声明中删除。

  • 使用我上面的示例代码重新加载您的文件而不重新提交,您将看到输入将自动填充。

error reporting 添加到您的文件的顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:显示错误只应在试运行中进行,绝不能在生产中进行。


脚注:

您可能还需要更改您的按钮:

<button name="time" >Start</button>

<button name="time" type="submit">Start</button>

这是最有可能的问题,因为我只记得我在使用 IE 8 时也遇到过同样的问题。

旁注:IE 是一个非常挑剔的浏览器。它甚至可能不喜欢 <button name="time" > 中的 space,但添加 type="submit" 是最可能的解决方案。

  • 记得查看您的 HTML 来源;在调试方面,它是一个很好的工具。