Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

PHP - Изтриване ,правене ,четене и писане по фаилове

Featured Replies

Трябва да прегледам файловете и директорийте в дадена папка да мога да изтрия файл да направя нов(с редактор) ,да четя и пиша по файловете също.Успях да направя преглеждането на папката, но другите функций не мога.Важното е да са под формата на линк или бутон например:

файл.тхт изтрий редактирай прегледай
Кода за четенето на съдържанието в папките:

$dirPath = '.';



if ($handle = opendir($dirPath)) {



   while (false !== ($file = readdir($handle))) {



  	if ($file != "." && $file != "..") {

 		if (is_dir("$dirPath/$file")) {

        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file(Директория)</a></div><br>";

 		} else {


        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file</a></div><br>";

 		}

  	}

   }



   closedir($handle);

}

Трябва да прегледам файловете и директорийте в дадена папка да мога да изтрия файл да направя нов(с редактор) ,да четя и пиша по файловете също.Успях да направя преглеждането на папката, но другите функций не мога.Важното е да са под формата на линк или бутон например: Кода за четенето на съдържанието в папките:

$dirPath = '.';



if ($handle = opendir($dirPath)) {



   while (false !== ($file = readdir($handle))) {



  	if ($file != "." && $file != "..") {

 		if (is_dir("$dirPath/$file")) {

        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file(Директория)</a></div><br>";

 		} else {


        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file</a></div><br>";


 		}

  	}

   }



   closedir($handle);

}

командата ти за изтриване е unlink.

или добавяш през jscript бутон за изтриване, или през GET

index.php?call=delete&name=$file

правиш sanitize на променливите за да не те инжектират с глупости и изпълняваш unlink в/у файла.

за preview на файла трябва да провериш първо дали е текстов файл, ако е бинарен няма какво да му правиш за преглед.

mime_content_type - text/plain && size < 1MB

един бутон правиш с гет, изчиташ файла и го постваш в таблица и един бутон затвори на прозореца.

P.S.

while (false !== ($file = readdir($handle))) {

ти е излишна проверка, whie няма да тръгне по подразбиране ако не може да ти изчете директорията.

while($file = readdir($handle)) {

или може би perl-a ме е разлигавил прекалено много :think:

Редактирано от sanddaemon (преглед на промените)

  • Автор

За функцията unlink() знам , опитах чрез гет, с линк към страница делете.пхп, но не ще, за да се подсигуря сложих chmod 0777 команда в началото на скрипта, но не ще и не ще на локалхост и сървър.Нямам грешки в синтакса проверих много пъти, ето го целия код ако е нужен без командата унлинк:

<html>

<head>

<title>Page 1/Index</title>

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

<style type="text/css">

a:link {color:#000;} 	

a:visited {color:#000;} 

a:hover {color:#03F;}  

a:active {color:#000;}  

</style>

</head>

<body bgcolor="#0099FF">

<img src="home.png" width="100" height="100" style="position:absolute;" align="middle"/>

<h1 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page 1/Index</h1>

<h3 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Вашият localhost</h3>

<?php


echo'Моля изберете една от следните опций:<p>

<a href="xampp/index.php" >XAMPP контролен панел</a>

или отоворената папка:<br> ';


chmod("/", 0777);


$dirPath = '.';



if ($handle = opendir($dirPath)) {



   while (false !== ($file = readdir($handle))) {



  	if ($file != "." && $file != "..") {

 		if (is_dir("$dirPath/$file")) {

        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file(Директория)</a></div>";

 		} else {


        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file</a></div>или " . filesize($file);

			echo '&nbsp;&nbsp; Байта';

 		}

  	}

   }



   closedir($handle);

}




?>

<p align="center">Направено от ФодоР(Кристиан К. Атанасов) (c) 2010</p>

</body>

</html> 

Редактирано от FodoR (преглед на промените)

chmod("/", 0777);

мозък, тая команда в тоя вид се моли да не ти я изпълнят с правата на root!!!

въобще защо ти е да я правиш??

ако потребителя на web servera няма права в/у файла за триене, то със сигурност няма правя да му сменя режима на работа.

преди да пъхаш системни команди мисли малко.

с това по - горе си омажеш целият web server перманентно!! след нея само преинсталация върши работа.

погледни си логовете на apache защо не ти изтрива файла.

Редактирано от sanddaemon (преглед на промените)

  • Автор

Не знам защо не ми го изтриваше, но явно тази команда е задължителна ,но може и да е само с 0700 параметър за да може само собственика да трие.Като цяло с триенето се справих.Ето как:

index.php

<html>

<head>

<title>Page 1/Index</title>

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

<style type="text/css">

a:link {color:#000;}  	

a:visited {color:#000;} 

a:hover {color:#03F;}  

a:active {color:#000;}

</style>

</head>

<body bgcolor="#0099FF">

<img src="home.png" width="100" height="100" style="position:absolute;" align="middle"/>

<h1 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page 1/Index</h1>

<h3 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Вашият localhost</h3>

<?php


echo'Моля изберете една от следните опций:<p>

<a href="xampp/index.php" >XAMPP контролен панел</a>

или отоворената папка:<br> ';


function delete() {

	unlink ($file);

}


$dirPath = '.';



if ($handle = opendir($dirPath)) {



   while (false !== ($file = readdir($handle))) {



  	if ($file != "." && $file != "..") {

 		if (is_dir("$dirPath/$file")) {

        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file(Директория)</a></div><br>";

 		} else {


        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file</a></div>или<form action='delete.php' method='get'><input type='hidden' value='$file' name='file'/>

<input type='submit' value='изтриване'/>

</form> " 

			. filesize($file);

			echo '&nbsp;&nbsp; Байта';

 		}

  	}

   }



   closedir($handle);

}




?>

<p align="center">Направено от ФодоР(Кристиан К. Атанасов) (c) 2010</p>

</body>

</html>
delete.php:
<?php

$home = ("localhost/");

$delete=$_GET['file'];

chmod($delete, 0700) or die("Error CHMODing $delete");

unlink ($delete) or die ("Error unlinking $delete");


header( 'Location:http://localhost/' ) ;


?>

Така ще направя и останалите.

Редакция: Махам chmod - а oт индекса както каза санд демон, за сигурност.

Редактирано от FodoR (преглед на промените)

Не знам защо не ми го изтриваше, но явно тази команда е задължителна ,но може и да е само с 0700 параметър за да може само собственика да трие.Като цяло с триенето се справих.Ето как:

index.php

<html>

<head>

<title>Page 1/Index</title>

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

<style type="text/css">

a:link {color:#000;}  	

a:visited {color:#000;} 

a:hover {color:#03F;}  

a:active {color:#000;}

</style>

</head>

<body bgcolor="#0099FF">

<img src="home.png" width="100" height="100" style="position:absolute;" align="middle"/>

<h1 > &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Page 1/Index</h1>

<h3 >&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Вашият localhost</h3>

<?php


echo'Моля изберете една от следните опций:<p>

<a href="xampp/index.php" >XAMPP контролен панел</a>

или отоворената папка:<br> ';


function delete() {

	unlink ($file);

}


$dirPath = '.';



if ($handle = opendir($dirPath)) {



   while (false !== ($file = readdir($handle))) {



  	if ($file != "." && $file != "..") {

 		if (is_dir("$dirPath/$file")) {

        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file(Директория)</a></div><br>";

 		} else {


        	echo "<div style='background-color:#0ccccc;'><a href='$file'>$file</a></div>или<form action='delete.php' method='get'><input type='hidden' value='$file' name='file'/>

<input type='submit' value='изтриване'/>

</form> " 

			. filesize($file);

			echo '&nbsp;&nbsp; Байта';

 		}

  	}

   }



   closedir($handle);

}




?>

<p align="center">Направено от ФодоР(Кристиан К. Атанасов) (c) 2010</p>

</body>

</html>
delete.php:
<?php

$home = ("localhost/");

$delete=$_GET['file'];

chmod($delete, 0700) or die("Error CHMODing $delete");

unlink ($delete) or die ("Error unlinking $delete");


header( 'Location:http://localhost/' ) ;


?>

Така ще направя и останалите.

Редакция: Махам chmod - а oт индекса както каза санд демон, за сигурност.

$delete=preg_match('/^[^\/][a-z0-9\.\-\_\=\/]*$/i', $_GET['file']);

Редактирано от sanddaemon (преглед на промените)

  • Автор

Защо да го слагам това?Това са символите с които може да е името.Ако е на кирилица?

Защо да го слагам това?Това са символите с които може да е името.Ако е на кирилица?

ми защото щи пратят GET заявка да изтриеш нещо, което не трябва да триеш/няма да искаш да изтриеш.

имена на файлове на кирилица е малоумица, от която трябва да се защитиш в зародиш!

  • Автор

Ок, всичко се работи, но когато искам да прочета файл не искам да ми показва само кодът, а не като страница защото така става.read.php:

... <?php

$myFile = $_GET['file'];

$fh = fopen($myFile, 'r');

$theData = fread($fh, 9000000);

fclose($fh);

echo '

<body bgcolor="#0099FF">

<a href="http://localhost/">Назад</a>

<div style="border:solid; border-color:black; background-color:white;">';

echo $theData;

echo '</div><a href="http://localhost/">Назад</a> ... 

Редакция:Също как да направя така че да ми показва картиниките като картинки, а не символи?

Редактирано от FodoR (преглед на промените)

Ок, всичко се работи, но когато искам да прочета файл не искам да ми показва само кодът, а не като страница защото така става.read.php:

... <?php

$myFile = $_GET['file'];

$fh = fopen($myFile, 'r');

$theData = fread($fh, 9000000);

fclose($fh);

echo '

<body bgcolor="#0099FF">

<a href="http://localhost/">Назад</a>

<div style="border:solid; border-color:black; background-color:white;">';

echo $theData;

echo '</div><a href="http://localhost/">Назад</a> ... 

Редакция:Също как да направя така че да ми показва картиниките като картинки, а не символи?

нали ти казах да правиш проверка за съдържанието на файла?

ако е бинарен няма смисъл да му пускаш съдържанието.

за да го видиш като картинка, първо провери дали е картинка.

за да покажеш картинката трябва да подадеш:

print "Content-type: image/jpeg\n\n";

а не print "Content-type: text/html\n\n"; както е стандартно при генериране на html.

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.