|
|
|
| Здравствуйте :) Не подскажете, как при помощи пхп с файла к примеру admin.php управлять переменными в текстовом файле конфига? К примеру у нас есть:
<?
$iplist = array (
'127.0.0.1',
);
?>
|
Каким образом зделать так, что бы была форма, в которую можно добавить новые ипшники, или удалить старые, которые выводятся списком? Если можно - мини примерчик. Заранее спасибо. | |
|
|
|
|
|
|
|
для: DjNiks
(23.03.2007 в 23:56)
| | Обычно делается чуть-чуть не так. :)
Записи сохраняются в файл построчно
127.0.0.1
127.0.0.3
127.0.0.123
127.0.0.99
|
если несколько параметров то с разделителем, считываютя в массив, обрабатываютя(изменение,добавление и т.п.), потом файл полностью перезаписывается.
Вы можете посмотреть любой скрипт новостей или гостевой на текстовых файлах - механизм одинаковый. | |
|
|
|
|
|
|
|
для: dim0s
(24.03.2007 в 12:17)
| | скачал пару скриптов, не то что нужно :( | |
|
|
|
|
|
|
|
для: DjNiks
(23.03.2007 в 23:56)
| | Можно воспользоваться скриптом по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=15290, но перспективнее и проще воспользоваться советом dim0s. | |
|
|
|
|
|
|
|
для: cheops
(24.03.2007 в 13:48)
| | Посмотрел тот скрипт, немножко не то :( Нельзя ли пример аналогичного скрипта совету dim0s? | |
|
|
|
|
|
|
|
|
для: dim0s
(24.03.2007 в 14:22)
| | О Боже! Нету ли чего попроще? :( Это не для новичка в пхп.. Я половину из этого синтаксиса не могу понять... нужно тупо считывание запись добавление... Неужели ети банальные вещи делаються 365-тью строками кода? | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: 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 так как вам это самому удобно. Отталкивайтесь от него и снабжайте скрипт необходимой вам функциональностью. | |
|
|
|
|
|
|
|
для: cheops
(25.03.2007 в 14:25)
| | Всем ОГРОМНЕЙШОЕ спасибо! :))) | |
|
|
|
|
|
|
|
для: DjNiks
(25.03.2007 в 14:29)
| | зы, дабы не создавать новой темы. Не подскажете, как считать построково файл в массив, а затем сверить каждую строку при помоши if (!in_array($ip, $array_ip)), где $ip = $_SERVER['REMOTE_ADDR']; , а $array_ip = массив с которым сверяемся. | |
|
|
|
|
|
|
|
для: DjNiks
(25.03.2007 в 21:36)
| | Прочитать файл и разбить его содержимое построчно на массив можно при помощи функции file().
<?php
$arr = file("file.txt");
?>
|
PS Только если строка в файле заканчиается Windows-завершением строки \r\n, а не UNIX \n, то в конце элементов остаётся не видимый символ \r, который не позволяет сравнивать правильно результаты. Здесь нужно обойти массив и обработать каждый из его членов при помощи функции trim(). | |
|
|
|
|
|
|
|
для: cheops
(26.03.2007 в 02:06)
| | а что если универсальный скрипт и на юниксо подобную и на виндовс системы?:) | |
|
|
|
|
|
|
|
для: DjNiks
(26.03.2007 в 23:05)
| | а что если универсальный скрипт и на юниксо подобную и на виндовс системы?:)
А какой глагол?
Если "(сделать|написать)"
<?php
$arr = file("file.txt");
for($i = 0; $i < count($arr); $arr[$i] = rtrim($arr[$i]), $i++);
?>
|
| |
|
|
|
|
|
|
|
для: Unkind
(26.03.2007 в 23:17)
| | Спасибо :))) Единственный форум, где новичкам, действительно помагают! ушел читать про трим :) | |
|
|
|