我遇到一些未定义索引的问题。我意识到这可以通过使用error_reporting(E_ALL);
或ini_set('display_errors', '1');
来更改错误报告来解决,但是想要解决此问题而无需更改。这里是我的代码块引发错误。注意:未定义的指数:PHP
// print out errors
if (!empty($errors)){
echo '<div class="form_errors">';
foreach ($errors as $key => $value) {
var_dump($value);
if (isset($value) == null or empty($value)){
$value = ' A blank value ';
}
echo '<p>Please check '. $key . ' for errors.' . $value . 'is not a valid entry.</p>';
}
echo '</div>';
}
用于处理在提交我的表单的部分是
if(isset($_POST['Submit'])){
//create the fields you would want required and what fields on form to check.
$fields = array(
'required' => array(
'name' => '^[a-zA-Z\`\-\s]{1,30}$', //only letters plus apostrophe and hyphens, and up to 30 characters
'Address1' => '^[a-zA-Z0-9\s\.]{1,50}$' // only letters plus numbers, spaces, periods, and up to 30 characters
),
'fields' => array(
'name' => $_POST['name'],
'Address1' => $_POST['Address1'],
'Address2' => $_POST['address2']
),
'redirect' => 'thankyou.php'
);
$errors = TForm::validate($fields);
// if no errors redirect
if (empty($errors)){
TForm::redirect($fields);
}
}
我的TForm的类看起来像这样
class TForm {
//validation returns an error array when done.
public function validate($fields){
$errors = array();
foreach($fields['fields'] as $key=>$value) {
foreach ($fields['required'] as $req_key => $req_value) {
if ($key == $req_key){
$req_key = '\''.$req_value.'\'';
if (preg_match($req_key , $value) == false) {
$errors[$key] = $value;
}
}
}
}
return $errors;
}
//redirect function
public function redirect($fields){
header('Location: '. $fields['redirect']);
}
}
这也是我曾经写过,所以如果第一类人感觉到指出我可以在哪里表现更好或打破标准。 ~~~~~~~~~~~~~~~~~~~~更新~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
@jordan对不起,我就不清楚了错误报告E_ALL
就是我目前使用和在生产机器上这个错误不会被报告,因为您将使用0
。我的解决方案是使用!empty($_POST['Name']) ? $_POST['Name']:''
如果我正确地思考如果它不是空的,它将使用$_POST['Name']
中的任何内容,如果它是空的,则将值设置为''
。
'fields' => array(
'Name' => !empty($_POST['Name']) ? $_POST['Name']:'',
'Address1' => !empty($_POST['Address1']) ? $_POST['Address1']:'',
'Address2' => !empty($_POST['Address2']) ? $_POST['Address2']:''
)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ UPDATE2〜 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@mike在现场使用isset结果总是失败即
'fields' => array(
'Name' => !isset($_POST['Name']) ? $_POST['Name']:'',
'Address1' => !isset($_POST['Address1']) ? $_POST['Address1']:'',
'Address2' => !isset($_POST['Address2']) ? $_POST['Address2']:''
)
结果时名称等于一个有效的变量,比如弗兰克Wiebenga
Please check Name for errors. A blank value is not a valid entry.
Please check Address1 for errors. A blank value is not a valid entry.
使用空见面HOD时名称等于一个有效的变量,如弗兰克Wiebenga正确返回
Please check Address1 for errors. A blank value is not a valid entry.
什么是完整的错误信息,其指数未定义? – 2012-04-07 22:04:49
error_reporting开发价值:“E_ALL | E_STRICT”始终在哪一行是错误? – ZiTAL 2012-04-07 22:04:51
还要注意,无论你的错误,这条线没有任何意义:'if(isset($ value)== null或empty($ value))'。 'isset'返回布尔值,所以它永远不会是空字符串,尽管用== null检查它也会计算为false ...但是您可以只检查if(empty($ value))而不是整个构造' – poncha 2012-04-07 22:12:55