【问题标题】:Help PHP and HTML Checkboxes帮助 PHP 和 HTML 复选框
【发布时间】:2011-09-25 13:45:50
【问题描述】:

我在使用 Checkboxes 和 PHP 时需要帮助。我只是想确定是否使用 PHP 选中复选框的值。

例子:

<?php
include ("inc/conf.php");
$id = $_SESSION['id'];

if(isset($_POST['subfrm'])){
  $gtid = $_REQUEST['tid'];

  $ch1 = $_REQUEST['ch1'];
  if($ch1 == "ON"){
    $gch1 = "Y";
  } else {
    $gch1 = "N";
  }

  $ch2 = $_REQUEST['ch2'];
  if($ch2 == "ON"){
    $gch2 = "Y";
  } else {
    $gch2 = "N";
  }

  mysql_query("UPDATE SET ctable ch1='$gch1', ch2='$gch2' WHERE id='$gtid'");
}
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="hidden" name="tid" value="<?php echo $id; ?>" />
<input type="checkbox" name="ch1" />Hats
<input type="checkbox" name="ch2" />Watches
<textarea name="thetext"></textarea>
<input type="submit" name="subfrm" value="PUNCH ME" />
</form>

【问题讨论】:

  • 请在查询数据库之前清理用户输入。使用您当前的代码,您很容易受到 SQL 注入的攻击

标签: php mysql forms checkbox


【解决方案1】:

试试这个:

<?php
$ch1 = isset($_REQUEST['ch1']);

如果未选中复选框,则其对应的变量将不会显示在请求中。

【讨论】:

    【解决方案2】:
    if(isset($_REQUEST["ch1"])){
        $gch1 = "Y";
    } else {
        $gch1 = "N";
    }
    if(isset($_REQUEST["ch2"])){
        $gch2 = "Y";
    } else {
        $gch2 = "N";
    }
    

    您不需要检查该值是什么,因为如果不检查,它将不会提交任何数据,如果是,它将提交 on 的值。

    【讨论】:

    • 谢谢 :) 我也刚刚发现导致一切的错误是文本区域信息进入 SQL 而不是复选框。一个简单的 mysql_real_escape_string() 解决了一切。令人惊讶的是,一个错误如何导致令人头疼的问题。不管怎样,谢谢。现在它又开始为我工作了。
    【解决方案3】:

    通过这个一起。它会让您知道选择了哪个复选框,并且还会保留对表单提交的检查。

    <?php
    $message = '';
    $ch1_checked = false;
    $ch2_checked = false;
    if(isset($_POST['submit_button'])) {
        // Form was submitted
        $ch1_checked = isset($_POST['ch1']);
        $ch2_checked = isset($_POST['ch2']);
    
        if($ch1_checked && $ch2_checked) {
            $message .= 'Both were checked.';
        } else if($ch1_checked) {
            $message .= 'Checkbox 1 was checked.';
        } else if($ch2_checked) {
            $message .= 'Checkbox 2 was checked.';
        } else {
            $message .= 'Neither were checked.';
        }
    }
    ?>
    
    <?php echo $message; ?>
    <form id="my_form" action="test.php" method="post">
        <input type="checkbox" name="ch1" value="ch1" <?php if($ch1_checked) echo 'checked'; ?> />Checkbox 1<br />
        <input type="checkbox" name="ch2" value="ch2" <?php if($ch2_checked) echo 'checked'; ?> />Checkbox 2<br />
        <input type="submit" name="submit_button" value="Go!" />
    </form>
    

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      相关资源
      最近更新 更多