RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 393
от 08.07.2006, 21:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 311, Экспертов: 39
В номере:Вопросов: 4, Ответов: 10


Вопрос № 48003: Добрый день! У меня такой вопрос. Допустим есть файл в котором есть определённый текст и вот допустим 2 пользователя одновременно считали данные из файла и один начал редактировать и закрыл доступ к файлу, послередактирования сохранил изменения в это...
Вопрос № 48006: Доброго времени суток уважаемые эксперты. У меня опять назрел вопрос. в моем сайте есть несколько директорий www (в которой будет содержаться формы) db (база данных) cong (конфиги) prov (файлы обработчики) im (файлы картинок и генереции картинок)...
Вопрос № 48041: Здравствуйте уважаемые эксперты. Вопрос такой: Что лучше выводить HTML как HTML пример <html> ..... <? PHP код ?> .... <html> Или <? echo '<html> .......'...
Вопрос № 48042: Здравствуйте товарищи эксперты. У меня срочный крик о помощи. Я пернес все на физ пространство провайдера. Но у меня постоянно срабатывает зашита. код зашиты ниже приведен. Что я только не делал. и делал $_POST['username'] or .... и проверял на о...

Вопрос № 48.003
Добрый день! У меня такой вопрос. Допустим есть файл в котором есть определённый текст и вот допустим 2 пользователя одновременно считали данные из файла и один начал редактировать и закрыл доступ к файлу, послередактирования сохранил изменения в этом файле. как сделать так чтобы второй получил данные после редактирования. первым этого файла? Надеюсь вопрос понятем. Заранее спасибо!
Отправлен: 03.07.2006, 12:17
Вопрос задал: Грицай Алексей Юрьевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Mamont
Здравствуйте, Грицай Алексей Юрьевич!

Этого сделать никак нельзя поскольку клиенты подключаются к серверу на очень короткий промежуток времени и после получения данных связь с ними ПОЛНОСТЬЮ теряется.

---------
Иногда движение вперед-результат пинка под зад
Ответ отправил: Mamont (статус: 2-ой класс)
Ответ отправлен: 03.07.2006, 16:20
Оценка за ответ: 4

Отвечает: Цепковский Антон Сергеевич
Здравствуйте, Грицай Алексей Юрьевич!

Непонятно что делается с фалом, файл просто редактируется пользователями? Возможно можно использовать функции блокировки файла для того, что бы не дать второму пользователю прочитать/записать файл, пока первый пользователь не закончит. Например, во время редактирования файла первым пользователем выводить ошибку что файл занят, попробуйте позже.

Вот эта функция возможно Вам поможет:
flock
Блокирование файла.

Синтаксис :
bool flock(int $f, int $operation [, int $wouldblock])

Функция устанавливает для указанного открытого дескриптора файла $f режим блокировки, который бы хотел получить текущий процесс. Этот режим задается аргументом $operation и может быть одной из следующих констант:
LOCK_SH (или 1) - разделяемая блокировка;
LOCK_EX (или 2) - исключительная блокировка;
LOCK_UN (или 3) - снять блокировку;
LOCK_NB (или 4) - эту константу нужно прибавить к одной из предыдущих,
если вы не хотите, чтобы программа подвисала на
flock() в ожидании своей очереди, а сразу возвращала
управление.

В случае, если был затребован режим без ожидания, и блокировка не была успешно установлена, в необязятельный параметр-переменную $wouldblock будет записано значение истина true.
В случае ошибки функция возвращает false, а в случае успешного завершения - true.

Приложение:

---------
Вся наша жизнь - RPG

Ответ отправил: Цепковский Антон Сергеевич (статус: 2-ой класс)
Ответ отправлен: 04.07.2006, 09:56
Оценка за ответ: 5


Вопрос № 48.006
Доброго времени суток уважаемые эксперты. У меня опять назрел вопрос.
в моем сайте есть несколько директорий www (в которой будет содержаться формы) db (база данных) cong (конфиги) prov (файлы обработчики) im (файлы картинок и генереции картинок)
такой вопрос: как правильно задать "header()" и "<form action>" из файла обработчки на www - обратно к форме показаввода данных как правильно подключиться к базе данных, (ведь простой $db=mysql_pconnect('localhost','root',"","dbmydb"); ) уже не срабоатет.
и как тогда передать параметр в ссылке, как в этой ( <img src='code.php?<? echo SID; ?>' width=101 height=26 vspace=5> ). Заранее благодарен за ответы.
Отправлен: 03.07.2006, 12:27
Вопрос задал: Чинга (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Чинга!
Насколько я понимаю речь идет о переносе сайта на сервер провайдера.
1)В header и action можно задавать относительные пути, абсолютные пути или ПОЛНЫЙ URL: http://sitename.com/path/to/file
2)Имя пользователя и пароль на mysql Вам должен сообщить провайдер
3)параметры в ссылках (как и все переменные) могут зависеть разве что от опции register_globals в php.ini провайдера - никаких других проблем возникнуть не должно
Ответ отправил: PVS (статус: 6-ой класс)
Ответ отправлен: 03.07.2006, 12:41
Оценка за ответ: 4
Комментарий оценки:
Да, Вы правы. Речь идет о переносе.Поясните немного подробнее пожалуйтса.
Но если быть точнее разве header ("local host: page.php") сработает, при условии того что сам обработчик будет лежать в папке prov а 'page.php' будет лежать в папке www? Хотелось бы точнее. Особенно со ссылкой.


Вопрос № 48.041
Здравствуйте уважаемые эксперты.

Вопрос такой:

Что лучше выводить HTML как HTML пример
<html>
.....
<?
PHP код
?>
...
<html>

Или
<?
echo '<html>
........';
PHP код
echo'
........
</html>';
?>

в echo вставляю переменные таким образом echo '...'.$var.'...'; если это вдруг важно.

Желательно обосновать.

Заранее спасибо.
Отправлен: 03.07.2006, 19:07
Вопрос задал: Alexo (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PVS
Здравствуйте, Alexo!
Без разницы. Броузер все равно получит тот же результат. Как писать - дело привычки(иногда удобочитаемости).
Ответ отправил: PVS (статус: 6-ой класс)
Ответ отправлен: 03.07.2006, 19:15
Оценка за ответ: 3
Комментарий оценки:
Интересно узнать про скорость выполнения.

Отвечает: Марк Крейн
Здравствуйте, Alexo!
Браузер, конечно, получит. Но скорость выполнения будет выше если вы будете выводить html отдельно от php кода. Потому что при выводе html-кода через инструкцию "echo", тратятся дополнительные ресурсы.
Ответ отправил: Марк Крейн (статус: 7-ой класс)
Ответ отправлен: 03.07.2006, 21:00
Оценка за ответ: 5
Комментарий оценки:
То что надо! Спасибо.

Отвечает: Madproger
Здравствуйте, Alexo!

Ну это смотря что выводить. Если просто подставить пару каких то переменных то конечно лучше первый способ.

<html>
<head>
<title><?=$title; ?></title>
</head>

......

Но если на РНР производятся какие то сложные вычисления, обработка данных и т.д. то (насчет скорости спорить не буду - это вопрос спорный) ты столкнешься с проблемой чтения и модификации своего же кода (проверено :) )
В данном случае советую либо выносить обработку и вывод хтмл либо в отдельные функции либо в отдельный файл, а бизнес-логику отдельно. Либо использовать шаблоны (это даже лучше). В PEAR есть простой стандартный FastTemplate. Чтобы не использовать всего PEAR, выдери файл IT.php и замени там обработку ошибку своими методами - получится очень неплохой шаблонизатор :)
---------
И будет вам счАстиЕ!
Ответ отправил: Madproger (статус: 8-ой класс)
Ответ отправлен: 04.07.2006, 10:11

Отвечает: Cimus
Здравствуйте, Alexo!
Ваш первый вариант будет работать быстрее, т.к. php не будет тратить ресурсы на функции print и echo, второй вариант тоже может работать достаточно быстро если строку которую надо отправить в браузер заключать в одинарные кавычки при условии, что в этой строке нет переменных(когда php встречает строку заключённую в двойные кавычки он дополнительно анализирует её на наличие переменных и в случае если найдёт её то на её месте появиться содержимое этой переменной, пример - print "privet $name" - выведет на экран privet и содержимое переменной $name ). На мой взгляд лучьше отделять php от html , это сделае код более читабельным и понятным, а html код лучьше выводить используя шаблоны - это конечно медленней, но намного лучьше, к примеру если Вы решите модернизировать свой код через год, то Вам самому будет легче в нём разобраться , да и дизайн менять намного легче.
---------
Достичь можно любых высот !
Ответ отправил: Cimus (статус: 4-ый класс)
Ответ отправлен: 05.07.2006, 19:47


Вопрос № 48.042
Здравствуйте товарищи эксперты. У меня срочный крик о помощи. Я пернес все на физ пространство провайдера. Но у меня постоянно срабатывает зашита. код зашиты ниже приведен. Что я только не делал. и делал $_POST['username'] or ....
и проверял на одну введеную строку (ссобщение, имя, емаил). но ничего не получаеться выводит именно ошибку, что я написал внизу
echo "Имечко б ввел, а может маил свой забыл? Ты хоть слово написал вообще? А может ты кульхацкер?";
кусок кода формы и кусок скрипта, что орет об ошибке в приложении/
Что делать я НЕ знаю! я уже не знаю на что думать.

Приложение:

Отправлен: 03.07.2006, 19:22
Вопрос задал: Чинга (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Zysoftik
Здравствуйте, Чинга!

Я думаю проблема в том, что Вы пишете $_post['username'], вместо $_POST['username']. PHP чувствителен к регистру.

Если и это не поможет - попробуйте заключит каждый !isset(...) в дополнительные скобки. Вот так: (!isset(...)).

И еще, как вариант, попробуйте заменить `or` на `||` (согласно мануалу должно работать и то и то, но || должно работать точно, т.к. язык вышел из C)
Ответ отправил: Zysoftik (статус: 5-ый класс)
Ответ отправлен: 03.07.2006, 20:05

Отвечает: XMF
Здравствуйте, Чинга!
--
Ошибка в _post, нужно писать $_POST.
Получается условие
(ДА или НЕТ или НЕТ)
Почему ДА, потому что вы написали: Если НЕ установленна переменная $_post["..."] то ...
--
вот кароче и вся ошибка. :)
-=--=-
Спасибо
Ответ отправил: XMF (статус: 6-ой класс)
Ответ отправлен: 04.07.2006, 01:19
Оценка за ответ: 5
Комментарий оценки:
Я все понял - благодарю.

Отвечает: PVS
Здравствуйте, Чинга!
А вместо $_post['username'] все-таки $_POST['username'] должно быть.
Ответ отправил: PVS (статус: 6-ой класс)
Ответ отправлен: 04.07.2006, 10:11
Оценка за ответ: 5
Комментарий оценки:
Это точно. Спасибо. Я не хнаю можно ли вылечиться от невнимательности или же нет? Наверное только через гильятинку домашнюю.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное