Не люблю я аську, может человеку некогда, а я его тут буду дергать некстати.
В общем установил Денвер. Сделал простейшую страничку типа Hello World на php - пашет. Теперь такой вопрос: как лучше, сделать каркас сайта и потом его пичкать скриптами, или лучше параллельно двигать html и php?
да как придумаешь, например я так делаю:
есть корневая папка сайта
в ней файлы
index.php - стартовая стр сайта
part.php - какой-то раздел сайта итп...
...
и таких много
и также в корневой файл "сам движёк сайта"
например act.php
в index.php сама разметка хтмл, возможно ещё какие-то фишки выборки информации, ну параметры всякие к индексу index.php?id=1&переменная=зачение... итп
а сама обработка (именно рабочая область скрипта) выносится в act.php...
например в index.php какая-то формочка <form...> в которую что то там вводиш, то что ввёл должно сохранится в файл на сервере... Вот в индекск строишь формочку а action её пишешь на act.php
(а в самом act.php уже обработка действия, типа записать в файл)
<?
fopen
fwrite
fclose...
//(всё как в си, только вместо казателей, типов FILE, всё тебе обычные пхп переменные $file например...)
?>
Может пригодится делать обработку нескольких форм в одном act.php... тогда в форме, в action можно задать параметр дополнительный, который потом проверишь, и обработаешь нужную форму...
Например
index.php:
<form action="act.php?id=1" method="post">
...
</form>
и в нём же где-то ещё одна форма...
<form action="act.php?id=2" method="post">
...
</form>
--------------
А в самом act.php потом смотришь эту переменную id
<?
if ($id==1){
print "Тут что-то делаешь над первой формой";
}elseif ($id==2){
print "Тут что-то делаешь над второй формой";
}
?>
Хотя лучше конечно читать переменные которые "постились" через переменную окружения (вроде так она называется) $_POST т.е.
if ($_POST['id']==1)... по аналогии дальше...
Это я просто к сведению, что пхп сам преобразет в переменные, то что передавалось в параметрах...
Возможно при организации удобно будет act.php разбить ещё на более мелкие части...
Также продумуй структуру папок, всё по аналогии разработки большого win32 приложения - модули одного типа в одну папку, другого - в другую...
Может так
корневая/user/*.php
корневая/admin/*.php
корневая/modules/*.php
и скрипты и с user, и с admin будут подключать нужные модули из modules...
А кстати, про модули...
include "file.php";
где-то в начале какого-то пхп файла, и все ф-ции и переменные что в file.php будут доступны втом, куда подключил... ну тот же Си! ты быстро врубишся!
Это всё так сказать для разминки, когда выростаешь, набираешь 10 заказов одновременно и нехрена неуспеваешь, хочется уже чего-то продуманного, готового, итп... и выход есть - пхп нюки (PHPNuke, SmallNuke...) это готовые "какасы" для сайтов, уже реализована структура, уже реализовано много функций, много готовых модулей под нюки итп... зачастую создание довольно сложного сайта сводится в "программирование мышкой". Но это уже когда действительно нужна скорость, и неограниченность в росте, групповая разработка итп... По началу я сам всё с нуля...
Кто тут назвался квалифицированным PHP-программистом? Вроде это был Sharp...
Уже 3 дня(!) пытаюсь сделать такую вещь:
На странице несколько текстовых полей.
Обхожу их в цикле и собираю из них данные, которые суммирую как строку.
Когда результирующая строка собрана, нужно открыть новое окно и передать туда эту строку.
Чтобы открыть новое окно, можно воспользоваться либо document.form2.submit(); либо window.open()
Первый способ без проблем открывает окно и передает строку, которую я могу получить через echo($_POST["senddata"]);
Второй способ без проблем открывает окно нужного размера (400х400).
Но: первый способ не позволяет задать размер окна, а второй способ не позволяет передать данные
Как совместить возможности первого и второго способов и передать данные в новое окно произвольного размера? Это в принципе возможно: открытие окна произвольного размера и передача в него параметра-строки???
<script language="javascript">
function pad_string_left(st){
l=st.length;
if (l=1) return '00'+st;
else if (l=2) return '0'+st;
else return st;
}
function show_form(tov_cnt){
res_str="";
for(a=1; a<tov_cnt+1; a++){
s=pad_string_left(a.toString());
if (document.form1['count'+s].value !=0){
res_str = res_str + document.form1['data'+s].value + "###" +
document.form1['count'+s].value + '<br>';
}
}
document.form2['senddata'].value = res_str;
if (res_str!=""{
document.form2.submit();
res_str='zakaz.php?senddata='+res_str;
window.open(res_str, 'subwindow',"height=350,width=400,status=yes,toolbar=no,menubar=no,location=no"
}
else {
alert(Не выбрано ни одного товара!');
}
}
</script>
А если через JS организовать связь между родительским и дочерним
окном?
Либо обратиться из родительского к дочернему как-то так:
myWnd = window.open(...);
myWnd.тут_что-нибудь
Либо из дочернего обратиться к родительскому:
opener.тут_что-нибудь
Второе предпочтительней, т.к. в первом случае если поставить вызов
чего-то-там сразу после открытия окна, то тогда содержимое дочернего
окна еще не бует загружено и получим гемморой синхронизации (ну прямо
многопоточность какая-то .
Куки я бы не советовал. Во-первых, как-то кривовато это решение
выглядит. Во-вторых немалы шансы, что браузер или прокси-сервер (или
еще какой файрвол) клиента запретил их.
Павел, тут куки (если я правильно понял), не пишутся клиенту, они на сервере остаются, т.к. path и domain пустые.
Можно через window.open, но этот метод вынуждает использовать GET вместо POST, а GET неадекватно реагирует на некоторые символы, которые могут оказаться в передаваемых данных. В частности, символ "#" и всё, что после него, будет обрезано. Так же и последовательностью " &" (пробел+амперсанд) - всё что после - обрезается при использовании GET. POST эти символы передаёт нормально, но с window.open рн не прокатывает.
А вообще насчёт куков ты прав, если установлен высокий уровень конфиденциальности в броузере. Куки не проходят.
Хотя с другой стороны, без куков на такого рода сайте, где нужно собирать и хранить информацию от пользователя, делать нечего. Кстати, vbnet тоже не пускает с таким уровнем конфиденциальности, при котором нельзя писать куки.
Павел, тут куки (если я правильно понял), не пишутся клиенту, они на сервере остаются, т.к. path и domain пустые.
куки будут в браузере, пока этот браузер не откроет новую сессию...
запрещение куков - неправельная работа браузера.
Куки в висте, например, вообще отдельная история, вообем всё чики-пики, типа безопасно...
если ненравится такой вариант, можно отправить обычный пост, обычному окну, обычное окно запомнит данных, и откроет нужное окно, с нужными размерами итп, нужное окно прочитает данные и всё ок...
По сути можно даже страницу 2 физически не делать чтобы не увеличивать время ожидания юзера, а сформировать ее HTML-код прямо из скрипта первой старницы.