Witam mam jeszcze jedno pytanie nie chce zakładać kolejnego tematu.
Skrypt sprawdza czy wszystkie pola zostały uzupełnione funkcją required_fields jeżeli nie generuje błąd set_error('wiadomość', 'przekierowanie', 'czy dobra czy zła wiadomość') ale żeby nie musieć wypełniać wszystkich pól od nowa po przekierowaniu funkcja save_fields() zapamiętuje wszystko do zmiennych sesyjnych.
Mój problem objawia się tak po przekierowaniu pola są puste dopiero po odświeżeniu pojawiają się w nich dane, jeżeli uzupełnię kolejne pole źle po przekierowaniu jest takie jakie było a dopiero po odświeżeniu pokazuje się wartość jaka była wysłana.
Otóż, mam taką prostą walidację formularza:
- Kod: Zaznacz cały
function required_fields($f) {
if(is_array($f))
foreach($f as $v) {
if(!$_POST[$v])
exit(set_message('musisz wypelnic wszytskie pola', 'news.php', bad'));
else
$r[$v] = sqlite_escape_string($_POST[$v];
}
return $r;
}
function set_message($m, $b, $s) {
$_SESSION['message'] = $m;
$_SESSION['status'] = $s;
header('location: '.$b);
}
function save_fields($f) {
if(is_array($f))
foreach($f as $v) {
$_SESSION['form_'.$f] = $_POST[$v];
}
}
tak działa to na stronie
- Kod: Zaznacz cały
$fields = array('title','stext','ftext');
save_fields($fields);
$clean = required_fields($fields);
strona działa na systemie smarty więc w szablonie wygląda to następująco
- Kod: Zaznacz cały
<input type="text" ... value="{$smarty.session.form_title}" />