我如何使用HTML复选框将1或0插入到mysql布尔值中

时间:2015-08-15 11:29:40

标签: php mysql

我正在尝试为作业创建一个注册表,但我遇到困难,因为我必须允许管理员权限所以我决定在我的表中创建一个名为administrator的列作为布尔值,即true或false。在我的注册表上我希望使用一个复选框,如果它被检查他们是管理员,如果没有那么他们不是。

如何使复选框= 1或0到mysql语句?

这是注册的代码:

     <form method="POST" action="new-user 2.php">
             <td>Full Name</td><td>
             <input type="text" name="name"></td>
            </tr> 
            <tr>
             <td>Email</td>
             <td> 
             <input type="text" name="email"></td> 
             </tr> 
             <tr>
            <td>UserName</td>
            <td> 
            <input type="text" name="user">
            </td> </tr> 
            <tr> 
            <td>Password</td>
            <td> 
            <input type="password" name="pass">
            </td>
            </tr> 
            <tr>
            <td>Confirm Password </td>
            <td><input type="password" name="cpass">
            </td> 
            </tr> 
            </tr> 
            <tr>
            <td>Administrator </td>
            <td><input type="checkbox" name="cbox" />
            </td> 
            </tr> 
            <tr> 
            <td>
            <input id="button" type="submit" name="submit" value="Register">
            </td> 
            </tr> 
        </form>
    </table>
    </fieldset>
    </div> 
    </div>
</body>
</html>
<?php
if(isset($_POST['cbox']))
{
    $administrator ='1';
}
else
{
    $administrator ='0';
}
?>

谢谢

更新

新的user2.php代码如下:

require_once('connection.php');
function NewUser() 
{ 
#$salt = 'sadfh9832asd34rf28asjvddap';
#$crypt = crypt ($salt .$password);

    $fullname = $_POST['name'];
    $userName = $_POST['user'];
    $email = $_POST['email'];
    $administrator =$_POST['administrator'];
    #$password = crypt($_POST['pass']);
        $password = md5($_POST['pass']);
        echo "<hr>".$_POST['pass'] . "=[$password]<hr>";
    #$password = stripslashes($password); 
    #$password = mysql_real_escape_string($password);

    $query = "INSERT INTO `WebsiteUsers`(`fullname`, `userName`, `email`, `pass`, `administrator`)  VALUES ('$fullname','$userName','$email','$password', 'administrator')"; 
    $data = mysql_query ($query)or die(mysql_error()); 
        echo "<hr>$query<hr>";

    if($data) 
    { 
    echo "YOUR REGISTRATION IS COMPLETED..."; 
    } 
}

 function SignUp() 
 { 
     if(!empty($_POST['user'])) //checking the 'user' name which is from Sign-Up.html, is it empty or have some text
     { $query = mysql_query("SELECT * FROM WebsiteUsers WHERE userName = '$_POST[user]' 
     AND pass = '$_POST[pass]'") or die(mysql_error());

     if(!$row = mysql_fetch_array($query) or die(mysql_error())) 
     { 
     newuser(); 
     } 
     else
     { 
     echo "SORRY...YOU ARE ALREADY A REGISTERED USER..."; }
     } 
} 
if(isset($_POST['submit']))
{ 
     SignUp(); 
} 

#header("location:index.html");
 ?>

<?php
$cookie_name = "cookieuser";
$cookie_value = $fullname;
setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 86400 = 1 day
?>

2 个答案:

答案 0 :(得分:0)

为此复选框提供一个值

<input type="checkbox" name="cbox" value="1" />

然后检查该值是否像这样分配给$ _POST变量。

if($_POST['cbox'] == '1')

下面列出了完整的代码。我做了一些修改。

     <form method="POST" action="new-user 2.php">
             <td>Full Name</td><td>
             <input type="text" name="name"></td>
            </tr> 
            <tr>
             <td>Email</td>
             <td> 
             <input type="text" name="email"></td> 
             </tr> 
             <tr>
            <td>UserName</td>
            <td> 
            <input type="text" name="user">
            </td> </tr> 
            <tr> 
            <td>Password</td>
            <td> 
            <input type="password" name="pass">
            </td>
            </tr> 
            <tr>
            <td>Confirm Password </td>
            <td><input type="password" name="cpass">
            </td> 
            </tr> 
            </tr> 
            <tr>
            <td>Administrator </td>
            <td><input type="checkbox" name="cbox" value="1" />
            </td> 
            </tr> 
            <tr> 
            <td>
            <input id="button" type="submit" name="submit" value="Register">
            </td> 
            </tr> 
        </form>
    </table>
    </fieldset>
    </div> 
    </div>
</body>
</html>


<?php
if(isset($_POST['cbox']))
{
    if($_POST['cbox'] == '1'){
        $administrator ='1';
    }else{
        $administrator ='0';
    }
}else
{
    $administrator ='0';
}
?>

答案 1 :(得分:0)

根据您的表单elemenet,<form method="POST" action="new-user 2.php">此脚本正在提交给new-user 2.php。如果此页面为new-user 2.php,则$administrator将为10(作为字符串)。

如果此页面不是new-user 2.php,那么请检查:

<?php
if(isset($_POST['cbox']))
{
    $administrator ='1';
}
else
{
    $administrator ='0';
}
?>

将无法运行,因为PHP仅在页面加载时执行;页面加载后无法使用。

$_POST['cbox']要么设置为on,要么不设置。

您可以在使用此POST提交表单后输出print_r($_POST);来查看提交的所有值。

如果是new-user 2.php,请将您的问题更新到可以看到$administrator的使用情况的位置。

根据您的更新代码,问题是您正在检查错误的表单元素。您的表单元素为cbox,而不是administrator。您还可以使用此代码进行SQL注入,并使用已弃用的驱动程序mysql_。您应该切换到mysqlipdo

关于您的代码......您的NewUser函数应更新为:

function NewUser() 
{ 
#$salt = 'sadfh9832asd34rf28asjvddap';
#$crypt = crypt ($salt .$password);

    $fullname = mysql_real_escape_string($_POST['name']);
    $userName = mysql_real_escape_string($_POST['user']);
    $email = mysql_real_escape_string($_POST['email']);
    $administrator = isset($_POST['cbox']) ? 1 : 0;
    #$password = crypt($_POST['pass']);
    $password = md5($_POST['pass']);
    echo "<hr>".$_POST['pass'] . "=[$password]<hr>";
    #$password = stripslashes($password); 
    #$password = mysql_real_escape_string($password);

    $query = "INSERT INTO `WebsiteUsers`(`fullname`, `userName`, `email`, `pass`, `administrator`)  VALUES ('$fullname','$userName','$email','$password', $administrator)"; 
    $data = mysql_query ($query)or die(mysql_error()); 
        echo "<hr>$query<hr>";

    if($data) 
    { 
    echo "YOUR REGISTRATION IS COMPLETED..."; 
    } 
}

请注意转义和$administrator = isset($_POST['cbox']) ? 1 : 0;