未定義のインデックスに少し問題があります。error_reporting(E_ALL);
、またはを使用してエラー報告を変更することでこれを解決できることはわかっていますがini_set('display_errors', '1');
、それを変更せずにこれを解決したいと考えています。ここに、エラーをスローするコードのブロックがあります。
// 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']:''
)
name が Frank 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.
フランク・ウィーベンガが正しく返すなど、名前が有効な変数と等しい場合に空のメソッドを使用する
Please check Address1 for errors. A blank value is not a valid entry.