Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие файла, сделал! 
V
    Опции темы
supercelt
Дата 3.1.2006, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Короче что-то получилось. Я хотел написать систему, с пом. которой можно редактировать файлы прямо на серевере, вот чего получилось.
Заливаете это к себе в директорию и делаете что хотите

Код

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<style>
td#t{color:#006600; background-color:#FFFF00;}
</style>
<body>
<?
if(!isset($_REQUEST['dir']))
{
$f=$_SERVER['DOCUMENT_ROOT'];
$dir=opendir($f) or die ("error open dir");
chdir($f);
}
else
{
$f=$_SERVER['DOCUMENT_ROOT'];
$f2=$_REQUEST['dir'];
$dir=opendir($f2) or die ("error open dir");
chdir($f2);
}


$mass=array();
$i=0;
while(($d=readdir($dir))!==false)
{    
if($d=='.') continue;//Нам нужны только подкаталоги, игнорируем корневой каталог "."
      $ty=filetype($d);
      $mass[$ty][$i]=$d;
       
$i++;       
}

sort($mass);
$co=count($mass);

echo"<table width=100% cellpadding=1 cellspasing=1 border=1>";
echo"<tr><td id=t><b>name</b></td><td id=t><b>type</b></td><td id=t><b>mime_type</b></td><td id=t><b>path</b></td><td id=t><b>run</b></td><td id=t><b>view</b></td><td id=t><b>edit</b></td></tr>";

for($k=0; $k<$co; $k++)
{
foreach($mass[$k] as $r)
{//
      if(is_dir($r)==true)
      {
      echo"<tr><td>".$r."</td><td>dir</td><td>dir</td><td>".realpath($r)."</td><td><a href=?dir=".realpath($r).">".$r."</a></td><td>&nbsp;</td><td>&nbsp;</td></tr>";
      }
      if(is_file($r)==true)
      {
      $doc_root=$_SERVER['DOCUMENT_ROOT'];
      $real=dirname(realpath($r));
      $real_z=str_replace("\\","/",$real);
      $zam=ereg_replace($doc_root,"",$real_z);
      $rez=explode(".",$r);
      if(!isset($rez[1]))
      $rez[1]="Uknown";
      echo"<tr><td>".$r."</td><td>file</td><td>".$rez[1]."</td><td>".dirname(realpath($r))."</td><td><a href=".$zam."/".$r.">".$r."</a></td><td><a href=rabbit.php?path=".$zam."/".$r."&do=view>".$r."</a></td><td><a href=rabbit.php?path=".$zam."/".$r."&do=edit>".$r."</a></td></tr>";
    
    
    
      }
}//
}
echo"</table><p></p>";

if(isset($_REQUEST['path']))
{##
$len=strlen($_REQUEST['path'])-1;
$path=substr($_REQUEST['path'],1,$len);
$tk=fopen($path,"r+t") or die ("error open");
$tu=fseek($tk,0,SEEK_SET);
$tu=fread($tk,100000);
$tmp=fopen("tmp.txt","w+t") or die("error open tmp");
fwrite($tmp,$tu);

$base=basename($_REQUEST['path']);

///read

    if($_REQUEST['do']=="edit")
    {
    $file="tmp.txt";
    $open=file($file);
    $count=count($open);
    echo"<form name=ch method=post action=rabbit.php>";
    echo "<textarea name=textarea cols=150 rows=50>";
    $str=1;//для нумерации строк
    for($g=0; $g<$count; $g++)
    {
    $read=htmlspecialchars($open[$g]); 
    echo $read;//если выводить без textarea, после $read дописать <br>.
    $str++;//для нумерации строк
    } 
    echo"</textarea>";
    echo"<br><br>";
    echo"<input type=hidden name=change value=".$path.">";
    echo"<input type=submit name=go value=save>";
    echo"</form>";
    }
else
{
    
    if($_REQUEST['do']=="view");
    {
    $open=fopen($file="tmp.txt","rt");
    $lines=explode("\n",fread($open,100000));
    $count=count($lines);
    //echo "<iframe width=90% height=50%>";
    $str=1;//для нумерации строк
    for($g=0; $g<$count; $g++)
    {
    $read=htmlspecialchars($lines[$g]); 
    echo "<font color=red>".$str."</font>&nbsp;".$read."<br>";//если выводить без textarea, после $read дописать <br>.
    $str++;//для нумерации строк
    } 
    //echo"</iframe>";
   }
}  
}##

if(isset($_REQUEST['go']))
{
//$_POST['change'];// имя на которое перезаписать
//$_REQUEST['textarea'];//исходник
$tok=fopen($_POST['change'],"w+") or die ("error open");
fseek($tok,0,SEEK_SET);
fwrite($tok, $_POST['textarea']);
fclose($tok);
}

?>
</body>
</html>


Только одна проблема.
В 130 строке, когда я перезаписываю файл, пхп перед знаком " вставляет \ а мне это не надо, я пошарился в php.ini, и нашёл что за эту фишку отвечает magic_quotes_gpc=On, у себя то я её выключу, а у хостера как.
Не подскажите как это можно обойти
PM   Вверх
AztEK
Дата 3.1.2006, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Молодец! Поздравляю! smile

Фишка в следующем: если один раз заэкранировать спецсимволы (функция addslashes),
а потом ДВА раза разэкранировать (функция stripslashes), то всё будет в порядке. Подумай сам почему.


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Mal Hack
Дата 3.1.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(supercelt @ 3.1.2006, 16:37)
отвечает magic_quotes_gpc=On, у себя то я её выключу, а у хостера как.
Не подскажите как это можно обойти

magic_quotes_gpc_runtime
и проверить одноименой функцией. Если НЕ включены то не парсить, включены - парсить.
PM ICQ   Вверх
supercelt
Дата 3.1.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Это форум для начинающих, так что не смейтесь, если я спрошу вот что: что такое "парсить"????
Добавлено @ 19:23
А как заработать репутацию???? smile
PM   Вверх
z-END
Дата 3.1.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прафесар™
****


Профиль
Группа: Комодератор
Сообщений: 3014
Регистрация: 13.3.2003
Где: Венья, Пиетари

Репутация: 5
Всего: 102



Цитата(supercelt @ 3.1.2006, 19:21)
А как заработать репутацию????

можно у меня за недорого купить smile ... можно правила почитать/поиском воспользоваться=)
помогай остальным и будет тебе море репутации, респектов и прочих уваг =))



--------------------
Каждый чилавек пасвоему праф...а памоему НЕТ! 

PM WWW ICQ   Вверх
AztEK
Дата 3.1.2006, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Парсить == Обрабатывать
Mal Hack имеет ввиду, что следуещее.
Если влючены magic_quotes_gpc, то не экранировать спецсимволы и наоборот


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
supercelt
Дата 3.1.2006, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Так я их не экранирую, они сами, при записи в файл экранируются
PM   Вверх
Mal Hack
Дата 3.1.2006, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(AztEK @ 3.1.2006, 19:29)
Если влючены magic_quotes_gpc, то не экранировать спецсимволы и наоборот

Я другое имею ввиду (несколько)....
Обрати внимание:

Цитата(Mal @ 3.1.2006, 17:07)
magic_quotes_gpc_runtime
и проверить одноименой функцией. Если НЕ включены то не парсить, включены - парсить.


PM ICQ   Вверх
supercelt
Дата 3.1.2006, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 25.8.2005

Репутация: нет
Всего: 1



Спасибо, удачи
PM   Вверх
Guedda
Дата 11.1.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Извините... Про magic_quotes_gpc_runtime...
Можно код?
Такая же проблема возникла... Хочу поэкспериментировать...


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 12.1.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Guedda @ 11.1.2006, 21:52 Найти цитируемый пост)

Извините... Про magic_quotes_gpc_runtime...

А что именно? ini_get или magic_quote_gpc_runtime?
PM ICQ   Вверх
Guedda
Дата 12.1.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Именно magic_quotes_gpc_runtime.
Как с ним работать?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Janus
Дата 12.1.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 26.9.2005

Репутация: нет
Всего: 1



Вот так это делается:
Код

if (get_magic_quotes_gpc()) $_POST['text'] = stripslashes($_POST['text']);


--------------------
Проект "Репликатор" 
PM MAIL   Вверх
Guedda
Дата 12.1.2006, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Спасибо.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0831 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.