Угу.. по ошибке...
интересно а как он окажется не проинициализированным
ведь тогда будет пустое значение.
тоесть эта переменная должна или передаватся скрипту - или устонавливатся в нем.
если передоватся - то надо делать проверки на содержание
и ваще так никто не делает
когда передается параметр такой
проще передавать id
тоесть чтото типа
Global $id;
$root[1]="";
$root[2]="";
........
$root[n]="";
include $root[id]."/library.php";
короче невижу проблеммы...
и чтото я не вижу принипиальной разницы с
$root = $_GET['root'];
include $root."/library.php";
ну эт более показательный пример.
но тут уже просто есть правила пограмирования
создание массива(в сях это какраз выделение памяти и т.д.) и потом его наполнение
вывод
если не умеете програмить - тогда глобался надо закрывать.
на мой взгляд.
Member
Статус: Не в сети Регистрация: 02.08.2005 Откуда: Казань
Nec
Цитата:
Угу.. по ошибке... интересно а как он окажется не проинициализированным ведь тогда будет пустое значение.
Неверно. Если по каким-то причинам (а такое было возможным - уверяю вас) будет пропущена операция присваивания переменной значения, то в таблицах интерпретатора ее не будет вообще. И в таком случае возможна подмена ее с пом. глобальных. Как я уже сказал - в сложных сценариях, насчитывающие несколько файлов, включающих друг друга, уследить за глобальными переменными очень трудно.
Первый пример уязвимости - такая ошибка, как я уже сказал, неоднократно обнаруживалась и устранялась в этом самом форуме - phpBB. Второй - тут же, в версии 2.0.8 Уже говорилось на пред. странице.
Цитата:
вывод - если не умеете програмить - тогда глобался надо закрывать.
Ну, идите тогда к разработчикам этого форума, и говорите, какие они глупые, совсем не умеют программировать.
Вообще говоря - PHP это вам не Си. Сишная практика программирования тут мало применима. За всем здесь уследить довольно трудно.
_________________ Feci quod potui, faciant meliora potentes.
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
register_globals = off
1). Более безопастно, невозможно больше определить глобальную переменную просто так, так как они определяются теперь в специальных суперглобальных массивах $_POST и $_GET, а так же $_SERVER, $_SESSION, $_COOKIE
2). Так как на каждый вид переменных свой масив, не появляется что в сессии, POST, GET и.т.д. совпадут имена переменных Очевидный плюс.
3). Логика хранения переменных удобна и ясна. ненадо вспоминать что это за переменная - кукис. сессия или с post запроса, это видно наглядно.
Там писали про версию с IRC сервером и WEB, думаю вполне подойдёт. А вообще чат обычно требует демона запущенного, что само по себе требудет больше чем просто Apache + PHP + MySQL. Частенько это делают на Perl/TCL/C/C++. Так же очень трезвая мысль была по поводу Java аплета Это идиальный вариант на мой взгляд. Поищи поиском какие нить чаты, по форумам почитай. Я лично не ставил ниразу.
Помогите пожалуйста.
Не могу понять, как с помощью PHP в базе данных (MySQL) создать табличку? Задумался тут, на досуге...
Строка типа - $crtable = mysql_query("create table users (id_user in(6) not null auto_increment, login text, primary key (id_user))type=myisam");" не проходит по известной причине. Функция mysql_query поддерживает только эти запросы - SELECT, SHOW, EXPLAIN, DESCRIBE...
Может в PHP функция есть для этого, которой я просто не знаю???
Или решения вообще нет и придётся каждую новую табличку вручную создавать??? Хотя, это абсурд...
Это над вами пошутили или вы сами головой ударились ?
Ой, точно точно, я сам ударился...
Может кто-нибудь тогда приведёт код с использованием функции mysql_query для создания таблицы в БД. А то у меня из консоли всё получается, а через mysql_query нет...
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
Кстати советик всем "мега-спецам" Если вы программируете не так давно то лучше предусмотреть DEBUG_MODE, т.к это предотвратит подобные "детские" ошибки
Делается это примерно так...
Код:
<?php define('DEBUG_SQL', true); // конфигурация режима true/false (вкл/выкл)
// далее ваш код ... ... $link = mysql_query("..."); // далее после каждого запроса if(DEBUG_SQL && mysql_error()) die(mysql_error());
// и далее опять ваш код ... ... ?>
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Advanced member
Статус: Не в сети Регистрация: 13.11.2002 Откуда: msk.ru
Вставлять отладочный код после каждого запроса тож не есть гуд... Если в файле под 1к строк - намучаешься...
Я себе класс небольшой написал, а в нем такое:
Код:
// Performing query function sql_query($query) { $this->queries_nm++;
Member
Статус: Не в сети Регистрация: 28.03.2005 Откуда: Латвия, Рига
virus писал(а):
Юрий Для тех кто за РНР сел недавно код в 50 строк (с парой запросов к БД) уже достижение... (а более опытные и сами знают как им дебугить)
прально А вообще лично я себе написал целый класс для работы с базой данных и им пользуюсь вовсю, и дебагинг встроенный по принципу true/false, и прочие удобства
Advanced member
Статус: Не в сети Регистрация: 13.11.2002 Откуда: msk.ru
Ясно...
Кстати народ, давайте перейдем к более продвинутым вопросам. Кто как решает проблемы с обработкой кавычек прежде чем положить данные в БД? То что надо контролировать magic_quotes и проч. можете не объяснять. Я просто тут попал в ситуацию... слеширую вход исходя из настроекк ... у меня ошибки в форуме только средствами php обрабатываются, соотв. если у меня в форме была ошибка данные уже в прослешированном виде уходят опять в форму. Сейчас-то мне проще шаблонизатор поправить конечно Хоть и криво, но смогу показать, а позже переделаю.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения