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

Форум PHP

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

 

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

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

тема: Удаление текста и файла
 
 автор: Alex_Sidneff   (29.09.2006 в 03:22)   письмо автору
 
 

есть Фаил, в котором есть строки, и есть просто файлы но уже в другой дериктории!
Возможно ли одной кнопкой удалить нужную строку и 2 файла?
Есть 2 скрипта которые это делают! Вот только не могу их связать воедино...

1) удоление строки в файле:
<?
$url="data/chat_d.php";
if (!empty($_GET['name']))
{
//$name2del = preg_replace("#[^\w ]#", "", $_GET['name']);
$name2del = $_GET['name'];
$file = file($url);
foreach ($file as $key => $str)
{
@list(,$name) = explode('|', $str);
if ($name == $name2del)
unset($file[$key]);
}
$fd = fopen($url, "w");
if($fd)
{
fwrite($fd,implode("",$file));
fclose($fd);
}
}

if (filesize($url) > 0)
{
$data_massiv=file($url);
sort($data_massiv);
for($i=0;$i<sizeof($data_massiv);$i++)
{
if(substr($data_massiv[$i], 0, 1)=="#")
{
$temp=explode("|",$data_massiv[$i]);
if(trim($temp[3])=="guest")
{
$temp[3]="<font color=#17A818><b>Гость</b></font>";
}
if(trim($temp[3])=="master")
{
$temp[3]="<font color=#CF0F18><b>Админ</b></font>";
}
echo "<font size=3 color=#336699><b><a href=infa.php?name=$temp[1]>"
.$temp[1]."</a></b></font> имеет статус ".$temp[3].
"<input type=button onClick=document.location.href='"
.$_SERVER['PHP_SELF']."?name=$temp[1]' value='Убить $temp[1]'><br>";
}
}
}
?>


2) Удаление файла:

<?php
foreach ( glob ( "data/user/$name*.*" ) as $filename )
{
$files=filesize($filename);
$filed=date ( "d-m-Y H:i:s" , filemtime ( $filename ));
echo " <form enctype='multipart/form-data' action='kickusers.php' method='post'>
<input type='hidden' name='filename' value='$filename'>
<input name='delpict' type='submit' value='Удалить'>$filename
</form>" ;
}
?>

3) переход после удаления файла:

<?php
if (isset($delpict) and $delpict=="Удалить") {
echo "Удален файл: ".$filename;
unlink ($filename);
unset($delpict);
exit;
}
?>

И как это всё, можно связать в одну кнопку?
P.S. - Я новичёк в пхп....

   
 
 автор: kasmanaft   (29.09.2006 в 06:36)   письмо автору
 
   для: Alex_Sidneff   (29.09.2006 в 03:22)
 

Обязательно нужно нажимать на кнопку, чтобы удалить файл?
если нет, то можно поступить примерно так:

* * * * * 
if($fd)
{
fwrite($fd,implode("",$file));
fclose($fd);
}
foreach ( glob ( "data/user/$name2del*.*" ) as $filename )
{
unlink($filename);
}
}
* * * * *

Только имя чела и начало имени файла должны совпадать ... регистрозависимо ...

   
 
 автор: Alex_Sidneff   (29.09.2006 в 12:49)   письмо автору
 
   для: kasmanaft   (29.09.2006 в 06:36)
 

ну вот так выглядит текстовый фаил:
<?php
#|AVTORITET|ce9e8dc8a|guest
#|Rus|6f2268bd1|guest
#|111|b59c67bf1|guest
#|rolex|b59c67bf1|guest
#|sef0491|3c1f1428c|guest
#|Roksi|fbade9e36|guest
#|vadim|1225483c9|guest
?>

А так называются файлы:

AVTORITET_cnf.php
AVTORITET_prv.php
Rus_cnf.php
Rus_prv.php
...............
Ну и так далее...
Вот допустим надо удалить одновременно строчку и два таких файла:

#|AVTORITET|ce9e8dc8a|guest

AVTORITET_cnf.php
AVTORITET_prv.php

   
 
 автор: kasmanaft   (29.09.2006 в 14:02)   письмо автору
 
   для: Alex_Sidneff   (29.09.2006 в 12:49)
 

(дубль)

   
 
 автор: kasmanaft   (29.09.2006 в 14:02)   письмо автору
 
   для: Alex_Sidneff   (29.09.2006 в 12:49)
 

Имеется ввиду, что если в первом файле чела зовут Rus, то и в
названии этих двух файлов тоже должно быть Rus, а не rus, RUS и т.д.

   
 
 автор: Alex_Sidneff   (29.09.2006 в 20:15)   письмо автору
 
   для: kasmanaft   (29.09.2006 в 14:02)
 

Виноват, описался.... так оно и есть - какое имя, такое и первоночальне название файла!!!

   
 
 автор: kasmanaft   (29.09.2006 в 20:24)   письмо автору
 
   для: Alex_Sidneff   (29.09.2006 в 20:15)
 

:)
Тогда должно работать...

* * * * *  
if($fd) 

fwrite($fd,implode("",$file)); 
fclose($fd); 

foreach ( glob ( "data/user/$name2del*.*" ) as $filename ) 

unlink($filename); 


* * * * *

   
 
 автор: Alex_Sidneff   (29.09.2006 в 20:55)   письмо автору
 
   для: kasmanaft   (29.09.2006 в 20:24)
 

...я стесьняюсь спросить.... а это в первый фаил вставлять или во второй?

   
 
 автор: kasmanaft   (30.09.2006 в 06:42)   письмо автору
 
   для: Alex_Sidneff   (29.09.2006 в 20:55)
 

Это в тот скрипт вставлять, который мы получили в теме "Как вывести по алфавиту содержимое файла" ... где-то вначале можно найти похожий кусоук...
При нажатии на кнопку "убить ..." будет удаляться строка из файла и 2 файла, в начале имени которых будет имя пользователя, которого убиваем. (вернее даже не 2 файла, а все, где в начале есть его имя - конечно, лежащие в папке data/user/ )
То есть мы обойдемся одним файлом ... так сойдет, или нужно задействовать второй?

   
 
 автор: Alex_Sidneff   (30.09.2006 в 14:42)   письмо автору
 
   для: kasmanaft   (30.09.2006 в 06:42)
 

Вот это да!!!!=)))) Суппер!!! Всё работает! Спасибо большое! Понравился мне этот форум! Буду всегда с вами!!!
Огромное Вам спасибо, kasmanaft !!!

   
 
 автор: kasmanaft   (30.09.2006 в 17:11)   письмо автору
 
   для: Alex_Sidneff   (30.09.2006 в 14:42)
 

пожалуста :)

зы: если попадется несколько похожих ников например Alex и Alex_Sidneff, то при удалении первого, удалятся файлы относящиеся ко второму пользователю ... (а если первого пользователя будут звать "A", то вообще страшно представить =)) по этому, если известно полное имя файла, лучше удалять именно его, а не так, как сейчас ...

* * * * *   
if($fd)  
{  
fwrite($fd,implode("",$file));  
fclose($fd);  
}  
unlink ( "data/user/".$name2del."_cnf.php" );
unlink ( "data/user/".$name2del."_prv.php" );
}  
* * * * *

   
 
 автор: Alex_Sidneff   (30.09.2006 в 20:16)   письмо автору
 
   для: kasmanaft   (30.09.2006 в 17:11)
 

С этим сккриптом вообще ничего не выводит.....
И кстате по поводу защиты! не могу приделать... когда нажимаеш убить, он переходит на страницу ввода пароля. когда ввожу пароль имя торчит и ничего не удаляет..... как можно защитить и при этом удалять.... вообще не врубаюсь....
Я вот подумал, может можно зделать через <form action=..........
И так сказать активизировать другую страницу? может так?

   
 
 автор: kasmanaft   (30.09.2006 в 22:57)   письмо автору
 
   для: Alex_Sidneff   (30.09.2006 в 20:16)
 

В смысле не выводит?

>когда нажимаеш убить, он переходит на страницу ввода пароля. когда ввожу пароль
>имя торчит и ничего не удаляет.....
Поподробней пожалуста :) .. как он переходит ?

   
 
 автор: Alex_Sidneff   (30.09.2006 в 23:22)   письмо автору
 
   для: kasmanaft   (30.09.2006 в 22:57)
 

После удаления он переходит как бы на страницу по такой ссылке:

ЕСЛИ УДАЛЯЕМ ИМЯ Dmitrisss ТО ОН ПЕРЕХОДИТ ВОТ ТАК:
http://МОЙ_САЙТ/admin.php?name=Dmitrisss
а ОН ДОЛЖЕН ПРОПИСЫВАТЬ
http://МОЙ_САЙТ/admin.php?pswrd=пароль
вот...

   
 
 автор: kasmanaft   (01.10.2006 в 00:08)   письмо автору
 
   для: Alex_Sidneff   (30.09.2006 в 23:22)
 

Можно объединить ...

http://МОЙ_САЙТ/admin.php?pswrd=пароль&name=Dmitrisss

   
 
 автор: Alex_Sidneff   (01.10.2006 в 13:35)   письмо автору
 
   для: kasmanaft   (01.10.2006 в 00:08)
 

Вы гений!!!!!!!! Спасибо! Всё работает!!!!! Суппер!!!

   
Rambler's Top100
вверх

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