简单的php程序不工作
该复选框工作不正常。它有3个复选框。当我选中这三个复选框时,我没有得到任何错误。但是,当我选中1或2复选框时,会出现如下错误: 注意:第16行的C:\wamp\www\test\secpage.php中的未定义索引:chke简单的php程序不工作,php,Php,该复选框工作不正常。它有3个复选框。当我选中这三个复选框时,我没有得到任何错误。但是,当我选中1或2复选框时,会出现如下错误: 注意:第16行的C:\wamp\www\test\secpage.php中的未定义索引:chke <html> <body> <table> <form method="post" action="secpage.php"> <tr> <td colspan
<html>
<body>
<table>
<form method="post" action="secpage.php">
<tr>
<td colspan="2"><center><h4>Registartion Form</h4></center></td>
</tr>
<tr>
<td>Username : </td>
<td><input type="text" name="txtname" value=""/></td>
</tr>
<tr>
<td>Password : </td>
<td><input type="password" name="txtpass" vale=""/></td>
</tr>
<tr>
<td>Email : </td>
<td><input typ="text" name="txtemail" value=""/></td>
</tr>
<tr>
<td>Address : </td>
<td><textarea name="add" /></textarea></td>
</tr>
<tr>
<td>Subjects : </td>
<td><input type="checkbox" name="chkm" value="Maths"</td>Maths
<td><input type="checkbox" name="chks" value="Science"</td>Science
<td><input type="checkbox" name="chke" value="English"</td>English
</tr>
<tr>
<td>Gender : </td>
<td><input type="radio" name="gen" value="Male"/>Male
<input type="radio" name="gen" value="Female"/>Female
</td>
</tr>
<tr>
<td colspan="2"><center><input type="submit" value="Submit"/></center></td>
</tr>
</body>
</html>
登记表
用户名:
密码:
电邮:
地址:
学科:
密码:
电邮:
地址:
所选主题:
性别:
任何帮助都将不胜感激。未选中的复选框不会在帖子中发送其值。因此,
$\u POST[“chke”]
实际上并不存在。在从帖子中获取值之前,应该检查是否存在
if(isset($_POST["chke"]))
$sube = $_POST["chke"];
未选中的复选框不会在帖子中发送其值。因此,
$\u POST[“chke”]
实际上并不存在。在从帖子中获取值之前,应该检查是否存在
if(isset($_POST["chke"]))
$sube = $_POST["chke"];
您的输入复选框标记不完整。因此PHP无法读取您的post值
此外,如果未“选中”,则不会发送POST值。您的输入复选框标记不完整。因此PHP无法读取您的post值
此外,如果未“选中”,则不会发送POST值。您忘记关闭
复选框。
如果您在未选中复选框的情况下发布表单,那么当您现在看到它时,它会给您错误信息
您可以使用@
忽略此错误,但这不是最佳做法
同时
if(isset($_POST["chkm"]))
{
$subm=$_POST["chkm"];
}
如果设置了值或未使用上述条件,您可以检查
。您忘记关闭复选框。
如果您在未选中复选框的情况下发布表单,那么当您现在看到它时,它会给您错误信息
您可以使用@
忽略此错误,但这不是最佳做法
同时
if(isset($_POST["chkm"]))
{
$subm=$_POST["chkm"];
}
您可以使用上述条件检查是否设置了值。类似以下内容将修复未定义索引的错误:
<?php
$uname = array_key_exists("txtname", $_POST) ? $_POST["txtname"] : NULL;
$pass = array_key_exists("txtpass", $_POST) ? $_POST["txtpass"] : NULL;
$email = array_key_exists("txtemail", $_POST) ? $_POST["txtemail"] : NULL;
$add = array_key_exists("add", $_POST) ? $_POST["add"] : NULL;
$subm = array_key_exists("subm", $_POST) ? $_POST["subm"] : NULL;
$subs = array_key_exists("subs", $_POST) ? $_POST["subs"] : NULL;
$sube = array_key_exists("sube", $_POST) ? $_POST["sube"] : NULL;
$gen = array_key_exists("gen", $_POST) ? $_POST["get"] : NULL;
?>
但是,通常最好创建一个函数来处理此问题:
<?php
function get_expected_post( $expected = array() ){
$ret = (object) NULL;
foreach ( $expected as $key ) {
$ret->{$key} = array_key_exists($key, $_POST) ? $_POST[$key] : NULL;
}
return $ret;
}
$post = get_expected_post(array(
'txtname',
'txtpass',
'txtemail',
'add',
'subm',
'subs',
'sube',
'get'
))
?>
通过这种方式,您可以更轻松地展开表单中的项,并且无论何时访问以下内容,都可以确保它的存在,从而避免出错:
<?php echo $post->subm; ?>
如果希望将帖子名称转换为脚本中的不同名称,则可以扩展上述内容。此外,您还可以添加额外的安全性,如解析期望值的值等。以下类似内容将修复您的未定义索引错误:
<?php
$uname = array_key_exists("txtname", $_POST) ? $_POST["txtname"] : NULL;
$pass = array_key_exists("txtpass", $_POST) ? $_POST["txtpass"] : NULL;
$email = array_key_exists("txtemail", $_POST) ? $_POST["txtemail"] : NULL;
$add = array_key_exists("add", $_POST) ? $_POST["add"] : NULL;
$subm = array_key_exists("subm", $_POST) ? $_POST["subm"] : NULL;
$subs = array_key_exists("subs", $_POST) ? $_POST["subs"] : NULL;
$sube = array_key_exists("sube", $_POST) ? $_POST["sube"] : NULL;
$gen = array_key_exists("gen", $_POST) ? $_POST["get"] : NULL;
?>
但是,通常最好创建一个函数来处理此问题:
<?php
function get_expected_post( $expected = array() ){
$ret = (object) NULL;
foreach ( $expected as $key ) {
$ret->{$key} = array_key_exists($key, $_POST) ? $_POST[$key] : NULL;
}
return $ret;
}
$post = get_expected_post(array(
'txtname',
'txtpass',
'txtemail',
'add',
'subm',
'subs',
'sube',
'get'
))
?>
通过这种方式,您可以更轻松地展开表单中的项,并且无论何时访问以下内容,都可以确保它的存在,从而避免出错:
<?php echo $post->subm; ?>
如果希望将帖子名称转换为脚本中的不同名称,则可以扩展上述内容。另外,您还可以添加额外的安全性,如解析期望值的值等等。在html中,您需要为每个复选框设置相同的名称
<td><input type="checkbox" name="chk[]" value="Maths"</td>Maths
<td><input type="checkbox" name="chk[]" value="Science"</td>Science
<td><input type="checkbox" name="chk[]" value="English"</td>English
$checkbox现在将是所选每个复选框的数组
这里也有类似的问题
在html中,您需要为每个复选框设置相同的名称
<td><input type="checkbox" name="chk[]" value="Maths"</td>Maths
<td><input type="checkbox" name="chk[]" value="Science"</td>Science
<td><input type="checkbox" name="chk[]" value="English"</td>English
$checkbox现在将是所选每个复选框的数组
这里也有类似的问题
将vale=“”/>更改为value=“”/>您忘记关闭输入元素了吗?缺少>将vale=“”/>更改为value=“”/>您忘记关闭输入元素了吗?缺失>