
<?php
@$s=fopen("BD/Schetchik.bat","a+","t") or die('Ошибка открытия!');
flock($s,2);
$stat=stat("BD/Schetchik.bat");
@$sch=fread($s,$stat[7]);
ftruncate($s,0);
$sch=$sch+1;
fwrite($s, $sch) or die('Ошибка записи!');
fflush($s);
flock($s,3);
fclose($s) or die('Ошибка закрытия!');
echo $sch." посещений";
?>
Спустя 22 минуты, 31 секунда (9.04.2009 - 12:06) Kuliev написал(а):
Гость_Михаил
Попробуйте переименовать ваш файлик Schetchik.bat в Schetchik.inc или
Schetchik.dat проверьте право доступа на запись в файл!
Попробуйте переименовать ваш файлик Schetchik.bat в Schetchik.inc или
Schetchik.dat проверьте право доступа на запись в файл!
Спустя 59 минут, 16 секунд (9.04.2009 - 13:06) sergeiss написал(а):
Цитата (Гость_Михаил @ 9.04.2009 - 11:44) |
Сделал сайт с базой сохраняемой в *.txt и *.bat , поместил в сеть, а там сервак на Linux и мой сайт не может даже открыть файл ![]() |
Ошибка в первую очередь в том, что используешь простые файлы как базу данных.
Используй MySQL или PostgreSQL, и будет тебе счастье! Ибо нефиг изобретать велосипед.
Спустя 4 часа, 18 минут, 34 секунды (9.04.2009 - 17:24) Viking написал(а):
1 в начало файла
ini_set('display_errors', 1);
error_reporting(E_ALL);
2 убрать всех собак (@)
3 прочитать ошибку
ini_set('display_errors', 1);
error_reporting(E_ALL);
2 убрать всех собак (@)
3 прочитать ошибку
Спустя 16 часов, 4 минуты, 33 секунды (10.04.2009 - 09:29) Гость_Михаил написал(а):
Всем большое спасибо за советы попробую.
По совету о доступе: это первое про что я подумал, к папке в которой создаются или изменяются файлы данных, открыт полный доступ. PHP я до конца не освоил, и в данный момент продолжаю его изучать
По совету о велосипеде: Я ещё не знаю MySQL, по тому и сделал в такой форме.
По совету о настройках: у меня дома включены все ошибки и всё работает как нужно, а собаки отключают ошибку в случае пустого файла, когда счётчик обнулён или файл создаётся в первые (в данный момент файл существует и не пуст). Код ошибки 404.
По совету о доступе: это первое про что я подумал, к папке в которой создаются или изменяются файлы данных, открыт полный доступ. PHP я до конца не освоил, и в данный момент продолжаю его изучать
По совету о велосипеде: Я ещё не знаю MySQL, по тому и сделал в такой форме.
По совету о настройках: у меня дома включены все ошибки и всё работает как нужно, а собаки отключают ошибку в случае пустого файла, когда счётчик обнулён или файл создаётся в первые (в данный момент файл существует и не пуст). Код ошибки 404.
Спустя 2 часа, 1 минута, 24 секунды (10.04.2009 - 11:30) RealMan написал(а):
дак ошибки то надо смотреть не дома а на сервере какие вылазят 
а по скрипту, странно выглядит строка
@$s=fopen("BD/Schetchik.bat","a+","t") or die('Ошибка открытия!');
может быть имелось ввиду
@$s=fopen("BD/Schetchik.bat","a+t") or die('Ошибка открытия!');

а по скрипту, странно выглядит строка
@$s=fopen("BD/Schetchik.bat","a+","t") or die('Ошибка открытия!');
может быть имелось ввиду
@$s=fopen("BD/Schetchik.bat","a+t") or die('Ошибка открытия!');
Спустя 17 минут, 21 секунда (10.04.2009 - 11:47) alexander-travkin написал(а):
@ - признак дурного тона.
Спустя 4 минуты, 19 секунд (10.04.2009 - 11:52) sergeiss написал(а):
Цитата (alexander-travkin @ 10.04.2009 - 11:47) |
@ - признак дурного тона. |
Да ну?

Только это знак должен быть справа от равенства, например
PHP |
$s=@fopen(.... ) |
Спустя 2 часа, 49 минут, 9 секунд (10.04.2009 - 14:41) Гость_Михаил написал(а):
Кому интересно может посмотреть сам сайтик, он расположен на бесплатном хосте, с поддержкой дофига чего, на серваке ОС Linux. http://1001obyavlenie.comoj.com
К папкам открыт доступ на чтение и запись. Но в виду непонять чего, сайт полуфункциональный. Под XP при всех включеных ошибках работает нормально, а в сети даже фрейм работает на 50%. Сохранение проходит в фо все файлы по типу вышеуказаного скрипта.
Заранее всем огромное спасибо.
К папкам открыт доступ на чтение и запись. Но в виду непонять чего, сайт полуфункциональный. Под XP при всех включеных ошибках работает нормально, а в сети даже фрейм работает на 50%. Сохранение проходит в фо все файлы по типу вышеуказаного скрипта.
Заранее всем огромное спасибо.
Спустя 7 часов, 22 минуты, 37 секунд (10.04.2009 - 22:04) kirik написал(а):
Цитата (sergeiss @ 10.04.2009 - 03:52) |
Да ну? smile.gif С каких-таких пор? |
Это усложняет отладку программы, это тормозит работу программы, это собака

Правильно, зачем писать грамотный код без нотисов / ворнингов, когда можно эти все ошибки слить куда подальше. Зачем писать $id = isset($_GET['id']) ? $_GET['id'] : null;, когда можно написать $id = @$_GET['id']; и радоваться жизни. А может вообще вывод ошибок отрубить?
Спустя 1 час, 10 минут, 23 секунды (10.04.2009 - 23:14) sergeiss написал(а):
kirik - ты хочешь сказать, что @ никогда не надо использовать?
Если да, то позволь не согласиться!!! Потому что - зачем нужен показ ошибок в браузере, если я могу спокойно отловить эти ошибки и выполнить какие-то действия по коррекции?
К тому же, при появлении неожидаемого сообщения в нештатном месте скрипта можно нежданно-негаданно наступить на грабли вида "Cannot modify header..."
Если да, то позволь не согласиться!!! Потому что - зачем нужен показ ошибок в браузере, если я могу спокойно отловить эти ошибки и выполнить какие-то действия по коррекции?
К тому же, при появлении неожидаемого сообщения в нештатном месте скрипта можно нежданно-негаданно наступить на грабли вида "Cannot modify header..."
Спустя 18 минут, 35 секунд (10.04.2009 - 23:33) kirik написал(а):
sergeiss, обычно для того чтобы ошибка не показывалась юзеру, делается подмена стандартного вывода ошибок своим (через функцию set_error_handler()). А там все ошибки ты можешь писать в лог (не показывая их юзеру), и по мере надобности / желанию фиксить. Во всех разработках по-хорошему нужно ставить error_reporting(E_ALL | E_STRICT);, не использовать ни каких собак, и писать нотисы в лог. Только так можно создать стабильное приложение. И на багфиксинг тратиться не особо можно
Юзеры сами покажут где в скрипте тонкие места


Спустя 15 минут, 4 секунды (10.04.2009 - 23:48) vasa_c написал(а):
неправильно
Код |
$fp = @fopen($filename, 'r'); /* Йа в домике, прога может накрыться, но я не вижу сообщений и мне хорошо. */ |
правильно
Код |
$fp = @fopen($filename, 'r'); if (!$fp) { throw new Exception('нах, нах...'); } /* Я корректно обработал ошибочную ситуацию, мне не нужны здесь эти идиотские нотисы, ни на экране, ни в логе. */ |
Спустя 8 минут, 47 секунд (10.04.2009 - 23:56) kirik написал(а):
Что с исключениями что без, собаки - зло

Спустя 12 минут, 38 секунд (11.04.2009 - 00:09) sergeiss написал(а):
vasa_c - да, примерно это я и имел ввиду
. Так и делаю. И не обязательно с исключениями, обычно через простую проверку результата. И мне тоже не хочется копаться в каких-то логах для поиска ошибок.
kirik - вот у меня в одном месте юзер вводит много параметров. Корректность части из них проверяется JavaScript, часть в ПХП. Но там столько возможных комбинаций параметров... Что все их контролировать просто сложно
Я проверяю только самые основные, самые частые ошибки.
Потом формируется запрос к БД... И вот тут как раз я проверяю запрос на ошибку.
Если есть ошибка - даю запрос юзеру на коррекцию параметров. Сам пусть думает, что у него "не так".
Вопрос: нафига юзер будет видет имена таблиц и мой запрос у себя в браузере? Это не нужно ни ему, ни мне.

kirik - вот у меня в одном месте юзер вводит много параметров. Корректность части из них проверяется JavaScript, часть в ПХП. Но там столько возможных комбинаций параметров... Что все их контролировать просто сложно

Потом формируется запрос к БД... И вот тут как раз я проверяю запрос на ошибку.
Если есть ошибка - даю запрос юзеру на коррекцию параметров. Сам пусть думает, что у него "не так".
Вопрос: нафига юзер будет видет имена таблиц и мой запрос у себя в браузере? Это не нужно ни ему, ни мне.
Спустя 8 минут, 33 секунды (11.04.2009 - 00:18) kirik написал(а):
Цитата (sergeiss @ 10.04.2009 - 16:09) |
И вот тут как раз я проверяю запрос на ошибку. |
На ошибку самого запроса?
зы. sergeiss, что-то нехорошее замышляет мужичок у тебя на аватарке

Спустя 7 минут, 27 секунд (11.04.2009 - 00:25) sergeiss написал(а):
Цитата (kirik @ 11.04.2009 - 00:18) | ||
На ошибку самого запроса? зы. sergeiss, что-то нехорошее замышляет мужичок у тебя на аватарке ![]() |
Да.
Типа
PHP |
$query=@pg_query( $sql ); |
Это позволяет даже при возникновении ошибки спокойно вызвать header(...) для перехода, либо записать информацию об ошибке в символьную строку и/или выполнить какие-то действия.
PS. А мужикок в аватарке просто устал от работы, отдыхает


PPS. И самое главное - такого рода защита дает мне меньше головной боли при разработке скрипта, т.к. я сразу же могу защититься от различных проблем, отработать ошибочные состояния.
Спустя 2 минуты, 36 секунд (11.04.2009 - 00:28) kirik написал(а):
Цитата (sergeiss @ 10.04.2009 - 16:25) |
Да. |
А оно того стоит, доводить до ошибки в запросе? Не лучше-ли проверять все возможные варианты?
Спустя 10 часов, 5 минут, 49 секунд (11.04.2009 - 10:33) sergeiss написал(а):
Цитата (kirik @ 11.04.2009 - 00:28) | ||
А оно того стоит, доводить до ошибки в запросе? Не лучше-ли проверять все возможные варианты? |
Не всегда получается.
Вот представь, что есть сложный запрос. В подзапросе сначала находятся данные из одной таблицы, которые используются для поиска данных в других таблицах. Например, перечень каких-то объектов, соответствующих определенным критериям. Но если набор данных окажется пустой, то запрос в целом будет ошибочным.
На момент формирования запроса такие тонкости неизвестны.
Изначально я могу только проверить, чтоб определенного типа данные были вообще введены, да чтоб начальная дата были меньше конечной.
Спустя 11 часов, 46 минут, 14 секунд (11.04.2009 - 22:20) kirik написал(а):
sergeiss, понял. Вопросов больше не имею
