【问题标题】:Submit button disappears when accessing cookies访问 cookie 时提交按钮消失
【发布时间】:2014-09-22 19:38:04
【问题描述】:

当我尝试使用内联 php 访问 cookie 时,无论出于何种原因,我的提交都消失了。

    <div id='add_form'>
        <form id='form' method='post' action='reg.do.php'>
            <label for='date'>Date of Charge:</label><input type='text' name='date' id='date' maxlength='10' value='<?php echo (isset($_POST['name']) ? sanitize($_POST['name']) : ''); ?>' ><br>
            <label for='vendor'>Vendor:</label><input type='text' name='vendor' id='vendor' value='<?php echo (isset($_POST['vendor']) ? sanitize($_POST['vendor']) : ''); ?>' ><br>
            <label for='amount'>Amount:</label><input type='text' name='amount' id='amount' value='<?php echo (isset($_POST['amount']) ? sanitize($_POST['amount']) : ''); ?>' ><br>
            <label for='service'>Description of Service:</label><input type='text' name='service' id='service' value='<?php echo (isset($_POST['service']) ? sanitize($_POST['service']) : ''); ?>' ><br>
            <label for='winner'>Winner:</label><input type='text' name='winner' id='winner' value='<?php echo (isset($_POST['winner']) ? sanitize($_POST['winner']) : ''); ?>' ><br>
            <label for='job'>Job Number:</label><input type='text' name='job' id='job' value='<?php echo (isset($_POST['job']) ? sanitize($_POST['job']) : ''); ?>' ><br>
            <input type='hidden' name='user' id='user' value='<?php echo (isset($_COOKIE['cookie_id']) ? sanitize($_COOKIE['cookie_id']) : ''); ?>' >
            <input type='submit' value='Submit'>
        </form>
    </div>

如果我去掉最后一个隐藏的输入字段或将其中的$_COOKIE 访问更改为$_POST,那么提交按钮就会出现。我该如何解决这个问题?

【问题讨论】:

  • 您是否从 cookie 值中得到任何单引号或撇号?这会破坏 html 属性,并可能导致下一项显示不正确(或根本不显示)。
  • 我不应该因为 $_COOKIE['cookie_id'] 应该返回没有任何特殊字符的名字和姓氏。

标签: javascript php jquery html cookies


【解决方案1】:

http://php.net/manual/ro/reserved.variables.cookies.php,我觉得你需要在cookie上使用htmlspecialchars函数。

【讨论】:

  • sanitize函数在其过滤过程中包含htmlspecialchars,所以在输出之前是经过函数的。
  • 你能复制粘贴页面源中的 div 代码吗?
  • 如果你打开你的页面,右键单击并按“显示页面源”或类似的东西,然后按 ctrl+f,输入 '
    ' 然后复制粘贴部分。
【解决方案2】:

您是否启用了 display_errors?也许您的代码中有错误,因此 php 中断,例如您的内联 IF 条件中未关闭的 ) ;-)

试试这个...

<div id='add_form'>
    <form id='form' method='post' action='reg.do.php'>
        <label for='date'>Date of Charge:</label><input type='text' name='date' id='date' maxlength='10' value='<?php echo (isset($_POST['name']) ? sanitize($_POST['name']) : ''); ?>' ><br>
        <label for='vendor'>Vendor:</label><input type='text' name='vendor' id='vendor' value='<?php echo (isset($_POST['vendor']) ? sanitize($_POST['vendor']) : ''); ?>' ><br>
        <label for='amount'>Amount:</label><input type='text' name='amount' id='amount' value='<?php echo (isset($_POST['amount']) ? sanitize($_POST['amount']) : ''); ?>' ><br>
        <label for='service'>Description of Service:</label><input type='text' name='service' id='service' value='<?php echo (isset($_POST['service']) ? sanitize($_POST['service']) : ''); ?>' ><br>
        <label for='winner'>Winner:</label><input type='text' name='winner' id='winner' value='<?php echo (isset($_POST['winner']) ? sanitize($_POST['winner']) : ''); ?>' ><br>
        <label for='job'>Job Number:</label><input type='text' name='job' id='job' value='<?php echo (isset($_POST['job']) ? sanitize($_POST['job']) : ''); ?>' ><br>
        <input type='hidden' name='user' id='user' value='<?php echo ( isset($_COOKIE['cookie_id']) ) ? sanitize($_COOKIE['cookie_id']) : ''; ?>' >
        <input type='submit' value='Submit'>
    </form>
</div>

顺便说一句...最好使用某种模板引擎而不是内联 php 代码。

【讨论】:

  • 它们已启用,所有括号和括号配对似乎都很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多