未定義のインデックスで少し問題があります。 error_reporting(E_ALL);
またはini_set('display_errors', '1');
を使用してエラー報告を変更することで解決できることが分かっていますが、変更する必要はありません。ここにエラーをスローするコードブロックがあります。Notice:未定義インデックス: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']);
}
}
のように見えます。これはまた、誰場合は、私が今までにそう書いている最初のクラスです私がどこでより良い結果を出したり、標準を破ったかを指摘しています。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~私はE_ALL
のエラー報告について明確ではありませんでした申し訳ありません
@jordanは、私が現在だものですプロダクションマシンを使用して、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']:''
)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~アップデート2〜 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~フィールドで使用してISSET結果@マイク
は常に失敗すなわち
このようフランクWiebengaとして名前が有効な変数に等しいときで'fields' => array(
'Name' => !isset($_POST['Name']) ? $_POST['Name']:'',
'Address1' => !isset($_POST['Address1']) ? $_POST['Address1']:'',
'Address2' => !isset($_POST['Address2']) ? $_POST['Address2']:''
)
結果、空のMETを使用して
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.
インデックスが未定義完全なエラーメッセージは、何ですか? –
error_reporting開発値: "E_ALL | E_STRICT"どの行にエラーがありますか? – ZiTAL
また、エラーに関係なく、この行は意味をなさないことに注意してください: 'if(isset($ value)== nullまたはempty($ value))'。 'isset'はbooleanを返すので、文字通りnullにはなりませんが、== nullでチェックするとfalseと評価されますが、この全体の構造の代わりに' if(empty($ value)) ' – poncha