Hello
I had a very long brake from coding in PHP.
Now I am learning it once again.
I want to create a form validation script, which I can use for all my forms with some little changes.
The script and html are for testing reason in one file.
From form php script can get a values in two arrays, one for required values and second for optional. In my example I use only required.
PHP:
error_reporting(E_ALL);
$a_req_keys = array('login', 'pass', 'pass2', 'email', 'email2', 'name', 'surname', 'address', 'zip', 'city');
$a_req = array_fill_keys($a_req_keys, '');
array_walk($a_req, 'show_value');
//fill $a_req with values taken from $_POST
$a_req = array_value_key($a_req, (array) $_POST['required']);
array_walk($a_req, 'show_value');
//<br /><b>Notice</b>: Undefined variable: a_req in <b>D:\tools\WebServ\httpd\nauka\basic_php\rejestracja_frm.php</b> on line <b>100</b><br />
array_validate($a_req);
function array_value_key($array_empty, $array_fill) {
if (!is_array($array_empty) || !is_array($array_fill)) {
return false;
}
foreach ($array_fill as $key=>$value) {
if (array_key_exists($key, $array_empty)) {
$array_empty[$key] = $value;
} else return false;
}
return $array_empty;
}
function array_validate($array, $required = TRUE) {
if ($required) {
if(array_empty_val($array)) echo "You didn't fill all required fields"; return false;
}
array_walk($array, 'disable_danger_chars');
array_walk($array, 'show_array_value');
return true;
}
function disable_danger_chars(&$value) {
$value = htmlspecialchars($value);
if (!get_magic_quotes_runtime())
$value = addslashes($value);
}
function array_empty_val(&$array) {
$has_empty = FALSE;
foreach ($array as $key => &$value) {
$value = trim($value);
if (empty($value)) {
$_SESSION[$key] = FALSE;
$has_empty = TRUE;
} else $_SESSION[$key] = TRUE;
}
return $has_empty;
}
function show_value($value, $key) {
echo $key.'=>\''.$value.'\'<br />';
}
function html_warn_msg($value) {
static $msg = "<tr><td colspan=2 align=center><b>Above field is required</b></td></tr>";
if (isset($_SESSION[$value])) echo $msg;
}
function show_val_by_key($key, $flag=TRUE) {
if ($flag) {
echo $a_req[$key]; //[B]LINE 100[/B]
} //else echo $a_optiona[$key];
}
and my html form
<form id="register_frm" action="" method="post">
<table id="frm_tbl">
<caption>Formularz Rejestracyjny</caption>
<tr>
<th>Identyfikator</th>
</tr>
<tr>
<td><label for="login">Login</label></td>
<td><input type="text" name="required[login]" id="login" maxlength="50" value="<?php show_val_by_key('login') ?>"/></td>
</tr>
<?php html_warn_msg('login') ?>
<tr>
<td><label for="pass">Hasło</label></td>
<td><input type="password" name="required[pass]" id="pass" maxlength="50" /></td>
</tr>
<tr>
<td><label for="pass2">Powtórz hasło</label></td>
<td><input type="password" name="required[pass2]" id="pass2" maxlength="50"/></td>
</tr>
<tr>
<td><label for="email">E-mail</label></td>
<td><input type="text" name="required[email]" id="email" maxlength="50"/></td>
</tr>
<tr>
<td><label for="email2">Powtórz E-mail:</label></td>
<td><input type="text" name="required[email2]" id="email2" maxlength="50"/></td>
</tr>
<tr>
<th>Dane Personalne</th>
</tr>
<tr>
<td><label for="name">Imię</label></td>
<td><input type="text" name="required[name]" id="name" maxlength="50" value="<?php show_val_by_key('name') ?>"/></td>
</tr>
<?php html_warn_msg('name') ?>
<tr>
<td><label for="surname">Nazwisko</label></td>
<td><input type="text" name="required[surname]" id="surname" maxlength="50" value="<?php show_val_by_key('surname') ?>"/></td>
</tr>
<?php html_warn_msg('surname') ?>
<!--other fields -->
<tr>
<td colspan="2" align="left"><input type="reset" name="reset_btn" value="Wyczyść"/></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" id="submit_btn" value="Rejestruj"/></td>
</tr>
</table>
And every time when I call script I get an error:
Notice: Undefined variable: a_req in D:\tools\WebServ\httpd\nauka\basic_php\rejestracja_frm.php on line 100
which appear in all fields I want to show a value using show_val_by_key() .
Could anybody help me?
Regards