【问题标题】:Error with Php-form with checkboxes带有复选框的 PHP 表单出错
【发布时间】:2011-12-09 19:38:52
【问题描述】:

我制作了一个 php 页面,其中包含一个表单和复选框以及 POST 方法。 在带有 Internet Explorer 的 Windows 7 上,它可以完美运行。在另一台装有 Windows XP 和 Google Chrome 的计算机上,它不起作用。表单的类型是提交,并且操作发生在同一 php 文件中的方法中。

有谁知道chrome上的php或windows xp上的php是否有一些特殊的问题会搞砸。

这是表格

<form name='test' method='POST' action='' accept-charset='UTF-8'>
<input type="hidden" name="bandnamn" value="<?php echo $bn; ?>" />  
Description and info about the band:<br>
<input type='text' name='bandtext' size='50'><br>

//plus 7 more inputs of type text simular to the one on top of this

Category 1:<br>
<?php 
     $query="SELECT id, kategori FROM punkkategorier"; 
$result = mysql_query ($query);
echo "<select name=kategori1 value=''></option>";                   while($nt=mysql_fetch_array($result))
{
     echo "<option value=$nt[id]>$nt[kategori]</option>";
}
echo "</select>";
?>

//and 2 more Category checkboxes

<br><br>
<input type='submit' name='Submit2' value='Submit'>
</form>

这是提交部分。

if(isset($_POST['Submit2']))
{
$host='localhost'; // Host name 
$username="myusername"; // Mysql username 
$password="mypassword"; // Mysql password 
$db_name="dbname"; // Database name 
$tbl_name="mytablename"; // Table name 



// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");
mysql_set_charset('utf8');

//A MYSQL_QUERY WITH A SELECTSTATEMENT

$result =mysql_query("select id from punkband where bandnamn = '".$_POST['bandnamn']."'");
if($result && mysql_num_rows($result) == 1)
{
    $show_form=1;
    while($row = mysql_fetch_array($result))
    {
        $hiddenbandnamn= $row['id'];
    }
}

}

$show_form=1 表示正确,查看的下一页将是正确的,如果 $show_form 不更改为 =1,则下一页将是错误的。在带有 IE 的 Windows 7 上,它可以完美运行。在带有 Google Chrome 的 Windows XP 上,它不起作用。

【问题讨论】:

  • PHP 无法在 Chrome 中运行。它在 Web 服务器中运行。您的输出 HTML 可能无效。不看代码我们无法判断。
  • 另外,请返回您之前的问题并在适当的时候接受答案。将来您会得到更好更快的帮助。
  • 发布您的一些代码。如果有多个值,您需要在名称中包含 []。
  • $bn 的值是多少?如果它在某些浏览器中导致 HTML 无效,则不会与表单一起发布,并且您的查询不会成功。
  • 另外,在您的表单处理程序上,您已将脚本打开到 SQL 注入攻击。请过滤$_POST['bandnamn']:在您的查询中使用mysql_real_escape_string($_POST['bandnamn'])

标签: php google-chrome windows-xp


【解决方案1】:

您的表单可能提交不正确,具体取决于隐藏输入中$bn 的内容。您需要将变量的内容包装在htmlentities() 中以对其进行编码。

<input type="hidden" name="bandnamn" value="<?php echo htmlentities($bn, ENT_QUOTES); ?>" />  

【讨论】:

  • 我使用瑞典语“åäö”等特殊字符,如果我使用 htmlentities,åäö 将显示不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多