K
Kauperwood
переписываю 'бывшие' скрипты в функции и вот словил то с чем не могу разобраться
Warning: Invalid argument supplied for foreach() in /var/www/Alex/functions.php on line 262 {"hasError":false,"message":"ok"}
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">function</div></div><div class="sp-body"><div class="sp-content">
по идее напротив полей должны появляться jquery.ajaxValidation картинки "дающие" знать правильно ли заполнены поля. Естественно что они не появились. В шаблоне я проставил в дивах {errors] где должны появляться картинки и передаю туда $errors. Вот... Подскажите пожалуйста что нужно добавить, или что неправильно, как устранить этот варнинг?
Warning: Invalid argument supplied for foreach() in /var/www/Alex/functions.php on line 262 {"hasError":false,"message":"ok"}
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">function</div></div><div class="sp-body"><div class="sp-content">
PHP:
function form_obr_svazi () {
$html="";
$_POST['form']="";
$name="";
$from="";
$texts="";
$captha1="";
$errors="";
if(isset($_POST['do_submit'])) {
$captha1 = $_POST['captcha'];
$to = 'web@okrasim.net';
$subject = "обратная связь";
$name = $_POST['username'];
$from = $_POST['email'];
$texts = $_POST['message'];
$message = "От:$name\r\nCообщение:\r\n$texts";
$headers = 'From:'.$from."\r\n" .
'Reply-To:'.$to . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$err='';
if (!$name) $err.="забыли имя<br>";
if (!$from) $err.="забыли мыло<br>";
if (!$texts) $err.="забыли сам отзыв<br>";
if (strlen($name) > 30) $err.="Длина имени не может превышать 30 символов<br>";
if (strlen($texts) > 1000) $err.="Длина отзыва не может превышать 1000 символов<br>";
if (strlen($from) > 50) $err.="емейл длинноват...<br>";
$email_ok=preg_match("^([_\.0-9a-z-]+@)([0-9a-z][0-9a-z-]+\.)+([a-z]{2,4})$^", $from);
if (!$email_ok && $from) $err.="не корректный email!<br>";
if (!$captha1) $err.="не введен защитный код!<br>";
if ($captha1 != $_SESSION['cap_code']) $err.="не корректный защитный код!<br>";
if (!$err) { //если ошибок нет, то
mail($to, $subject, $message, "Content-Type: text/plain; charset=utf-8\r\n\r\n".$headers);
header('Refresh: 3; URL=index.php');
echo 'Сообщение отправлено. через 3 секунды вы будете перенаправлены на главную страницу.';
exit;
}
else {
echo "<b style='color:red;'>".$err."</b><br>";
}
}
else {
$fields = $_POST['form'];
foreach($fields as $field) { //---------------------------------------------------------------------------------------------------------------262 линия
if($field['name']=='captcha') {
if ($fields['captcha']['value'] != $_SESSION['cap_code']) {
$errors[] = 'не верный код.';
}
break;
}
if($field['name']=='password2'){ // Special case for passwords
if($fields['password2']['value'] != $fields['password']['value']) {
$errors[] = 'Пароли не совпадают.';
}
break;
}
// Normal validation routine
$validators = explode(' ', $field['attr']);
foreach($validators as $validator){
switch($validator){
case 'nonEmpty':
if(trim($field['value'])=='') {
$errors[] = 'Введите имя.';
}
break;
case 'email':
if(filter_var($field['value'], FILTER_VALIDATE_EMAIL) === false) {
$errors[] = 'email не корректный.';
}
break;
case 'int':
if(filter_var($field['value'], FILTER_VALIDATE_INT) === false){
$errors[] = ucfirst($field['name']).' should be an integer.';
}
break;
}
}
}
if(!empty($errors)){
echo json_encode(array(
'hasError'=>true,
'message'=>implode($errors, '<br />')
));
}
else {
echo json_encode(array(
'hasError'=>false,
'message'=> 'ok'
));
}
}//else
$tpl = file_get_contents('form_obratnoy_svazi.html');
$action = $_SERVER['PHP_SELF'].'?action=form_obr_svazi';
$tpl = str_replace( '{action}', $action, $tpl);
$tpl = str_replace( '{errors}', $errors, $tpl);
$tpl = str_replace( '{name}', $name, $tpl);
$tpl = str_replace( '{email}', $from, $tpl);
$tpl = str_replace( '{message}', $texts, $tpl);
$tpl = str_replace( '{captcha}', $captha1, $tpl);
$html = $html . $tpl;
return $html;
}