【问题标题】:html5 php form validation issuehtml5 php表单验证问题
【发布时间】:2011-05-27 20:54:08
【问题描述】:

我有一个带有 php 表单的 html5 页面,但我遇到了一些错误。在最初开发时,表单本身在页面上验证了 100% HTML5(名为 index.php)。我放入的页面(index.html)也验证了 100%。将表单的代码复制到我的页面中导致了一些验证错误。这对我来说没有意义,因为它们都是 100% 准确的。

我不确定包含表单的页面现在应该是 index.php 还是保留为 index.html。

建议?

以下是 .HTML 和 .PHP 格式的 HTML 和验证错误

HTML:

<body>
  <div id="vig"></div>
  <header>
    <h1>LARA</h1>
  </header>  
  <div id="main" class="corners" role="main">
    <div id="jquery_jplayer_1" class="jp-jplayer"></div>
    <div class="jp-audio">
      <div class="jp-type-playlist">
        <div id="jp_interface_1" class="jp-interface">
          <ul class="jp-controls">
            <li><a href="#" class="jp-previous blue" tabindex="1">previous</a></li>
            <li><a href="#" class="blue jp-play" tabindex="1">play</a></li>
            <li><a href="#" class="blue jp-pause" tabindex="1">pause</a></li>
            <li><a href="#" class="blue jp-stop" tabindex="1">stop</a></li>
            <li><a href="#" class="blue jp-next" tabindex="1">next</a></li>
          </ul>
          <div class="jp-progress corners">
            <div class="jp-seek-bar corners blue">
              <div class="jp-play-bar corners"></div>
            </div>
          </div>
          <div class="time">
            <div class="jp-current-time"></div>
            <p id="name"></p>
            <div class="jp-duration"></div>
          </div>
        </div>
      </div>
    </div>
    <div id="mail"> 
      <form id="signup" action="<?=$_SERVER['PHP_SELF']; ?>" method="get"> 
        <fieldset>
          <input type="email" name="email" id="email" class="corners" placeholder="Enter your email address" />
          <span id="response">
            <? require_once('php/store-address.php'); if($_GET['submit']){ echo storeAddress(); } ?>
          </span>
          <input type="submit" id="submit" class="corners blue" value="Go" />           
        </fieldset> 
      </form> 
    </div>
  </div>  
  <footer>
  </footer>
</body>

在 .HTML 中出现这些错误:

Line 67, Column 73: Bad value <?=$_SERVER['PHP_SELF']; ?> for attribute action on element form: Illegal character in query component.
        <form id="signup" action="<?=$_SERVER['PHP_SELF']; ?>" method="get"> 
        Syntax of IRI reference:
        Any URL. For example: /hello, #canvas, or http://example.org/. Characters should be represented in NFC and spaces should be escaped as %20.
 Line 71, Column 7: Saw <?. Probable cause: Attempt to use an XML processing instruction in HTML. (XML processing instructions are not supported in HTML.)
       <? require_once('php/store-address.php'); if($_GET['submit']){ echo storeA…

作为 .PHP 出现这些错误:

 Line 74, Column 276: End of file seen and there were open elements.
    …s/c09/h02/mnt/127740/domains/lara.fm/html/index.php</b> on line <b>71</b><br />
✉
 Line 70, Column 23: Unclosed element span.
    <span id="response">
✉
 Line 68, Column 14: Unclosed element fieldset.
    <fieldset>
✉
 Line 67, Column 56: Unclosed element form.
    <form id="signup" action="/index.php" method="get"> 
✉
 Line 66, Column 21: Unclosed element div.
    <div id="mail"> 
✉
 Line 41, Column 47: Unclosed element div.
    <div id="main" class="corners" role="main">
✉
 Line 36, Column 22: Unclosed element div.
    <div id="container">

【问题讨论】:

  • 那个信封图标是错误的一部分吗?

标签: php validation html


【解决方案1】:

您的文档是 HTML 和 PHP 的组合。源代码本身永远无法验证为 HTML。

您应该验证脚本输出是否符合 HTML,而不是源代码本身。

【讨论】:

  • 这可能就是问题所在。
  • @technopeasant - 请参阅此 Firefox 插件以进行浏览器内验证:addons.mozilla.org/en-US/firefox/addon/html-validator
  • @Jared Farrish - 仅限 Windows。其他附加组件似乎没有那么有名气。有什么 Mac 推荐吗?
  • @technopeasant - HTML Tidy 插件仅适用于 Windows?哇,这很奇怪。
【解决方案2】:

您的 .html 文件未被解析,这就是您在 .html 版本上收到错误的原因。请注意,通常 PHP 没有设置为解析以 .html 结尾的文件(.php、.php3、.php4、.php5 等...不过,通常取决于您的 php.ini)。

注意

如果您要复制/粘贴源 PHP 代码而不是脚本的输出(浏览器看到的),这可能是您的问题(正如 Jon Cram 指出的那样)。要进行浏览器内验证,请结帐:

https://addons.mozilla.org/en-US/firefox/addon/html-validator/

这通常比将代码复制/粘贴到 w3c 验证器中要容易得多。

【讨论】:

  • 您的回答似乎是最可信的。我应该怎么做才能使此页面尽可能稳定和经过验证?如果您有想法,请告诉我,我将为此提出另一个问题。一些想法.. 有没有办法可以更好地将 PHP 实现到 HTML 页面中?也许使用 JavaScript 来启动 PHP 字符串?
  • 我认为标记本身没有任何问题。 PHP 在服务器上进行解析,因此如果您的页面上有 PHP,请确保在将其输出到浏览器之前对其进行解析。你必须有一个 .html 文件结尾吗?如果没有,只需使用 .php 文件结尾。否则,您可以使用 jQuery/Ajax 从服务器获取解析 PHP 结果的信息。
  • 我明白了.. 好吧,我将它重命名为 index.php,我想这可以解决所有问题!感谢您的帮助。
【解决方案3】:

您需要将文件扩展名设为 .php,并将 echo 设为 PHP 变量的值。目前,您对它们的内容什么也不做。

【讨论】:

    【解决方案4】:

    在您的.php 错误中,第一个错误可能意味着您的 PHP 代码正在生成错误,这导致您的 HTML 无法验证。

    我猜你的这部分 PHP 代码是罪魁祸首:

    <? require_once('php/store-address.php'); if($_GET['submit']){ echo storeAddress(); } ?>
    

    此代码可能存在许多问题——您需要的文件可能不存在,storeAddress() 可能不存在,或者$_GET['submit'] 无法正常工作。尝试使用isset($_GET['submit'])array_key_exists('submit', $_GET) 看看是否有效。

    【讨论】:

      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多