Добрый день уважаемые эксперты. Хочу поблагодарить всех экспертов откликнувшихся на мой предыдущий вопрос, в особенности хочется поблагодарить эксперта Licvidator за доступные объяснения. У меня есть к Вам два вопроса и был бы очень признателен если бы Вы дали ответы на них. 1). С помощью Java Script создано новое окно в котором находится некая информация. При клике на кнопке этой формы вызывается функция PHP (или Java Script) которая проверяет содержимое полей созданной формы (имя, e-mail …) и в случае успешной проверки, с помощью PHP сохраняла эту информацию в файл который бы размещался на сервере (file.html). В случае повтора описанных действий новые данные должны дописываться в файл. 2) Как на PHP записать (дописать) в файл информацию с формы и как ее прочесть. Буду очень признателен всем откликнувшимся. С уважением Mike
PS Если можна подоступней
Добрый день, Mike! 1. Дописать Серверный PHP-сценарий: ($newdata - данные формы, передаются браузером) $fp = fopen("myfile.dat","a+"); fwrite($fp, $newdata); fclose($fp); 2. Прочитать $readedstring = join ("", file($filename));
Ответ отправлен: 18.02.2004, 02:27 Отправитель: Foamplast Отвечает Licvidator
Здравствуйте, Mike! Запись значения переменной $text (присвойте ей содержимое Ваших полей) в файл $filename: <? $filename="file.html"; // имя файла $fp=fopen($filename,"a");// открываем файл для записи fputs($fp, $text);// собственно запись fclose($fp);// закрываем файл ?>
Примечание: флаг "а" для функции fopen открывает файл для записи и помещает указатель на конец файла. Если файл не существует, создается новый файл.
Чтение из файла (в переменной $str будет содержимое файла): <? $filename="file.html";// имя файла $r=fopen($filename,"r");// открываем файл для чтения $str=fread($r, filesize($filename));// собственно чтение fclose($r);// закрываем файл ?>
Примечание: флаг "r" для
функции fopen открывает файл для чтения и помещает указатель на начало файла.
PS Подробнее об этих функциях и флагах читайте в документации на PHP. Ответ отправлен: 17.02.2004, 21:50 Отправитель: Licvidator Отвечает xghost
Здравствуйте, Mike! 1. Открывай файл в режиме дозаписи. Например $file = fopen("file.txt", "a"); 2. Сходи на сайт myphp.net.ru.
Ответ отправлен: 18.02.2004, 07:33 Отправитель: xghost Отвечает samum2000
Добрый день, Mike! 1. В чем заключается вопрос? 2. <? $fp = fopen("info.txt", "a+"); //открываем для добавления записей в конец файла и для чтения файла. Указатель в конце файла. fputs($fp, "some data from form"); //записываем данные
rewind($fp); //идем в начало файла while (!feof($fp)) { echo fgets($fp); } ?> Ответ отправлен: 18.02.2004, 12:13 Отправитель: samum2000
Вопрос № 167
Здравствуйте, мне необходимо создать таблицу по параметрам, которые указаны в приложении. Я пользуюсь phpMyAdmin. В целом все понятно, но как ввести эти строки: 1. date datetime DEFAULT '0000-00-00 00:00:00' NOT NULL, 2. KEY id (id), 3. KEY id_2 (id) В первой строке мне неясно, как ввести '0000-00-00 00:00:00' Во второй: id (id) В третьей: id_2 (id)?
Доброе время суток, Дмитрий! А в чем конкретно неясность? Как на клавиатуре набрать '0000-00-00 00:00:00'? Уточни, я не понял, в чём затруднение.
Ответ отправлен: 18.02.2004, 02:31 Отправитель: Foamplast Отвечает xghost
Ноуаепъпаяв Ачъ, Дкупоух! Бпмюь мъмюм ле нчоупщъз, номъпм ъмсочлу ыпмп цчномъ а рчхй ъ очъэуоелуек .sql. Ч а phpmyadmin а лятлмх ЮД аьюеоу цчийчдия SQL уцчдчх укз ъамежм рчхйч. Дч, кле ешT ле мбелщ нмлзпль нмъйедлуу ъпомиу аъеждч дякчй, бпм ийвб пчюйуфь цчдчTпщъз мдул очц ъ нмкмшщв PRIMARY KEY. Нмич! Ответ отправлен: 18.02.2004, 07:42 Отправитель: xghost
Вопрос № 168
Здравствуйте, в скрипте администрирования новостей при попытке создать нового админа скрипт выдает, что у меня нет прав записи в файл ****.dat. Права доступа к файлам скрипта (CHMOD) у меня есть. Каким образомя могу разрешить доступ, как использовать код доступа к файлам?
Здравствуйте, Дмитрий! "Права доступа к файлам СКРИПТА у меня есть." Тебе говорят, что нет прав доступа к ****.dat. Меняй права на ****.dat. Сделать это можно по-разному. Например, если у тебя FTP-доступ есть, то Windows Comander позволит выставить права (есть такой пункт в меню) Если нет FTP - пиши что у тебя есть, подскажем. Ответ отправлен: 18.02.2004, 02:35 Отправитель: Foamplast Отвечает xghost
Добрый день, Дмитрий! Вы должны разрешить всем запись в этот файл (установить значения в 766). Ответ отправлен: 18.02.2004, 12:13 Отправитель: samum2000
Вопрос № 169
Здравствуйте! У меня следующая проблема. Поставил XP, затем программу Dreamweaver MX. Появилась проблема с шрифтом, а в частности в файлах PHP появляются разные каракули при начале писания русским языком. Я уже во всех настройках самой проги поменял на кириллицу, но она так и не пишет. Если файл с разрешением HTML, то такой проблемы не возникает, программа нормально распознаёт русский.
Добрый день, Alexey! Клёвая программа Dreamweaver MX! А я пользуюсь Aditor, это покруче. Он не только в *.html кирилицей пишет, но и в *.php, и в *.css Ответ отправлен: 18.02.2004, 02:49 Отправитель: Foamplast
Вопрос № 170
Здравствуйте! Поставил на XP apache 2.0.48 PHP 5.0.0b4 Все работает, но никак не могу заставить скрипты что-либо передавать по Get и Post из форм. Даже ввожу просто в строке после ? какую-либо переменную, к примеру http://pupkin.ru/index.php?id=name, но скрипт ее в этом файле все равно не видит. В чем дело?
Добрый день, Sergey! Скорее всего, дело в том, как ты хочешь эту переменную увидеть. Если в твоём примере ты пишешь в сценарии $id, то необходимо, чтобы переменная настройки PHP register_globals была равна on. Это можно проверить написав в скрипте print phpinfo(); Если она выключена, то к переменной необходимо обращаться как $HTTP_POST_VARS["id"] (для метода POST). Когда какая-нибудь дребедень с переменными происходит, пользуйся print_r(get_defined_vars()); (информация выдаётся как простой текст!). Это поможет определить, какие переменные видимы и каким образом.
Приложение: Ответ отправлен: 18.02.2004, 03:16 Отправитель: Foamplast Отвечает Lot
Здравствуйте, Sergey! смотри файл php.ini Там есть переменная "register_globals = On" помоему так должно быть. Ответ отправлен: 20.02.2004, 13:25 Отправитель: Lot Отвечает homer
Доброе время суток, Sergey! А как ты их принимаешь? поробуй использовать $_POST и $_GET массивы $id=$_GET["id"] Ответ отправлен: 18.02.2004, 09:32 Отправитель: homer Отвечает Gibbel
Приветствую Вас, Sergey! PHP 5 находиться в стадии бета-тестирования и в нем могут быть ошибки. Замени на PHP 4.3.4. Ответ отправлен: 18.02.2004, 11:11 Отправитель: Gibbel Отвечает samum2000
Приветствую Вас, Sergey! Проблема в настройке PHP. Сам столько нервов потратил, пока нашел эту штуку. В в файле php.ini (из папки windows), в разделе DATA HANDLING надо написать/переписать/раскомментировать следующее variables_order = "EGPCS" register_globals = On По-умолчанию это закрыто из соображений безопастности вашего скрипта. Я вам тоже советую использовать глобальные переменные $HTTP_POST_VARS[] и $HTTP_GET_VARS[]. Ответ отправлен: 18.02.2004, 12:14 Отправитель: samum2000 Отвечает NeiTrinO
Добрый день, Sergey! а как Вы ее оттуда "достаете"? Надо так... $_GET["id"]
Ответ отправлен: 18.02.2004, 19:53 Отправитель: NeiTrinO
Вопрос № 171
Уважаемые эксперты у меня вопрос. Я уже задавал подобный вопрос и хочу сказать спасибо samum2000 за ответ, но этот вопрос возник снова : Папка сканируется и отображается список файлов:
$begin = "files" #папка с файлами $void=0; $dirct=$begin; $hdl=opendir($dirct); while ($file = readdir($hdl)) { if (($file!="..")&& ($file!=".")) { Также каждый элемент списка файлов выводится в виде ссылок: Echo “”.file.””; $void++; } } … … Ниже Switch на который указана ссылка : Switch { case "0_0_0": $handle1 = fopen ("1.txt", "r"); while (!feof ($handle1)) { $buffer = fgetss($handle1, 4096);
} fclose ($handle1);
echo ".$buffer."; } ?> Вопрос : А если у меня не один файл("1.txt"), а несколько с разными именами. Что нужно сделать чтобы при нажатии на какую нибудь ссылку списка файлов отображалось содержимое этого файла ? Например : Есть список ссылок 1. aaa.txt 2. bbb.tct 3. ccc.txt При нажатии например на bbb.txt. отображалось содержимое файла bbb.txt из папки "files" P.S. Количество и названия файлов самые разные, так что напрямую указывать названия файлов здесь не получится. Заранее спасибо. Игорь.
Приветствую Вас, Игорь! А почему не получится указывать напрямую? (см. приложение)
Приложение: Ответ отправлен: 18.02.2004, 03:25 Отправитель: Foamplast Отвечает samum2000
Добрый день, Игорь! Я не совсем понял, зачем тебе понадобился switch. И чем, кроме названия папки, этот вопрос отличается от предыдущего? Возможно ты что-то подразумеваешь, но не пишешь, поэтому и ответы получаются не совсем точными. На всякий случай я объясню, что делает скрипт из прошлого ответа. if (empty($name)) //в этом месте проверяем что было передано скрипту... { //... если ничего ($name будет пустой), то надо отобразить список файлов $i = 0; $d="files"; //это название папки, из которой берем файлы. $handle = opendir($d); //стандартные действия по просмотру папки while($file = readdir($handle)) { if ($file != '.' && $file != '..') { $func[$i] = $file; //формируем массив названий файлов с функциями $i++; } }
sort ($func); //сортируем массив
//теперь отобразим все ссылочки for ($q=0; $q<=$i;$q++) { echo "<a href='?name=".$d.$func[$q]."'>".$func[$q]."</a><br>"; //обрати внимание на то, что вместе с именем файла указываем путь к нему (.$d.$func[$q].) //иначе мы не сможем прочитать файл (скрипт будет искать его в текущей папке) } } else //если же переменная $name содержит что-то, то это имя файла, который мы собираемся открыть { echo implode("",file($name)); //строка echo implode("",file($name)); выведет содержимое файла безо всяких там циклов, fgets и т.п. } Если хочешь, чтобы файл открывался в другом окне, то измени ссылки. Вроде все. Если чего-то не хватает, напиши подробнее что хочешь получить. Ответ отправлен: 20.02.2004, 11:11 Отправитель: samum2000
Вопрос № 173
Здравствуйте, мне необходимо выставить права доступа CHMOD для файлов на сервере с помощью Windows Commander. Мне необходимо выставить права со значениями 660 и 770, но в Коммандере в атрибутах есть три группы чекбоксов: owner, group и world (other), в каждой из которых есть три поля: read, write, execute. Каким образом мне надо поставить "галочки", чтобы эти значения сооствествовали 660 и 770?
Добрый день, Дмитрий! 660: owner - read, write group - read, write world 770: owner - read, write, execute group - read, write, execute world Ответ отправлен: 18.02.2004, 12:19 Отправитель: samum2000 Отвечает NeiTrinO
Приветствую Вас, Дмитрий! цитата с сайта http://hosthome.ru - 200 (для этого отметьте первую галочку в первом столбце, при этом файл или папка будут Вам доступны только для чтения. Чаще всего такой подход применим к текстовым файлам, чтобы обезопасить себя от его изменения или удаления. Скрипт с такими правами работать не будет). - 220 (для этого отметьте вторую галочку в первом и втором столбце, при этом файл или папка будут доступны Вам и вашей группе только для записи. Скрипт с такими правами работать не будет). - 440 (для этого отметьте первую галочку в первом столбце и первую во втором, при этом файл или папка будут доступны Вам и Вашей группе только для чтения. Чаще всего такой подход применим к текстовым файлам, чтобы обезопасить себя от его изменения или удаления. Скрипт с такими правами работать не будет). - 500 (для этого отметьте первую и
третью галочки в первом столбце , при этом файл или папка будут доступны Вам не только для чтения, но и для выполнеия. Скрипт с такими правами будет работать, это самый безопасный способ исполнения скриптов). - 550 (для этого отметьте первую и третью галочки в первом и втором столбце , при этом файл или папка будут доступны Вам и Вашей группе не только для чтения, но и для выполнеия. Скрипт с такими правами будет работать, однако это небезопасный способ исполнения скриптов). - 600 (для этого отметьте первую и вторую галочки в первом столбце, при этом файл или папка будут Вам доступны не только для чтения, но и для перезаписи. Скрипт с такими правами работать не будет). - 660 (для этого отметьте первую и вторую галочки в первом столбце, и первую и вторую во втором столбце, при этом файл или папка будут доступны Вам и Вашей группе не только для чтения, но и для перезаписи. Скрипт с
такими правами работать не будет). - 700 (для этого отметьте первую, вторую и третью галочки в первом столбце, при этом файл или папка будут Вам доступны не только для чтения, но и для перезаписи. Скрипт с такими правами будет работать). - 740 (для этого отметьте первую, вторую и третью галочки в первом столбце, и первую во втором столбце, при этом файл или папка будут доступны Вам не только для чтения, но и для перезаписи. При этом члены Вашей группы смогут также его прочесть. Скрипт с такими правами будет работать, однако это небезопасный способ исполнения скриптов). - 760 (для этого отметьте первую, вторую и третью галочки в первом столбце, и первую и вторую во втором, при этом файл или папка будут доступны Вам не только для чтения, но и для перезаписи. При этом члены Вашей группы смогут также его прочесть и презаписать. Скрипт с такими правами будет работать, однако это небезопасный
способ исполнения скриптов). - 770 (для этого отметьте первую, вторую и третью галочки в первом столбце, и первую, вторую и третью во втором столбце, при этом файл или папка будут доступны Вам не только для чтения, но и для перезаписи. При этом члены Вашей группы смогут также его прочесть, презаписать и выполнять. Скрипт с такими правами будет работать, однако это небезопасный способ исполнения скриптов).
Ответ отправлен: 18.02.2004, 19:57 Отправитель: NeiTrinO Отвечает Foamplast
Приветствую Вас, Дмитрий! 660 - owner: read & write; group: read & write; world: ничего 770 - owner: read & write & execute; group: read & write and execute; world: ничего. Дело в том, что права доступа представляются отдельными битами: 0400 - право на чтение для владельца 0200 - право на запись для владельца 0100 - право на запуск для владельца 0040 - право на чтение для группы 0020 - право на запись для группы 0010 - право на запуск для группы 0004 - право на чтение для всех 0002 - право на запись для всех 0001 - право на запуск для всех Под группой понимается группа, в которую входит владелец. Таким образом 660 - это 6 для владельца, 6 для группы и 0 для других. А 6 - это, как известно, 4+2.
Ответ отправлен: 19.02.2004, 01:54 Отправитель: Foamplast
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.