在同一个页面发送信息时会出现常见的错误,这些错误是正常的,所以没有声明或者他们的值是NULO
所以,既然我们知道这不是一个严重的错误,而是一个正常的错误,所以它们没有被声明或者它们的值为 null,一个简单的解决方案是禁用警告错误等。
error_reporting(0);
虽然是一个解决方案,但对我来说用它来禁用错误是不正确的,必须先验证代码。
如果它的使用很好,但首先所有代码都是有效的,然后将它们用于将来的更新,从而避免向访问者显示错误或显示黑客可以利用该错误的错误。
下面的例子:
当方法发送的信息丢失时post
$unpost = $_POST['post'];
echo $unpost;
它显示此错误消息:Notice: Undefined index: post
另一个类似的错误是当有SESSION
一些数据时显示特定数据:
if( $_SESSION['datos']['radio'] == $key ) { else {}}
当由于某种原因或原因丢失时,如何正确验证未声明的变量和空会话?
动态示例:
<?php
$r =array(
1 => 'Opcione Uno',
2 => 'Opcione Dos',
3 => 'Opcion Tres',
);
// recorremos las opciones del radio button
// comprobamos si se selecciono antes una opción comparando los key
echo'<form method="POST" action="a.php">';
foreach ($r as $key => $value) {
// para recuperar los datos de un radio button
if( $_SESSION['datos_form']['radio'] == $key ) {
echo '<input name="radio" type="radio" id="'.$key.'" value="'.$key.'" checked="checked" >';
echo '<label for="'.$key.'" title="'.$value.'">'.$value.'</label>';
} else {
echo '<input name="radio" type="radio" id="'.$key.'" value="'.$key.'" >';
echo '<label for="'.$key.'" title="'.$value.'">'.$value.'</label>';
}
}
echo '<input type="submit" value="Submit"></form>';
if ($_POST["radio"] == 1) {
//Confirmacion($_POST["radio"]);
echo "<p>Has elegido Opcion uno</p>";
}
if ($_POST["radio"] == 2) {
//Confirmacion($_POST["radio"]);
echo "<p>Has elegido Opcion dos</p>";
}
if ($_POST["radio"] == 3) {
//Confirmacion($_POST["radio"]);
echo "<p>Has elegido Opcion tres</p>";
}
$unpost = $_POST['post'];
echo $unpost;
首先,您必须考虑不带数组的 $_POST、$_GET、$_SESSION 和 $_COOKIE ,尽管它们是全局的,但它们可以被视为任何数组。
您提到的错误是使用未定义的数组元素的结果。
在 php 中,变量的定义不像其他编程语言那样是必需的。因此,一个变量可以在没有事先定义的情况下使用,但默认值将是由cast产生的默认值。
尽管没有必要,但在使用变量之前验证变量是否已定义是一种很好的编程习惯。
我建议您不要直接在脚本主体中使用全局变量,您可以将其分配给变量并改用它。
$unpost = isset($P['post']) ?$P['post'] : '';
这样,即使您想调试或从 $_POST 切换到 $_GET ,您只需将分配更改
$P = $_POST;
为$P = $_GET;
并且您的所有代码都保持功能,并且您可以更好地控制您返回的内容。在多维数组的情况下,您必须在到达最终维度之前验证每个维度是否存在,例如:
在这里,我对您的代码进行了编辑,以使解释更清楚:
您可以使用验证isset()方法,如果变量存在则返回值
true
,否则返回false
.例子:
至于数组,您可以使用empty()检查它是否有任何值:
对未声明的变量使用 isset 方法:http: //php.net/manual/es/function.isset.php
您也可以使用空,尽管在这种情况下它也会评估空变量: http: //php.net/manual/es/function.empty.php