Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Ошибка в Лоле, почему вылетает не пойму
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




Приветствую всех Форумчане!

Есть файл подключения к БД, в этом файле есть функция, с помощью
которой я эскепю данные перед занесением в БД

Когда юзер добавляет заявку проблем нет, но...

Когда юзер переходит в список заявок или на просмотр одной заявки
вылетает ошибка в лог и самое интересное что она не всегда вылетает

Вот какая ошибка в логе появляется
[error] [client 130.193.50.13] PHP Fatal error:  Cannot redeclare escapStr() (previously declared in /home/c/cl12605/rinat/public_html/connects/mysql.php:18) in /home/c/cl12605/rinat/public_html/connects/mysql.php on line 23


Указывается именно на строчки этой функции

Вот функция
<?php

function
escapStr($data)
{

if(is_array($data))
$data = array_map("escapStr", $data);
else
$data = mysql_real_escape_string($data);

return $data;
}


Взял и поменял на вот так
<?php

function
escapStr($data)
{

$data = mysql_real_escape_string($data);

return $data;
}


И один хрен пернеодически вылетает ошибка в лог и что самое интересное
не всегда. То есть когда сам проверял и переходил по страницам заявок
вылетала ошибка в лог, но опять же не всегда.

Почему так не пойму, может кто объяснит

Когда убираю функцию все нормально
_



PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




И вот опять смотри лог ошибок и опять аж две штуки.

Посмотрел обычный лог и заметил закономерность, что часто вылетает ошибка в лог
если на сайт заходит YandexBot

Вот что в обычные логи пришло
"GET /order/43 HTTP/1.0" 500 - "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"

"GET /order/45 HTTP/1.0" 500 - "-" "Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)"


Почему в основном на YandexBot вылетает, но бывает и когда юзер заходит,
а порой вообще нифига нет в логах ошибок.

Что за чудеса не пойму
_
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 24 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


ты хоть понимаешь что это?

Цитата
Cannot redeclare escapStr()


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




Игорь_Vasinsky

Я так понимаю что эта ошибка бывает при одинаковых именах функций в одном классе
или при повторном подключении.

Файл mysql.php я подключаю только в том месте где к примеру вывожу заявки,
параллельно больше он нигде не может быть подключен.

До этого эта функция была в самом начале, взял и поставил ее после подключения к БД

Получилось вот так
<?php

// Генерация страницы ошибки при доступе вне системы
if(!defined('KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents(HOST."meseng/notfound.html"));
}
////////////////////////////////////////////////////////////////
// Функция для запроса к БД MySQL
function mysqlQuery($sql, $print = false)
{
$result = mysql_query($sql, CONNECT);

if($result === false || $print)
{
$error = mysql_error();
$trace = debug_backtrace();
$head = $error ?'<b style="color:red">MySQL error: </b><br>
<b style="color:green">'
. $error .'</b><br><br>':NULL;
}
else
return
$result;
}
////////////////////////////////////////////////////////////////
/////// Подключение и установка кодировок соединения ///////
////////////////////////////////////////////////////////////////

$link = mysql_connect( DBSERVER, DBUSER, DBPASSWORD ) or die(NO_CONNECT);

define('CONNECT', $link);

mysql_select_db( DATABASE, CONNECT )or die(NO_DB_SELECT);

mysqlQuery('SET NAMES utf8');
mysqlQuery('SET CHARACTER SET utf8');
mysqlQuery('SET COLLATION_CONNECTION="utf8_general_ci"');

////////////////////////////////////////////////////////////////
//Функция обработки литеральных констант для SQL

function escapStr($data)
{
if(is_array($data))
$data = array_map("escapStr", $data);
else
$data = mysql_real_escape_string($data);

return $data;
}


Теперь же один раз получилась ошибка и уже ругается на строки
где Функция для запроса к БД MySQL, а именно
PHP Fatal error:  Cannot redeclare mysqlQuery()

и показывает на строку с открывающей скобкой у этой функции и на строку
с закрывающей скобкой.

Вроде больше ошибок сейчас не вылетало.

Но как это победить и почему такая фигня

_




PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




Может вместо
function mysqlQuery($sql, $print = false)

Нужно прописать вот так
function mysqlQuery($sql, $print == false)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 24 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


Цитата
function mysqlQuery($sql, $print == false)

ешкин кот. это аргумент по умолчанию, а не логика.


чёрным по белому написано
Цитата

Cannot redeclare escapStr() (
previously declared in /home/c/cl12605/rinat/public_html/connects/mysql.php:18) in
/home/c/cl12605/rinat/public_html/connects/mysql.php on line 23


ты пытаешься инициализировать функции по 2му разу.

1. /home/c/cl12605/rinat/public_html/connects/mysql.php:18
2. /home/c/cl12605/rinat/public_html/connects/mysql.php on line 23

нафига тебе array_map() в теле?

function escapStr($data)   
{
return mysql_real_escape_string($data);
}


 $data = array_map("escapStr", $data);


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




Игорь_Vasinsky
Так я вот так вот и пробывал ставить
function escapStr($data)   
{
return mysql_real_escape_string($data);
}


В логах пару раз ругался на открывающую скобку и закрывающую
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Игорь_Vasinsky  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Лысый и злой
******

Профиль
Журнал
Группа: ★ЛжеЭксперт★
Завсегдатай форума
Сообщений: 25990
Пользователь №: 21350
На форуме: 6 лет, 8 месяцев, 24 дня
Карма: 725

Не курю:
1 год, 2 месяца, 10 дней


Цитата
В логах пару раз ругался на открывающую скобку и закрывающую

по предыдущему опыту анализа ошибок тобой - мне приходится тебя просить - запостить оригинальный текст той ошибки.


--------------------
Халявные ответы кончились.
Если нужен готовый код - готовьтесь заплатить.
Райкин тоже был артист

Возле дома был сарай
А когда всё хорошо
Можно просто покурить

user posted image
http://ufa102.xyz/
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




Cannot redeclare escapStr() (
previously declared in /home/c/cl12605/rinat/public_html/connects/mysql.php:18) in
/home/c/cl12605/rinat/public_html/connects/mysql.php on line 23

18 строчка была открывающая скобка а 23 закрывающая, поэтому так и говорю.

Теперь вот такая штука

Когда пишу
function mysqlQuery($sql, $print == false)

Выдает ошибку и в логах пишет
PHP Parse error:  syntax error, unexpected T_IS_EQUAL, expecting ')'

Когда обратно ставлю
function mysqlQuery($sql, $print = false)

Нормально

Но почему же он до этого один раз ругался в логах когда я местами функции поменял
PHP Fatal error:  Cannot redeclare mysqlQuery() (previously declared in /home/c/cl12605/rinat/public_html/connects/mysql.php:12) in /home/c/cl12605/rinat/public_html/connects/mysql.php on line 24



PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 25 дней
Карма: 7




Поменял подключение файла, тоесть вместо
 include 

Поставил
 include_once 


Вроде тишина и в логах ошибок ничего нет
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса