Помощь - Поиск - Пользователи - Календарь
Полная версия: PHP
Форум KAZANHOME > Технологии > Все о программировании
Страницы: 1, 2, 3, 4, 5
daniil
Когда не подключается библиотека, её либо нет по указанному пути, либо она не той версии. PHP к Apache подключается двумя способами, первый - как CGI-приложение, а второй - как модуль. Ну и настраивается это дело в разных секциях httpd.conf ... Всё это гемор тот ещё! В ранних версиях были некие заморочки с подключением MySQL к PHP. Тогда тоже сервер dll-ку не видел, её приходилось либо в переменную среды писать, либо кидать в системную папку. В твоём случае может быть просто версия не та. ИМХО лучше не париться, ибо есть как готовые сервера (если тебе нужно именно веб-сервер на своём компе поднять), так и готовые серверные пакеты для тестирования ресурса, например Denwer. В никсах, всё что нужно, ставится при установке ОС, если поставишь, где надо, галки в визарде. Но раз уж винда, так винда. Юзай лучше Денвер и не трать время создания сайта на изобретение велосипеда (читай "разборки с конфигами"). Денвер ты можешь найти заломившись в Матрицу.
el_barto
Цитата(daniil @ 26.2.2008, 14:10) *

Но раз уж винда, так винда. Юзай лучше Денвер и не трать время создания сайта на изобретение велосипеда (читай "разборки с конфигами"). Денвер ты можешь найти заломившись в Матрицу.

Спасибо, очень помог! Скачал Денвер и установил, сейчас буду разбираться.
daniil
Там разбираться даж не придется smile.gif . Ставишь, он создаёт виртуальный диск. Например Z: В нем - есть папка Z:\home\localhost Которая прописана в httpd, теперь фича Денвера: если просто создать ещё вложенную папку Z:\home\localhost\example, то в неё можно пихать index.php и, перезапустив сервер, обращаться к тестируемому сайту так (в адресной строке браузера): "http://example.localhost/"
NuR
вах праграмисты блин, сервак для тестов не могут развернуть..... а что будет лет через 10..... страшно подумать :'(
daniil
Народ, у мну на сайте токой баг: не обновляется содержимое меню.

Ща расскажу. )) Исходник сюды писать я даж не знаю какой, хоть всё выкладывай.

Есть сайт, с индексом "index.php" Этот индекс имеет модульную структуру, подключен к нему заголовочный файл с описанием всех модулей (ну, функций просто php-шных, которые HTML верстают). И в ентом файле ниче, окромя вызовов модулей нету. Среди всех прочих модулей, есть модуль "меню".

Вот ща - самое интересное. Знаете, всякие разные выпадающие меню на CSS+JavaScript ? Так вот, я зделол всё на основе MySQL - базы с таблицой для каждого раздела сайта. Запись в таблице - это стаетйка на страничке. Но, когда обновляешь базу должно обновляться и меню, а не только контент сам по себе! Поэтому, дабы именно так все происходило, я и зделол модуль "меню", который рисует HTML-овский список (пункты меню) по значениям полей из БД. Все работает, все мне ндравится. Только один обидный баг:

Чтобы это "динамическое" выпадающее меню обновилось, надо чистить кеш или тыкнуть "обновить" в браузере (клиенте)! (( Чё там такое сохраняется в кеше от меню, что меню не обновляется само по базе данных? Ведь работает модуль, который читает базу и строит по ней меню. Из базы все удаляется с помощью PHPMyAdmin, я пока для удаления форму не зделал.

Тыкаешь "обновить" в браузере - и всё ништяк, но ежели просто, открыв браузер, грузишь страницу после предыдущей загрузки - выдает то же самое меню, не обновлённое.
sergei
Возможно просто браузер выдаёт страницу из своего кеша не запрашивая при открытии. Опера так любит делать чтобы не грузить все ранее открытые табы за раз. Если особо волнует эта проблема, то можно поиграться с E-Tag, вполне вероятно что браузер делает быстрый HEAD запрос, чтобы узнать не изменилась ли эта страница.
daniil
Получилось. Перед всем выводом скрипта (в заголовок html) дописал:

<? header("Cache-Control: max-age=60, must-revalidate"); ?>

Работает. Теперь выберу время для max-age побольше и все нормально )) И правда в кеше дело. dry.gif
daniil
Ребят, а может кто-нить инфу подкинуть, как в PHP5 работать с XML?

Дело такое, я сайт сделал на MySQL заказчик против. Я в шоке, но делать дальше надо. Так вот, то, что написано для PHP 4 для пятого не катит. И в разных книках наисано хз что. Например, Джон Коггзолл в Полном Руководстве по PHP5 пишет, что "в 4 версии PHP модуль DOM XML был экспериментальным, а из пятой он исключён вовсе" (стр 215 "Использование модуля DOM в PHP 4 и XSLT") Однако, код на подобие:

Код
<? function textmodul()
    {
     $doc = new domDocument;
     $doc -> load('articles.xml');
     $automarks = $doc -> getElementsByTagName("article");
     foreach ($automarks as $mark)
       {
       echo $mark -> nodeValue . "<br>";
       }
}
?>


У меня прекрасно работает ( PHP 5 ! на сервере). Но это разве не работа с DOM моделью файла XML? Дык, не должен же.

И в то же время не работает то, что выложено в мануалах на официальном сайте проекта PHP.

Я имею ввиду код, на подобие (вникать не надо, просто я как-бы пример привел):

Код
<?
$dom = domxml_open_file("c:/xml/existing_file.xml");
$root = $dom1->document_element();
// Массив дочерних элементов корневого
$root_child = $root->child_nodes();

for ($i = 0; $i < sizeof($root_child); $i++)
print("$i. ". $root_child[$i]->node_type(). " ". $root_child[$i]->node_name().
"<br/>");

// первый и последний дочерние элементы
$first_child = $root->first_child();
$last_child = $root->last_child();

print($first_child->node_name()." и ".$root_child[0]->node_name()." - одно и то же
");
print($last_child->node_name()." и ".$root_child[sizeof($root_child)-1]->node_name().
" - тоже совпадают
");

// элемент, следующий за первым
// previous_sibling работает точно так же
$second_child = $first_child->next_sibling();

print($second_child->node_name(). " ". $root_child[1]->node_name(). "
");
?>


Видите? Другие функции, объекты, - всё другое.

Так вот я никак не могу въехать в реализацию DOM модели для XML в PHP 5, если таковая вообще есть (в чем я уже сомневаюсь, несмотря на то, что работает первый из приведённых примеров). Можно, наверное воспользоваться SimpleXML, но тогда я точно ограничусь только сервером с PHP5.
sergei
Реализаций как всегда много и каждая под свою задачу

Первый пример использует модуль dom и будет работать только в PHP5.
Второй пример использует модуль domxml, он устарел и из PHP5 исключен.
Если нужна обратная совместимость, то есть модуль xml, он поддерживается всеми версиями PHP начиная с 3, но синтаксис там туговат (смотри функции с префиксом xml_).

Но я бы не стал тащить за собой такой мусор как поддержка РНР4, тем более скоро РНР6 обещают, это никак неоправдано.
sergei
ЗЫ: Если заказчик отказывается от установки MySQL, то рекомендую обратить внимание на SQLite. Это легковесная БД, не требует установленного сервера для него и самое главное модуль sqlite встроен в PHP5 по умолчанию.
daniil
Они не от установки MySQL отказываются, а говорят типа, "тебе сказали, делай на XML - делай на XML" )) Вот я щас и думаю, какой такой технологией воспользоваться, чтобы везде работало. Не знаю, может и нет такой для XML.
G@RFILD
А кто нибудь может подсказать, как правильно сделать форму отправки сообщений напрямую на Е-мейл?
G@RFILD
Все! Разобрался. Лучше подскажите, к4ак встроить в страницу скрипт, который будет проверять, введены ли данные в полях формы?

G@RFILD
ЭЭЭЙЙЙ! Чего, тема умерла чтоли?
NuR
вот так
Код
<form method="get" enctype="text/plain">
<input type="text" value="hello" id="tb" onclick="clearw();">
</form>
<script type="text/javascript">

function clearw()
{
var pusto=document.getElementById("tb").value;
if(pusto=='') alert("Пустое поле");
}

</script>

G@RFILD
А как сделать запароленную страницу, если у меня не используется база данных. Все хранится в файлах.
Нужно закодировать пароль!
Средствами ПХП. Тоесть чтобы его можно было менять! И ПХП автоматически кодировал его и записывал в файл. Потом если надо, раскодировал иди хз!
Deja Vu
Цитата(G@RFILD @ 29.3.2008, 0:21) *

А как сделать запароленную страницу, если у меня не используется база данных. Все хранится в файлах.
Нужно закодировать пароль!
Средствами ПХП. Тоесть чтобы его можно было менять! И ПХП автоматически кодировал его и записывал в файл. Потом если надо, раскодировал иди хз!

не совсем понятно что ты имеешь в видну, но ...
кодировать пароль ты можешь функцией
$result = md5($password);

На счет авторизации страницы:
http://rus-phpnuke.com/php/http-auth.html
http://www.softtime.ru/info/articlephp.php?id_article=34
G@RFILD
Спасибо тебе большое. Благодарен безмерно.
G@RFILD
Всем привет.
Вот ситуация. На сайте есть страница отчета. В нее постоянно добавляются данные самими пользователями. Надо чтобы при достижении определенного их количества скрипт создавал вторую страницу, третью и т.д. И как при этом сделать, чтобы это записывалось правильно. Работает без использования базы данных. Просто запись в файлы.
Заранее благодарен.
Deja Vu
Цитата(G@RFILD @ 27.4.2008, 17:13) *

Всем привет.
Вот ситуация. На сайте есть страница отчета. В нее постоянно добавляются данные самими пользователями. Надо чтобы при достижении определенного их количества скрипт создавал вторую страницу, третью и т.д. И как при этом сделать, чтобы это записывалось правильно. Работает без использования базы данных. Просто запись в файлы.
Заранее благодарен.

Не совсем понятна схема, по подробнее можно, что за файл, что за страницы.
Как данные из файла попадают на страницы .. и т.п.
G@RFILD
ну смотри. Типа гостевая книга. Пишут какой нибудь текст в форму с несколькими полями. То что они написали, записывается в файл. А потом, когда открываешь страницу с сообщениями, если их например больше 10, то сони разбиваются на 2 страницы. если больше 20 - то на 3 страницы. И это организовано должно быть не через базу данных а все файлы должны храниться в файлах. В обычных файлах.
Deja Vu
Цитата(G@RFILD @ 28.4.2008, 1:45) *

ну смотри. Типа гостевая книга. Пишут какой нибудь текст в форму с несколькими полями. То что они написали, записывается в файл. А потом, когда открываешь страницу с сообщениями, если их например больше 10, то сони разбиваются на 2 страницы. если больше 20 - то на 3 страницы. И это организовано должно быть не через базу данных а все файлы должны храниться в файлах. В обычных файлах.

И что из этого уже реализовано, где запор ... в том что бы на страницы разделить?
G@RFILD
Цитата(Deja Vu @ 28.4.2008, 2:07) *

И что из этого уже реализовано, где запор ... в том что бы на страницы разделить?

Понимаешь в чем дело. Реализовано все. Только реализовано неправильно. Я записывал в файлы все, включая HTML-тэги. А они должны быть всегда на странице. только я не знаю, как правильно разделить текст в файле, чтобы он вставлялся правильно в страницу.
Deja Vu
Цитата(G@RFILD @ 28.4.2008, 10:48) *

Понимаешь в чем дело. Реализовано все. Только реализовано неправильно. Я записывал в файлы все, включая HTML-тэги. А они должны быть всегда на странице. только я не знаю, как правильно разделить текст в файле, чтобы он вставлялся правильно в страницу.

Пример записываемого файла(файлов) в студию.
А так же, того
как это на странице выглядит.(Скринами вид в броузере покажи)
G@RFILD
Цитата(Deja Vu @ 28.4.2008, 14:31) *

Пример записываемого файла(файлов) в студию.
А так же, того
как это на странице выглядит.(Скринами вид в броузере покажи)


Код

$tootch="<CENTER>
<table border='1' width=60%>
  <TR>
    <TD width=10%>
<B><CENTER><h1>$num</h1></center></b>
    </td>
    <TD width=90%>
$message
    </td>
  </tr>
</table>
</center><!--00000000000000000000000000000000-->  ";



$fr = fopen("base.txt", "a+");
fwrite($fr, "$tootch");
fclose($fr);



Вот пример записи в файл. Вид в браузере, мне кажется ни к чему. Представь себе гостевую книгу, где данные хранятся в файлах. Вот и все. Только надо данные в файлах правильно структурировать.

Deja Vu
Цитата(G@RFILD @ 28.4.2008, 16:45) *

Код

$tootch="<CENTER>
<table border='1' width=60%>
  <TR>
    <TD width=10%>
<B><CENTER><h1>$num</h1></center></b>
    </td>
    <TD width=90%>
$message
    </td>
  </tr>
</table>
</center><!--00000000000000000000000000000000-->  ";



$fr = fopen("base.txt", "a+");
fwrite($fr, "$tootch");
fclose($fr);



Вот пример записи в файл. Вид в браузере, мне кажется ни к чему. Представь себе гостевую книгу, где данные хранятся в файлах. Вот и все. Только надо данные в файлах правильно структурировать.

самое простое, можешь сделать 1 файл на страницу... и добавить блок, который будет просматривать каталог и искать файлы по такой примерно маске base.\d{3}.txt (base.001.txt).
И соответственн
о создаешь динамически ссылки на каждую страницу.
а при открытии странице, проверяешь id этой страницы и открываешь соответственный файл. (например страница 4, значит открываем base.004.txt)
G@RFILD
так вот. а как в файле разделять сообщения разных пользователей и например имя-фамилию? и надо бы чтобы было в одном файле. иначе небезопасно как-то.
Deja Vu
Цитата(G@RFILD @ 29.4.2008, 15:02) *

так вот. а как в файле разделять сообщения разных пользователей и например имя-фамилию? и надо бы чтобы было в одном файле. иначе небезопасно как-то.

я тебе предложу лучше два таких подхода:
1) XML.
Вместо .txt файл
ов воздавать один XML файл и в нем хранить сообщения пользователей:

Код

<?xml ?>
<pages>
  <page id="1">
     <message author="some user" > some text</message>
     <message author="any user" > some text</message>
     <message author="noone user" > some text</message>
  </page>
  <page id="2">
     <message author="some user" > some text</message>
  </page>
</pages>

Или так, но тогда ты должен будишь вытаскивать для 1 страницы записи с id от 1 до N, на второй от N+1 до 2N и т.д.:
Код

<?xml ?>
<messages>
   <message id="1" author="some user" > some text</message>
   <message id="2" author="any user" > some text</message>
   <message id="3" author="noone user" > some text</message>
   <message id="4" author="some user" > some text</message>
</pages>


Если же тебе надо сделать форум линейный, тогда комбинируй 1вое и второе, только вместо pages у тебя будут теги тем -))


2) Сериализация.
Можешь создават обект и сериализовывать его ^_^ ... но тут проблема с асинхро
нным доступом, хотя если решишь эту проблему, то будет быстрее, но менее надежно.
Или же в ручную каждую запись представлять одной строкой, при том экранировать все знаки перехода и прочее, а при показе восстанавливать.

Код

some user|this is my message:\nHello world!
any user|bla\nbla\nbla
noone user|тихо всем.



---
Первый вариа
нт с XML лучше ;)
G@RFILD
Слушай, а нормальный вариант с переносом и разделителями, с массивом. Есть такое? =)
Deja Vu
Цитата(G@RFILD @ 29.4.2008, 22:31) *

Слушай, а нормальный вариант с переносом и разделителями, с массивом. Есть такое? =)

а сериализация это разве не оно и есть? ^_^
но вообще смот
ри в сторону XML.
и работай через SimpleXML - будет легче.
G@RFILD
Просто я пока далек от понимания XML. =(
Deja Vu
Цитата(G@RFILD @ 30.4.2008, 16:14) *

Просто я пока далек от понимания XML. =(

XML это плюша.. почитай про него 1-2 статьив интернете ... там все просто.
Очень похоже на HTML ;)
Photon
Как можно записать в xml файл новый элемент в php5. Я пробовал так
Код

$newNode = $root_element->createElement($name,utf8_encode($content));
$root_element->appendChild($newNode);
$text = $xml->dump_mem();
$fp = fopen($path,'w');
fwrite($fp,$text);
fclose($fp);

тут он ругается на createElement (Fatal error: Call to undefined method DOMElement::createElement()) Пробовал как в php4 тоже не работает. Помогите, плиз
Deja Vu
Цитата(Photon @ 30.4.2008, 23:04) *

Как можно записать в xml файл новый элемент в php5. Я пробовал так
Код

$newNode = $root_element->createElement($name,utf8_encode($content));
$root_element->appendChild($newNode);
$text = $xml->dump_mem();
$fp = fopen($path,'w');
fwrite($fp,$text);
fclose($fp);

тут он ругается на createElement (Fatal error: Call to undefined method DOMElement::createElement()) Пробовал как в php4 тоже не работает. Помогите, плиз

http://ru2.php.net/domxml

DOMElement НЕ ЕСТЬ DOMDocument
как ты создал $root_element?
Photon
Цитата(Deja Vu @ 1.5.2008, 23:40) *

http://ru2.php.net/domxml

DOMElement НЕ ЕСТЬ DOMDocument
как ты создал $root_element?

Спасибо за внимание к проблеме. Ну ее я уже решил. Возможно, кому-то будет интересно. Я сделал след. образом
Код
$xml = domDocument::load($path);
$root_element = $xml->documentElement;
$newNode = $xml->createElement('body', utf8_encode('Тело'));
$root_element->appendChild($newNode);
$newNode->setAttribute('attrib', utf8_encode('атрибут'));
$xml_result = $xml->saveXML();


G@RFILD
Ну все таки! =) Если плюшка - разберусь! =) А с регулярными выражениями типо Foreach и explode. Вот бы узнать как это точно сделать!
Deja Vu
Цитата(G@RFILD @ 3.5.2008, 22:42) *

Ну все таки! =) Если плюшка - разберусь! =) А с регулярными выражениями типо Foreach и explode. Вот бы узнать как это точно сделать!


Регулярные выражения это вам мой друг отдельно учить надо...
+ Они долго работают ...
Лучше split использовать.
Photon
По-моему, все-таки для работы с XML лучше использовать Document Object Model (DOM), все предельно ясно. Хотя есть такой момент, что в php4 и php5 функции для работы с этой моделью сильно разлизаются.
G@RFILD
А по XML который с PHP учебник есть? Лучше, чтобы и то и другое в одном учебничке. Ото либо XML, который в каждом утюге кроме ПХП используется, либо нет. =-)
Photon
Цитата(G@RFILD @ 5.5.2008, 12:00) *

А по XML который с PHP учебник есть? Лучше, чтобы и то и другое в одном учебничке. Ото либо XML, который в каждом утюге кроме ПХП используется, либо нет. =-)

У меня есть пару толковых статей по работе с XML в php. Правда, одна на английском, но есть и на русском smile3.gif
G@RFILD
А скинь на русском? =) Буду благодарен.
Photon
Цитата(G@RFILD @ 8.5.2008, 12:50) *

А скинь на русском? =) Буду благодарен.

Вот сюда кинул ftp://digital.kazandom.ru/incoming/php&xml_article/ пару статей (см. файл с окончанием rus)
G@RFILD
Огромное спасибо. Действительно понятный текст! =) Вот пример того, какими должны быть учебники!
Photon
Цитата(G@RFILD @ 9.5.2008, 20:05) *

Огромное спасибо. Действительно понятный текст! =) Вот пример того, какими должны быть учебники!

Всегда рад помочь smile3.gif
G@RFILD
Понимаю, что не в тему, но вопрос такой. Как сделать в HTML, чтобы определенное поле формы было выделено сразу.
G@RFILD
Ребята. Ну помогите уж кто нибудь. Мне кажется что кто-нить должен знать, как это сделать чисто HTMLом Без всяких JavaScript/
~ПозитиФФФ~
подскажит плиз какими программами редактировать php страницы? и по возможности киньте плиз на фтп smile3.gif
Photon
Цитата(~ПозитиФФФ~ @ 20.5.2008, 18:02) *

подскажит плиз какими программами редактировать php страницы? и по возможности киньте плиз на фтп smile3.gif

Хоть в блокноте smile3.gif На самом деле лучше, конечно, PHP Expert Editor. На артвиде есть. В поиск пиши php expert. Если не найдешь, кину на ftp.

Цитата(G@RFILD @ 18.5.2008, 3:14) *

Понимаю, что не в тему, но вопрос такой. Как сделать в HTML, чтобы определенное поле формы было выделено сразу.

Что значит выделено, фокус ввода (курсор) что ли нужно установить в поле формы? Тогда просто html - ом не получится (на сколько я знаю). javascript не такой уж страшный используй его, все-таки. Пиши типа по событию onload установить фокус.
~ПозитиФФФ~
Цитата(Photon @ 20.5.2008, 23:09) *

Хоть в блокноте smile3.gif На самом деле лучше, конечно, PHP Expert Editor. На артвиде есть. В поиск пиши php expert. Если не найдешь, кину на ftp.



агась, спасибо, уже скачал с матрикс версию 3.1..жаль что на инглише, ну да ладно) а как отредактироват файл config.in.in пробовал на через блокнот, кодировка не та видимо, иероглифы всякие =(
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.