есть такой вот кусок кода.
PHP:
echo "<pre>";
print_r($_POST);
echo "</pre>";
// Добавление всех ошибок в массив
$error = array();
foreach($all as $key => $value){
if ($value > '0'){
$error [] = $my->err_to_str($value);
}
}
echo "<pre>";
print_r($_POST);
echo "</pre>";
выводит он следующее:
PHP:
[skype] => 34636
в первом случае
и:
PHP:
[skype] => 0
во втором.
[skype] - одно из значений массива $_POST.
если убрать массив 'Добавление всех ошибок в массив' то все нормально - значение не теряется. в чем может быть проблема?
Спустя 10 минут, 11 секунд (4.03.2011 - 14:18) twin написал(а):
Очевидно в этом методе
err_to_str()
err_to_str()
Спустя 7 минут, 2 секунды (4.03.2011 - 14:25) harek13 написал(а):
вот листинг err_to_str():
<?php
require_once("vars.class");
class class_errors extends class_vars{
function err_to_str($num){
// Фатальные ошибки
$err[1]="Ошибка управления или попытка взлома системы. Администратору отправлено сообщение!";
$err[2]="Ошибка авторизации.";
$err[3]="Выберите страну и город";
$err[4]="Проверьте заполненные данные"; // модификация кода - нулевая длина
$err[5]="Проверьте заполненные данные"; // модификация кода - длина больше чем заявленно
$err[6]="Произошла ошибка при отправке письма. Пароль не изменен. Попробуйте заново";
$err[7]="Длина предложенной модели, марки не может быть больше 30";
// Ошибки работы с SQL
$err[10]="Не удалось соединиться с БД";
$err[11]="Ошибка выполнения SQL-запроса";
$err[12]="Ошибка активации нового пароля";
$err[12]="Ошибка sql-запроса при отправке почты";
// Ошибки добавления при регистрации
$err[20]="В числовые поля вводите только числа";
$err[21]="Логин не должен превышать 20 символов";
$err[22]="Длина пароля не меньше 6 символов";
$err[23]="Длина пароля не больше 20 символов";
$err[24]="Email не может превышать 30 символов";
$err[26]="Номер Scype не может превышать 50 символов";
$err[27]="Номер icq не может превышать 9 цифр";
$err[28]="Номер icq должен состоять только из цифр";
$err[29]="Указанный E-mail имеет недопустимый формат";
$err[31]="Пароль не может быть пустым полем";
$err[32]="Логин не может быть пустым полем";
$err[33]="Email не может быть пустым полем";
$err[36]="Указанный Вами логин уже занят";
$err[37]="На этот Email уже зарегистрировано";
$err[38]="Длина логина не меньше 5 символов";
// телефон
$err[25]="Номер телефона не может превышать 11 цифр";
$err[30]="Номер телефона должен состоять только из цифр";
$err[34]="Номер телефона не может быть пустым полем";
$err[35]="Номер телефона должен состоять из 11 цифр";
// Ошибки при добавлении нового объявления
$err[51]="Неправильный формат года выпуска";
$err[52]="Выберите один из предложенных вариантов руля";
$err[53]="Цена не может быть пустым полем";
$err[54]="Цена не может превышать 99999999";
$err[55]="Цена не может быть меньше 1000";
$err[56]="Пробег указан больше 999999";
$err[57]="Объем двигателя не может быть больше 99999";
$err[58]="Мощность двигателя не может быть больше 999";
$err[59]="Длина поля дополнительной информации не может быть больше 2500 символов";
$err[60]="Длина поля место осмотра не может быть больше 50 символов";
$err[61]="Выберите марку и/или модель";
$err[62]="Год выпуска не может быть пустым полем";
$err[63]="Неверно заполненно время для звонка";
$err[64]="Неккоректное изображение";
// Ошибки для web-сервера
$err[101]="Ошибка выполнения SQL-запроса";
// Отправка ошибки администратору
// if($this->DEBUG_LEVEL >= $num) $this->mail_err($err[$num]);
// Возврат текста ошибки
return($err[$num]);
}
// Отправка сообщения об ошибке
function mail_err($message){
global $REQUEST_URI;
for ($i=0;$iEMAIL_NOC;$i++){
$this->mailer("Robot", $this->EMAIL_NOC[$i], "Fatal
error!", "Error: $message\nDateTime:".$this->today_date()." ".$this->today_time()."\n"."Remote
IP:".$this->remote_ip()."\n\nURI: $REQUEST_URI\n\n$SQL_QUERY:
".$this->sql_query."\nSQL_ERROR:".$this->sql_err);
usleep(100000);
}
}
}
?>
Спустя 8 минут, 5 секунд (4.03.2011 - 14:33) twin написал(а):
Я так понимаю, register_globals On ??
Спустя 1 минута, 41 секунда (4.03.2011 - 14:35) harek13 написал(а):
Directive:register_globals Local Value:Off Master Value:Off
Спустя 8 минут, 33 секунды (4.03.2011 - 14:43) twin написал(а):
Мистика. Тут явно не весь код. Ибо так не бывает.
Спустя 5 минут, 3 секунды (4.03.2011 - 14:48) harek13 написал(а):
отредактировал. теперь весь код с класса. а я то в каком ступоре. просто пипец. раньше все работало - потом я внес коррективы и кроме поля скайпа все нормально.
Спустя 5 минут, 1 секунда (4.03.2011 - 14:53) twin написал(а):
Вооот. Продвигаемся потихоньку. Теперь давай сюда класс class_vars
Спустя 3 минуты, 4 секунды (4.03.2011 - 14:56) harek13 написал(а):
<?php
class class_vars{
// Пути к папкам.
var $PATH=""; // основной путь к проекту
var $PATH_INC="http://localhost/test.net/templates"; // шаблоны
var $PATH_INC_2="http://localhost/test.net/content"; // шаблоны 2 уровня
var $PATH_ERROR="http://localhost/test.net/error"; // шаблоны error
var $PATH_CLASS="http://localhost/test.net/class"; // классы
var $PATH_IMG="http://localhost/test.net/images"; // картинки по стилям
var $PATH_CONT="http://localhost/test.net/cont"; // движок
var $PATH_CSS="http://localhost/test.net/css"; // css
var $PATH_JS="http://localhost/test.net/js"; // javascript
var $PATH_FONT="http://localhost/test.net/fonts"; // шрифты
var $PATH_PHOTO="http://localhost/test.net/photos"; // фотографии
var $uploaddirtmp = '../../photos/tmp/'; // папка для фоток временная при аплоаде
var $uploaddirimg = '../../photos/img/'; // папка для фоток постоянно при аплоаде
var $uploaddirmini = '../../photos/mini/'; // папка для фоток миниатюр при аплоаде
// require_once - переписать в файлах index.php content.inc
// Основной URL
var $PATH_HTTP="http://localhost/test.net";
// Полное название и короткое
var $NAME_FULL="портал";
var $NAME_SHORT="портал";
// адрес хозяина страницы
var $EMAIL_ADMIN="admin@mail.ru";
// техническая служба сайта
var $EMAIL_NOC="admin@mail.ru";
// Время кеширования страниц "Expires" (в секундах)
var $CACHE_TIME = 300;
// Максимальный размер подгружаемого в базу текста
var $TEXT_SIZE_MAX = 1048576; // это мегабайт
// Минимальный размер подгружаемого в базу текста
var $TEXT_SIZE_MIN= 100; // сто байт
// Формат вывода времени (из SQL-базы)
var $TIME_FORMAT="H:i:S"; // ЧЧ:ММ:СС
// Формат вывода даты (из SQL-базы)
var $DATE_FORMAT="d.m.Y"; // ДД.ММ.ГГГГ
// уровень отладки
var $DEBUG_LEVEL= 100;
}
?>
Спустя 8 минут, 48 секунд (4.03.2011 - 15:05) twin написал(а):
ну и форму тогда до кучи
Спустя 5 минут, 2 секунды (4.03.2011 - 15:10) harek13 написал(а):
))) форма большая.
проблема в переборе. когда я оставляю только:
между постами - проблема остается. может быть это программный сбой? ну не бывает такого))
<div class="form_line">
<div class="form_label_none">Skype</div>
<div class="form_input">
<input class="select_border input_first" type="text" id="skype" name="skype" maxlength="50" value="<?php echo $all_data['skype']; ?>" />
</div>
</div>
проблема в переборе. когда я оставляю только:
foreach($all as $key => $value){
}
между постами - проблема остается. может быть это программный сбой? ну не бывает такого))
Спустя 3 минуты, 42 секунды (4.03.2011 - 15:14) inpost написал(а):
harek13
Как формируется $all? Что значит: $value > '1' ? Там уже подсчитана длина до этого? И зачем сравниваешь со строкой, числа не берутся в кавычку: $value > 1
Как формируется $all? Что значит: $value > '1' ? Там уже подсчитана длина до этого? И зачем сравниваешь со строкой, числа не берутся в кавычку: $value > 1
Спустя 5 минут, 23 секунды (4.03.2011 - 15:19) harek13 написал(а):
так как бы
foreach($all as $key => $value){- уже не пропускает дальше. оставил только это и все - глюк, баг. не знаю что. уже все перепробовал.
}
Спустя 7 минут, 33 секунды (4.03.2011 - 15:27) inpost написал(а):
В идеале у тебя должно было прийти так: $_POST['skype'], а ты обращаешься к неизвестной нам переменной $all, к тому же register_globals выключены! Значит она где-то ранее инициализирована.
Сделай так:
echo '<pre>'; print_r($all); что там за записи по скайпу?
Сделай так:
echo '<pre>'; print_r($all); что там за записи по скайпу?
Спустя 49 секунд (4.03.2011 - 15:28) harek13 написал(а):
вот массив $all
в этот массив собираются все номера ошибок.проблема в массиве этом. когда опустошаешь его - все работает как и положено
Array
(
[razdel] => 0
[podrazdel] => 0
[country] => 0
[mark] => 0
[model] => 0
[year_of_made_num] => 0
[haul_russia_type] => 0
[have] => 0
[customs] => 0
[wheel_type] => 0
[price_num] => 0
[сurrency] => 0
[city] => 0
[phone] => 0
[haul_type] => 0
[time_call1a] => 0
[time_call1b] => 0
[time_call2a] => 0
[time_call2b] => 0
[time_call3a] => 0
[time_call3b] => 0
[skype] => 0
)
в этот массив собираются все номера ошибок.проблема в массиве этом. когда опустошаешь его - все работает как и положено
Спустя 1 минута, 18 секунд (4.03.2011 - 15:29) Trianon написал(а):
переменная $value каким-либо образом выше по коду случайно ссылкой с элементом массива POST не связана?
а ля $value = & $_POST['skype']);
а ля $value = & $_POST['skype']);