Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите как сделать простейшую систему администрирования содержимого файла
 
 автор: DjNiks   (23.03.2007 в 23:56)   письмо автору
 
 

Здравствуйте :) Не подскажете, как при помощи пхп с файла к примеру admin.php управлять переменными в текстовом файле конфига? К примеру у нас есть:

<? 
$iplist 
= array ( 
'127.0.0.1',
); 
?>

Каким образом зделать так, что бы была форма, в которую можно добавить новые ипшники, или удалить старые, которые выводятся списком? Если можно - мини примерчик. Заранее спасибо.

   
 
 автор: dim0s   (24.03.2007 в 12:17)   письмо автору
 
   для: DjNiks   (23.03.2007 в 23:56)
 

Обычно делается чуть-чуть не так. :)
Записи сохраняются в файл построчно

127.0.0.1
127.0.0.3
127.0.0.123
127.0.0.99

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

   
 
 автор: DjNiks   (24.03.2007 в 14:02)   письмо автору
 
   для: dim0s   (24.03.2007 в 12:17)
 

скачал пару скриптов, не то что нужно :(

   
 
 автор: cheops   (24.03.2007 в 13:48)   письмо автору
 
   для: DjNiks   (23.03.2007 в 23:56)
 

Можно воспользоваться скриптом по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=15290, но перспективнее и проще воспользоваться советом dim0s.

   
 
 автор: DjNiks   (24.03.2007 в 14:13)   письмо автору
 
   для: cheops   (24.03.2007 в 13:48)
 

Посмотрел тот скрипт, немножко не то :( Нельзя ли пример аналогичного скрипта совету dim0s?

   
 
 автор: dim0s   (24.03.2007 в 14:22)   письмо автору
 
   для: DjNiks   (24.03.2007 в 14:13)
 

http://scripts.protoplex.ru/scripts_show/164.html

   
 
 автор: DjNiks   (24.03.2007 в 20:49)   письмо автору
 
   для: dim0s   (24.03.2007 в 14:22)
 

О Боже! Нету ли чего попроще? :( Это не для новичка в пхп.. Я половину из этого синтаксиса не могу понять... нужно тупо считывание запись добавление... Неужели ети банальные вещи делаються 365-тью строками кода?

   
 
 автор: dim0s   (25.03.2007 в 05:28)   письмо автору
 
   для: DjNiks   (24.03.2007 в 20:49)
 

В этом коде нет проверок на ввод и никакой защиты. Он просто показывает принцип работы с данными из текстового файла. Но он полностью работоспособен.
И все равно почти 100 строк :))


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<head>
<title>ip manager</title>
  <meta http-equiv="Content-type" content="text/html; charset=Windows-1251">
  <meta http-equiv="Cache-Control" content="no-cache, must-revalidate">
</head><body><center><br>
<?
$base
="ip.txt"// файл с данными
$PHP_SELF=$_SERVER['PHP_SELF'];

if (isset(
$_GET['action'])){$action $_GET['action'];} else {$action="browse";}
switch (
$action)
{
case 
"browse"data_browse () ; break;
case 
"delete"data_delete () ; break;
case 
"add"data_add () ; break;
default: 
data_browse () ;
}
// ***Вывод данных***
// *****************************************************************************
function data_browse ()
{
global 
$PHP_SELF$base;
$records file($base);                         //считываем файл в массив
$count_records sizeof($records);   //находим кол-во записей
//если записи есть - выводим
if ($count_records 0)
{
 for (
$id=0;$id<$count_records;$id++)
 {
 echo 
$records[$id]." -----------
 <a href=\""
.$PHP_SELF."?action=add&deep=0\">добавить</a>
 <a href=\""
.$PHP_SELF."?action=delete&id=".$id."\">удалить</a><br>";
 }
}
else
{
echo 
"нет ни одной записи<br><a href=\"".$PHP_SELF."?action=add&deep=0\">добавить</a>";
}
}
// ***Добавление данных***
// *****************************************************************************
function data_add ()
{
global 
$PHP_SELF$base;
if (isset(
$_GET['deep'])){$deep $_GET['deep'];} else {$deep=0;}
if (isset(
$_POST['ip'])){$ip trim($_POST['ip']);} else {$ip="";}
if (
$deep==0)
{
echo 
"<form name=\"add_form\" method=\"post\" action=\"".$PHP_SELF."?action=add&deep=1\">";
echo 
"<input  name=ip type=text value=\"\" size=20><br>";
echo 
"<input type=\"submit\" name=\"submit\" value=\"добавить запись\"></form>";
}
elseif ((
$deep==1)&&($ip!=""))
{
$ip $ip."\n";                     //добавляем к новой записи символ конца строки
$fp fopen ($base,"a");  //открываем файл на запись
flock ($fp,LOCK_EX);       //блокируем доступ
fputs($fp ,$ip);                   //добавляем строку в конец файла
fflush ($fp);                         //форсируем изменение файла
flock ($fp,LOCK_UN);       //снимаем блокировку
fclose ($fp);                         //закрываем файл
echo "запись добавлена<br><a href=\"".$PHP_SELF."\">ok</a> ";
}
else
{
echo 
"ошибка добавления<br><a href=\"".$PHP_SELF."\">ok</a> ";
}
}
// ***Удаление данных***
// *****************************************************************************
function data_delete ()
{
global 
$PHP_SELF$base;
if (isset(
$_GET['id'])){$id $_GET['id'];} else {$id="";}
$records file($base);                            //считываем файл в массив
$count_records sizeof ($records);     //находим кол-во записей в массиве
unset ($records[$id]);                               //удаляем елемент массива
$file fopen ($base,"a");                          //открываем файл на запись
flock ($file,LOCK_EX);                               //блокируем доступ
ftruncate ($file,0);                                        //очищаем файл
// записываем в файл построчно измененный массив
for ($i=0;$i<$count_records;$i++) fputs($file,$records[$i]);
fflush ($file);                                                //форсируем изменение файла
flock ($file,LOCK_UN);                             //снимаем блокировку
fclose ($file);                                               //закрываем файл
echo "запись удалена<br><a href=\"".$PHP_SELF."\">ok</a> ";
}
?>
<center></body></html>

   
 
 автор: cheops   (25.03.2007 в 14:25)   письмо автору
 
   для: DjNiks   (24.03.2007 в 20:49)
 

>Неужели ети банальные вещи делаються 365-тью строками кода?
Нет, это многова-то... попробуйте вот этот скрипт
<?php
  
// Обработкик HTML-формы
  
if(!empty($_POST))
  {
    
// Записываем новые значения в файл
    
$fd fopen("ip.txt""w");
    
fwrite($fd$_POST['name']);
    
fclose($fd);
  }
  
// Читаем содержимое IP-адресов из файла ip.txt
  
$ip file_get_contents("ip.txt");
?>
<form method=post>
<textarea name=name cols=50 rows=10><?php echo $ip?></textarea><br>
<input type=submit value="Записать">
</form>

Он позволяет редактировать содержимое файла ip.txt так как вам это самому удобно. Отталкивайтесь от него и снабжайте скрипт необходимой вам функциональностью.

   
 
 автор: DjNiks   (25.03.2007 в 14:29)   письмо автору
 
   для: cheops   (25.03.2007 в 14:25)
 

Всем ОГРОМНЕЙШОЕ спасибо! :)))

   
 
 автор: DjNiks   (25.03.2007 в 21:36)   письмо автору
 
   для: DjNiks   (25.03.2007 в 14:29)
 

зы, дабы не создавать новой темы. Не подскажете, как считать построково файл в массив, а затем сверить каждую строку при помоши if (!in_array($ip, $array_ip)), где $ip = $_SERVER['REMOTE_ADDR']; , а $array_ip = массив с которым сверяемся.

   
 
 автор: cheops   (26.03.2007 в 02:06)   письмо автору
 
   для: DjNiks   (25.03.2007 в 21:36)
 

Прочитать файл и разбить его содержимое построчно на массив можно при помощи функции file().
<?php
  $arr 
file("file.txt");
?>

PS Только если строка в файле заканчиается Windows-завершением строки \r\n, а не UNIX \n, то в конце элементов остаётся не видимый символ \r, который не позволяет сравнивать правильно результаты. Здесь нужно обойти массив и обработать каждый из его членов при помощи функции trim().

   
 
 автор: DjNiks   (26.03.2007 в 23:05)   письмо автору
 
   для: cheops   (26.03.2007 в 02:06)
 

а что если универсальный скрипт и на юниксо подобную и на виндовс системы?:)

   
 
 автор: Unkind   (26.03.2007 в 23:17)   письмо автору
 
   для: DjNiks   (26.03.2007 в 23:05)
 

а что если универсальный скрипт и на юниксо подобную и на виндовс системы?:)
А какой глагол?

Если "(сделать|написать)"

<?php 
$arr 
file("file.txt");
for(
$i 0$i count($arr); $arr[$i] = rtrim($arr[$i]), $i++);
?>

   
 
 автор: DjNiks   (26.03.2007 в 23:23)   письмо автору
 
   для: Unkind   (26.03.2007 в 23:17)
 

Спасибо :))) Единственный форум, где новичкам, действительно помагают! ушел читать про трим :)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования