Vladiger
User-
Posts
121 -
Joined
-
Last visited
Content Type
Profiles
Forums
Calendar
Store
Everything posted by Vladiger
-
А разве страница отображается не в центре браузера? Я точно не знаю, но по моему окно браузера можно подвигать по экрану Жаваскриптом, только зачем?
-
Понятно. Только не понятно, зачем городить такой огород. Это все в HTML верстке можно сделать. Просто засунь всю эту свою таблицу с выводом данных в контейнер с абсалютным поиционированием и все. Все твои данные итак будут внутри этого контейнера.Ну типо вот так например: <?php print "<div style="background: url(http://cards2.yandex.net/get/1/797/gora.jpg); border: 1px solid #000; width:500px; height:500px; position:absolute; top:100px; left:300px; overflow-y: auto;">"; while($row = mysql_fetch_array($result)) { print "Автор: {$row['name']} Дата обновления:{$row['date']}... и.т.д"; } print "</div>"; ?>
-
do { printf ("<table align='center' class='post'> Вывод автора, даты добавления и т.п."); } while (...); Чет я немного не понял, это чего за цикл такой (бесконечный)? Где уловие? Вот начало цикла я вижу do, а условие то где while (тут должно быть условие) И еще вопрос не понятен в контексте: - А чего вывести то нужно вообще?
-
Все это прекрасно, только вот нафига такие заморочки с классами, объектами и.т.д... Если эта статья для "новичка", то ИМХО классы для него "темный лес"... Весь скрипт действительно можно реализовать 2-4 мя строчками (без всяких классов)... <?php $mtime = explode(" ", microtime()); $start_time = $mtime[1] + $mtime[0]; ############################## # Ваш скрипт ############################## $mtime = explode(" ", microtime()); print "Страница сгенерирована за ".round((($mtime[1] + $mtime[0]) - $start_time), 5)." сек."; ?>
-
Что бы не мучаться н JS с подсчетом суммы и не дай бог случайно слетела связь с клиентом или по каким то другим причинам клиент не получил данные средствами JS сделай следующее: Задействуй дополнительную таблицу в БД, в которую будут записываться ID товара и какой нить уникальный ID клиента (его можно в куки клиенту засунуть). Клиента можно по IP распознавать, но лучше все-таки писать ему в куки какой нить Хеш или просто условный номер. Теперь путем не сложных операций на PHP ты сможешь сгенерировать клиенту HTML страничку не только с общей суммой, а так же с любыми другими данными о товаре (общий вес, максимальные габариты, общее количество градусов алкоголя и.т.д и.т.п шутка конечно). Записи в БД старше некоторого времени (например сутки или 12 часов или 1 час) из БД следует удалять, таким образом эта вспомогательная таблица в БД послужит тебе самой ГЛОБАЛЬНОЙ КОРЗИНОЙ всех клиентов и никогда не переполнится, за исключением случая одновременной покупки всех твоих товаров, всеми клиентами находящимися в интернете в течении суток, 12 часов или 1 часа. Но если же такая ситуация все таки произойдет, то думаю тебе больше незачем будет держать On_Line магазин, так как прибыль от такой продажи вполне позволит тебе выкупить Майкрософт и не париться!!!
-
Я тоже так считаю и именно об этом пытался предупредить спрашивающего. Но видимо его все устраивает и больше менять он ничего не хочет. Можно конечно оставить и JS но я предупреждал что это "как варриант". Во первых: - Зачем использовать 2 языка програмирования если с простейшей задачей можно справиться и средствами PHP. Во вторых: - Вся эта затея с переадресацией не будет работать у клиентов, у которых в браузере отключен JS. В отличае от header("Location: Адресс") который будет работать в любом случае. ИМХО переадресация при помощи заголовков header("Location: Адресс") - это самая корректная переадресация которая работает независимо от браузеров клиента. Ну то есть это как бы базовое перенаправление страницы, которое любой браузер знать просто ОБЯЗАН... А вот с JS не все так гладко. Кстати помимо JS можно ведь еще и мета тег использовать <meta http-equiv='REFRESH' content='0; URL=Адрес перхода'> Но я бы не стал использовать ни JS ни мета тег. PS Евген - Просто рекомендую все-таки построить алгоритм вашего скрипта немного иным способом, а именно не писать ничего в страницу коммандами echo или print до тех пор, пока не сделаете все обработки данных.
-
Вот по этому данные и остаются. Потому что редирект не происходит, стало быть и ничего не происходит... Не забывайте о том что изменять заголовок документа можно только в том случае, если до этого изменения не было ни одной комманды echo или print... Вообще-то в этом случае у вас в браузере интерпретатор PHP должен выдать ошибку и вы это увидите, но если у вас на сервере отключена отладочная информация, то вы можете просто не видеть эту ошибку. Узнать более точнее об ошибках можно прописав в начале скрипта error_reporting(E_ALL); Как варриант можно использовать переадресацию жабаскриптом. if (isset($_POST['submit'])) { ### Обрабатываем данные и записываем в БД ### print "<script>window.location.href = '".$_SERVER['PHP_SELF']."';</script>"; } Ну лучше постарайтесь построить алгоритм скрипта таким образом, что бы до обработки данных в страницу ничего не печаталось, так будет более удобно, а может быть даже и более грамотно. Собственно проглядел вот что: Это и есть ошибка. Вы не можете менять заголовок документа, так как уже начали печатать в страницу. Измените алгоритм вашего скрипта или используйте жабаскрипт для переадресации...
-
Выражайтесь пожалуйста точнее: - Что именно не получается? Не сохраняются данные в БД? Не редиректится страница? После редиректа остаются данные отправленные методом POST?
-
Эти данные хранятся в браузере и сколько раз вы бы не нажимали кнопочку "ОБНОВИТЬ" (F5) данные из формы будут передавиться снова и снова и никакими средствами вы эти данные не сбросите. Именно по этому после обработки и записи этих данных в БД делайте редирект на этот-же скрипт (или на любой другой). if (isset($_POST['submit'])) { ### Обрабатываем данные и записываем в БД ### header("Location: ".$_SERVER['PHP_SELF']); } После редиректа данные POST отправлены не будут.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript"> function toggle_show(id) { document.getElementById(id).style.display = document.getElementById(id).style.display == 'none' ? 'block' : 'none'; } </script> </head> <body> <ul> <li>Название 1</li> <li onClick="toggle_show('bla-bla2')">Название 2 <ul id="bla-bla2" style="display: none"> <li>Бла Бла Бла</li> <li>Бла Бла Бла</li> <li>Бла Бла Бла</li> </ul> </li> <li>Название 3</li> </ul> </body> </html>
-
Разница в том, что в случае чтения всех полей таблицы (SELECT * FROM table) элемент $a_row['image'] будет в любом случае установлен, так как это название поля таблицы, которое и становится элементом массива. Не зависимо от того что содержит это поле таблицы, функция isset() всегда определит что такой элемент есть, стало быть этой функции isset() абсалютно до "фени" пустой этот элемент или нет, главное что он есть. А вот функция empty() определяет именно содержимое этого элемента (пустой или нет). Но на практике, не обязательно использовать функцию empty() что бы определить пустая переменная или нет. Достаточно простого условия if ($a_row['image']) print "Элемент не пустой"; else print "Элемент пустой"; Эту запись можно еще упростить если действие по условию только одно (например печать). print $a_row['image'] ? "<img src='".$a_row['image']."'> " : "";
-
На смену CSS придет XSS
-
Я поблагодарил человека и сделал небольшие замечания. Это плохо? То есть вы считаете что людям не стоит делать замечания, так как каждый должен писать Ну если вы сами определили рамки приличия и того как хочется писать, ответьте мне пожалуйста: - А я имею это право? (писать так как хочется).
-
vasa_c - Супер!!! Заработала!!! PHP xDebud - Рулит аднака!!! Спасибо за информацию, не плохое пополнение копилки знаний. Вполне может пригодиться. PS Вот только со статьями на форумах будь впредь немного посерьезнее. Только не обижайся, твоя информация действительно полезная, но написана как будто выпускником из младшей группы детского сада. Вот ты например пишешь обращая внимеание на текст в скобочках. Не нужно "надеяться", твою статью может читать и "чайник", но при этом он может не знать где находится папка с библиотеками php, но прекрасно представлять о чем идет речь. Так вот гораздо корректнее было бы просто указать эту дирректорию на примере (usr/local/php/extensions/). Пусть это выглядит несколько банально, но зато конкретно и не оставляет дополнительных вопросов. Ну и так в целом еще некотороые места тоже требуют небольшой коррекции, просто создается впечатление что ты не статью пишешь, а так сказать "ЖЖОШЬ" или прикалываешься над чайниками. А в целом очень поучительно. Еще раз спасибо! Разобрался я с этим ИксДебагером.
-
vasa_c - Почитал я про профайлеры и сразу возник вопросик. А есть профайлер для версии PHP ниже пятой. Ну для PHP 3 или PHP 4 есть такие профайлеры? Вопрос в корне: - ЕСТЬ или НЕТ? (апгрейдиться не предлагать, потому как суть в другом.)
-
Да-да-да!!! Все гениальное просто. Если вопрос был только в скорости выполнения, но не в удобстве и других целях, то вот вам скриптик таймера в помощь. Измеряйте!!! <?php $mtime = explode(" ", microtime()); $start_time = $mtime[1] + $mtime[0]; ################################## # # Здесь код вашего скрипта # ################################## $mtime = explode(" ", microtime()); print round((($mtime[1] + $mtime[0]) - $start_time), 4); ?>
-
Все что я отвечу, это сугубо мое мнение ИМХО. Можете не брать в счет это как аксиому, но все-же: Я считаю что MySQL это всего навсего база данных. Конечно сервер MySQL позволяет выполнять некие математические операции, но лично я, использовал бы MySQL только для чтения и хранения информации. Лишь только малую часть возможностей MySQL я бы использовал в SQL запросах, только в том случае если по другому запрос не выполнить (зависит от поставленной задачи). Повторюсь: - Это лично мое мнение.
-
Задача, просто сделать паузу в функции... Чего же тут не понятного? Паузу или дождаться выполнения какого либо действия, например функция может получать или передавать данные методами POST или GET. Так вот нужно дождаться пока данные обработаются и возвратятся в какую нибудь переменную, а затем продолжить выполнение функции, с того момента где она была преостановлена. PS Мне тоже интересно, а как такое сделать?
-
Этим как правило не "решаются проблемы", а наоборот реализуются програмные решения (алгоритмы). Попробуйте сами придумать где это можно применить. Вот вам пример: - После заполнения формы все данные отправятся в БД, а в форме к примеру 20 полей (не нада спрашивать каких именно, не важно, пусть это будут системные настройки для сайта). Так вот все поля передаются в виде массива $_POST ключами которого являются имена полей таблицы, ну а данные соответственно являются данными. И только одна лишняя кнопочка, а именно кнопочка SUBMIT, которая тоже имеет свое имя, по которому мы и определим из какой формы были получены данные методом POST (ведь форма может быть не одна, тоже к примеру). Так вот что-бы не городить огород с проверкой каждого ключа массива, его ведь можно просто пересчитать функцией foreach($_POST as $k => $v); но при этом ключ SUBMIT окажется лишним и что-бы он не пересчитывался в цикле, перед началом цикла этот ключ необходимо сбросить. Итак весь алгоритм заполнения 20 полей таблицы будут выглядеть в трех строчках програмного кода: if (isset($_POST['submit'])) { unset($_POST['submit']); foreach($_POST as $k => $v) mysql_query("UPDATE my_table SET $k='$v' WHERE id=1"); } Суть понятна или нет? Ведь полей в таблице может быть не 20, а 100 (тоже к примеру). Так вот unset(); позволит избавиться от лишних ключей массива. Собсна а к чему этот вопрос про надобность использовать unset() или нет?
-
unset($HTTP_POST_VARS['var']); У меня работает прекрасно, но как варриант попробуйте: unset($_POST['var']);
-
vasa_c - У вас есть что либо по делу? Или может просто так пофлудим в этой теме? Вот попробуйте посудить сами: - Если бы я был влядельцем этого Апача, я бы просто взял, да отключил режим SAFE MODE. Нету у меня таких привелегий, неужели это не понятно из всех сообщений. Конечно я запускаю скрипт как Апачевский пользователь, напрямую из браузера... Просто тыкаю по ссылке http://www.mydoman.ru/write.php Более того я даже не уверен что могу изменять настройки сервера при помощи .htaccess не говоря уже про php.ini Может вы все-таки по делу что-то посоветуете? А то наш диалог больше напоминает дуэль "кто умнее"... Мне просто насрать на уровень своего интелектуального развития, пускай умнее будете вы. Но в то же время мне хочется найти решение проблемы, а не сражаться в интеллектуальном поединке. Если по самой проблеме ничего пока нет, то спасибо и на этом!!!
-
Читайте первое сообщение темы. Именно в нем описана проблема. Как изменить содержание файла с атрибутами CMOD 0644 исполняющим скриптом?
-
Да нет... Хостинг конечно бесплатный, но суть проблемы сводится к тому, что стандартными методами, для "всеобщего" использования, я не могу менять содержимое файлов с атрибутами CHMOD 0644. Даже если мне и удастся каким-то образом осуществить это у себя на сервере, то у любого другого пользователя, который использует мой скрипт возникнут те-же самые проблемы, так как скрипт может оказаться на любом сервере...
-
Конечно в привелегиях, так я о чем и спрашиваю? Почему у меня не достаточные привелегии изменять свои-же файлы скриптом. Убрал я @ и никаких сообщений сервера не выводится. Даже дописал строчку в начале скрипта error_reporting(E_ALL); и все тщетно... Никаких сообщений об ошибках и предупреждений... Если я не доверяю самому себе, тогда кому-же мне еще доверять? Ну проверил, и что? Прописал пару строчек вывода статистики об обойх фалах... print "<pre>"; print_r(stat("source.php")); print "<pre>"; print_r(stat("write.php")); UID пользователя одинаковые на обоих файлах. Впрочем они не могут быть разными, я закачивал оба файла FTP клиентом одновременно, почему они должны быть разные? В общем я так понял что сервер работает в режиме SAFE MODE и блокировал мне вообще выполнение таких функций как chmod, link, unlink и еще куча подобных функций, которые как раз изменяют привелегии... Остается вопрос, как тогда вообще работать на таком сервере если он мне все блокировал? Есть какие-то средства обхода режима SAFE MODE? Речь сейчас идет не о хаккерстве, а о моем сервере, на котором я ничего не могу сделать с файлами, на которых установлены атрибуты CHMOD 0644...
-
Опа-а-а-а!!! Прикольная штука... Браво Tokolist!!! Как компрессор в принципе самое то, к тому же еще и шифрует сам код... Жалко только что процесс необратим... Не совсем то что хотелось бы, но тоже интересная вещь. Скачал себе на всякий случай...