[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Делаю файловый архив
savelikan
У меня есть файл index.php Там форма добавления материала. Она ссылается на файл upload.php методом post. Данные сохраняются в file.txt.
Форма добавления в index.php
PHP
<html>
<
head>
  <title>Загрузка файлов на сервер</title>
</
head>
<
body><HR color=green><TABLE border=2><TR><TD><TABLE border=0><TR><TD>
      <FONT face=verdana size=3> Форма завантаження файла </FONT></TD></TR><TR><TD>
      <form action="upload.php" method="post" enctype="multipart/form-data">
      <input type="file" name="filename"> 
Додав
: <input type=text name=fileadd value=Адмін maxlength=15 size=17><br>
Назва файла: <input type=text name=filename maxlength=40 size=50>
Опис файла:<BR> <textarea COLS=80 ROWS=10  name=aboutfile></textarea></TD><TD valign=top>
<
FONT face=arial size=3>Категорії:</FONT><BR><FONT face=arial size=2>
    <input type=radio name="category" value="zno2010" checked>ЗНО 2010<br>
    <input type=radio name="category" value="zno2009" >ЗНО 2009<br>
    <input type=radio name="category" value="zno2008">ЗНО 2008<br>
    <input type=radio name="category" value="video">Відео<br>
    <input type=radio name="category" value="mp3">mp3<br>
    <input type=radio name="category" value="other">Інше<br></FONT></TD></TR></TABLE></TD></TR></TABLE>
    <input type="submit" value="Завантажити файл на сервер"><br>
    </form>
</
body>
</
html>


а вот и обработчик upload.php
PHP
<html>
<
head>
  <title>Результат завантаження файла</title>
</
head>
<
body>
<?
php
$category
= $_POST["category"];
   if($_FILES["filename"]["size"] > 1024*3*1024)
   {echo ("Размер файла превышает три мегабайта");}
   else{
        if(copy($_FILES["filename"]["tmp_name"],
        "upload/$category/".$_FILES["filename"]["name"]))
        $ip=$_SERVER['REMOTE_ADDR'];
        echo("Деталі: <br>");
        echo("Ім'я файла: ");
        echo($_FILES["filename"]["name"]);
        echo("<br>Розмір файла: ");
        echo($_FILES["filename"]["size"]);
        echo("<br>Завантажено в каталог: files/upload/$category");
        echo("<br>Тип файла: ");
        echo($_FILES["filename"]["type"]); 
     
//--------------Перейменування масивів 
$file[date] = date("m.d.y H:i:s");
$file[name] = $_POST['filename'];
$file[fileadd] = $_POST['fileadd'];
$file[aboutfile] = $_POST['aboutfile'];   
$file
[url] = $_FILES["filename"]["name"];
$file[sizebyte] = $_FILES["filename"]["size"];
//--------------Перевірка розміру файлів
if($file[sizebyte] < 1024000)
        {$file[size] = $file[sizebyte]/1024; $mira = "Кб.";}
        else {$file[size] = $file[sizebyte]/1000000; $mira = "Мб.";}
//--------------Збереження файлу в базі даних
$file[size] = round ($file[size], 2);
$string = "$file[name]|$category/$file[url]|$file[date]|$file[fileadd]|$file[size] $mira|error|7|$file[aboutfile]|$category|$ip \n"; 
$filename 
= "file.txt"; 
    if 
( is_writeable($filename) ) { 
    $fh 
= fopen($filename, "a+"); 
    $success 
- fwrite($fh, $string);
    fclose($fh); }
    else {print "Помилка! Не можу відкрити для для запису."; }};                      


Вопросы:

1. Проблема с IF. Если довабить файл меньше 3мб всё нормально, если больше - ошибка, и файл сохраняется (а должно написать "Размер файла превышает три мегабайта").

2. У меня поле textarea. Если одна строчка в файле - онфо об одном файле, то если напсать а textarea две строчки она будет считатся новым файлам. Как ету проблему решить?

3. Как отсортировать по категориям? Я думал так:
У меня категория записывается в файл ||||||категория|||
Если $line[8]=mp3/ то (форма информации о файле).
Но может лучше зделать через GET, чтоб через адресную строку, например index.pgp?category=mp3/
У меня в базе два файла в категории video. Почему отображается только один? Исправьте мои ошибки.
PHP
/----------------обработка запроса
if 
( isset( $_GET['categ'] ) ) {$action = $_GET['categ'];}else {$action = "";}
switch ( $action ) {
case "video":
        foreach( file("file.txt") as $data )
        $data = explode( "|", $data );
if ($data[8] == video){
     echo "<TABLE border=1><TD width=100%><FONT size=4 face=verdana>
        $data[0]
        </FONT></TD><TD><TABLE width=120><TR>
            <a href='$siteaddress/1/upload/$data[1]'><FONT size=2 face=verdana>Завантажити</FONT></a>
            </TABLE>
        </TD></TR><TR><TD colspan=2>
                    <TABLE border=0><TR><TD valign=top>
                <TABLE width=150><TR><TD><FONT size=2 face=arial>
                Додано:<I><B> $data[2]</B></I><BR>
                Додав: <I><B>$data[3]</B></I><BR>
                Розмір: <I><B>$data[4]</B></I><BR>
                Завантажень: <I><B>$data[5]</B></I><BR>
                Коментарів <I><B>$data[6]</B></I><BR>
                </FONT></TD></TR></TABLE>
            </TD><TD width=100% valign=top><FONT size=2 face=verdana>
                $data[7]</FONT>
                <BR><FONT face=arial size=1>--------------------------------------------------</FONT><BR>
                <FONT face=arial size=2>Файл знаходиться у категорії ''$data[8]''</FONT>
                </TD></TR></TABLE>
        </TABLE><BR>"
;}
break;
}
# ну а здесь конец таблицы
# примерно такой:
echo "</table>";

если убрать case - работает. На каждую категорию отдедельный файл делать? Ето как-то не по-современному.



Спустя 1 час, 31 минута, 28 секунд (9.08.2009 - 11:22) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 12:51)
Збереження файлу в базі даних

а по-моему не "в базі даних" а "у базі даних" smile.gif

Цитата (savelikan @ 9.08.2009 - 12:51)
1. Проблема с IF. Если довабить файл меньше 3мб всё нормально, если больше - ошибка, и файл сохраняется .


какая ошибка?

Цитата (savelikan @ 9.08.2009 - 12:51)
2. У меня поле textarea. Если одна строчка в файле - онфо об одном файле, то если напсать а textarea две строчки она будет считатся новым файлам. Как ету проблему решить?


наверное, не новым файлом, а новой записью? Варианта 2:
1. стереть все переводы строк при записи
2. по-другом организовать твою "базу данных" smile.gif

Цитата (savelikan @ 9.08.2009 - 12:51)
3. Как отсортировать по категориям?

уж очень тяжелый код у тебя... прости

Спустя 17 минут, 25 секунд (9.08.2009 - 11:40) savelikan написал(а):
Цитата
Цитата (savelikan @ 9.08.2009 - 12:51)
1. Проблема с IF. Если довабить файл меньше 3мб всё нормально, если больше - ошибка, и файл сохраняется .

какая ошибка?


Warning: copy() [function.copy]: Filename cannot be empty in C:\xampp\htdocs\downloads\upload.php on line 12
Деталі:
Ім'я файла:
Розмір файла:
Завантажено в каталог: files/upload/
Тип файла:


Ошибка пускай себе будет. Главное, чтоб в базу не добавлялся.



PS. "У" ставиться перед -в -ф -льв -ств -хв. Так що "в базі даних". Здесь идет оречь о PHP а не украинском языке.

Спустя 23 минуты, 33 секунды (9.08.2009 - 12:03) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 14:40)
PS. "У" ставиться перед -в -ф -льв -ств -хв. Так що "в базі даних". Здесь идет оречь о PHP а не украинском языке.

гы гы, хорошо biggrin.gif

PHP
if(copy($_FILES["filename"]["tmp_name"],
        
"upload/$category/".$_FILES["filename"]["name"]))


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

PHP
if( is_uploaded_file($_FILES["filename"]["tmp_name"]) && copy($_FILES["filename"]["tmp_name"],
        
"upload/$category/".$_FILES["filename"]["name"]))


и почему потом идет тупо $ip=$_SERVER['REMOTE_ADDR']; - это прикол такой? smile.gif
Возьмите все в фигурные скобки - ост. часть кода

Спустя 6 минут, 35 секунд (9.08.2009 - 12:10) savelikan написал(а):
>и почему потом идет тупо $ip=$_SERVER['REMOTE_ADDR']; - это прикол такой?
А как должно быть?

Спустя 2 минуты, 59 секунд (9.08.2009 - 12:13) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 15:10)
А как должно быть?


Цитата (Sylex @ 9.08.2009 - 15:03)
Возьмите все в фигурные скобки - ост. часть кода



Спустя 1 минута, 41 секунда (9.08.2009 - 12:14) savelikan написал(а):
Спасиб! Работает!
А можно зделать. чтоб оно вообще не загружало большой файл? А то оно загружает, а потом удаляет, потому, что размер больше 3мб.

Может лучше зделать через post_max_size? Как?

Спустя 12 минут, 20 секунд (9.08.2009 - 12:27) savelikan написал(а):
>1. стереть все переводы строк при записи

Как ето зделать в моем случае?


Категорию я зделал через case. Но посмотрите, у меня отображантся только первая запись. Усли убрать case - всё ок. Тогда делать на каждую категорию отдельный файл? Ето как-то не по-современному.

Спустя 58 минут, 48 секунд (9.08.2009 - 13:26) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 15:14)
А можно зделать. чтоб оно вообще не загружало большой файл?


post_max_size - ограничит размер для POST-запроса, соответственно для всех файлов(-а)
upload_max_filesize - ограничит размер файла

эти ограничения будут действовать в любом случае...

их можно выставить через .htaccess
Цитата
php_value upload_max_filesize 128M
php_value post_max_size 128M


но тогда пользователь не увидит сообщение об ошибке...

лучше выставить их побольше... а проверять в скрипте, как вы делаете...

и еще можно добавить переменную в форму
HTML
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />


но знать, что она на уровне клиента, и при желании пользователь может игнорировать это

Спустя 3 минуты, 55 секунд (9.08.2009 - 13:29) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 15:27)
>1. стереть все переводы строк при записи

Как ето зделать в моем случае?


PHP
$text str_replace(array("\n""\r"), ""$text);

Спустя 2 минуты, 8 секунд (9.08.2009 - 13:32) savelikan написал(а):
а ето в "" что означает? Потому, что я хочу, чтоб он переводы заменял на <BR>

Спустя 2 минуты, 53 секунды (9.08.2009 - 13:34) savelikan написал(а):
$_POST['aboutfile'] = str_replace(array("\n", "\r"), "", $_POST['aboutfile']);
$file[fileabout] = $_POST['aboutfile'];

$file[fileabout] пустое. Почему?

Спустя 1 минута, 25 секунд (9.08.2009 - 13:36) Sylex написал(а):
savelikan
ты уже наглеешь, пора заканчивать тебе объяснять wink.gif

http://ru.php.net/str_replace

это НА ЧТО меняются символы перевода строки...

и если ты поставишь там <br> у меня есть предположения что у тебя будут проблемы wink.gif двойные появятся возможно..

используй тогда:
http://ru.php.net/nl2br


Спустя 3 минуты, 5 секунд (9.08.2009 - 13:39) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 16:34)
$_POST['aboutfile'] = str_replace(array("\n", "\r"), "", $_POST['aboutfile']);
$file[fileabout] = $_POST['aboutfile'];

$file[fileabout] пустое. Почему?


не рассказывай сказки, я не знаю чему равна у тебя $_POST['aboutfile']:
PHP
<?php
$_POST
['aboutfile'] = "Этот текст для бла бла бла\n\r Должен вот так работать";
$_POST['aboutfile'] = str_replace(array("\n""\r"), ""$_POST['aboutfile']);
$file['fileabout'] = $_POST['aboutfile']; 
echo 
$file['fileabout'], '<br><br>';

echo 
nl2br($_POST['aboutfile']);


во-вторых привыкни НАВСЕГДА писать не $file[fileabout] а $file['fileabout']. ЭТО ВАЖНО

Спустя 14 минут, 42 секунды (9.08.2009 - 13:54) savelikan написал(а):
Спасиб! Работает.

Я добавил <BR>. Вроде, работает.
$_POST['aboutfile'] = str_replace(array("\n", "\r"), "<BR />", $_POST['aboutfile']);

Но вот, что меня интересует. Мой NotePad++ считает каждый тег <BR> как новую строку. Я веду к тому, что у меня каждая запись - одна строка. Логично, что тогдавсё нарушится. Но всё работает нормально. Ето не обязательно и не важно, но я хотел бы знать, почему так.


Давайте раберемся с категориями. первый пост последний скрипт.
При использовании case появляется толька одна запись. Или ето нужно зделать другим способом?

Спустя 57 минут, 27 секунд (9.08.2009 - 14:51) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 16:54)
При использовании case появляется толька одна запись. Или ето нужно зделать другим способом?

конечно, другим

Цитата (savelikan @ 9.08.2009 - 16:54)
Мой NotePad++ считает каждый тег <BR> как новую строку.


очень странно blink.gif ... могу предположить что есть настройка такая... но по дефолту такого точно не должно быть

Спустя 6 минут, 26 секунд (9.08.2009 - 14:58) savelikan написал(а):
И каким же способом?


Вот файл.
определяется как 5записей.

Спустя 24 минуты, 53 секунды (9.08.2009 - 15:22) savelikan написал(а):
И каким же способом?

Спустя 1 час, 23 минуты, 30 секунд (9.08.2009 - 16:46) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 18:22)
И каким же способом?

дальше только за ваши $ smile.gif

но не переживай, тут найдутся добрые люди smile.gif

Спустя 20 минут, 58 секунд (9.08.2009 - 17:07) savelikan написал(а):
Цитата
дальше только за ваши $

Значит, мои $:
$file['aboutfile']
$file['date']
$file['name']
$file['fileadd']
$file['url']
$file['sizebyte']
laugh.gif laugh.gif laugh.gif
Мне не нада написать скрипт, мне нужно только сказать способ, как ето можно зделать.

Спустя 1 час, 47 минут, 22 секунды (9.08.2009 - 18:54) savelikan написал(а):
е! Добрые люди, помогите мне с категориями.

Спустя 37 минут, 51 секунда (9.08.2009 - 19:32) glock18 написал(а):
savelikan
Я не знаю выражу ли я общее мнение. Но добрые люди прежде всего хотят видеть, что вы сами что-то делаете, а не просто ждете, когда кто-то сделает это за вас. Вы покажите, что вы сделали для того, чтобы заработало. Тогда может кто-нибудь и решит вам помочь. А сейчас глядя на эту страницу уже который раз, я не могу пересилить себя и просто перейти на 1 страницу топика, чтобы вникнуть в суть проблемы. Все потому, что мне кажется, вам абсолютно не хочется разобраться.

Спустя 4 минуты, 33 секунды (9.08.2009 - 19:37) savelikan написал(а):
Ладно, я уже сам через case как-то умодрился всё зделать.

Спустя 21 минута, 28 секунд (9.08.2009 - 19:58) savelikan написал(а):
Меня теперь другое интересует.
Повторяю. У меня база даных - текстовый файл file.txt. Каждая строка - одна запись. Записи читаются кодом
PHP
foreach( file("file.txt") as $data )
{
     $data = explode( "|", $data );

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


Либо как зделать, чтоб новые записи добавлялись в начало file.txt?
Вот запись в файл
PHP
file['size'] = round ($file['size'], 2);
$string = "$file[name]|$category/$file[url]|$file[date]|$file[fileadd]|$file[size] $mira|error|7|&nbsp&nbsp&nbsp&nbsp&nbsp$file[aboutfile]|$category|$ip \n"; 
$filename 
= "file.txt"; 
    if 
( is_writeable($filename) ) { 
    $fh 
= fopen($filename, "a+"); 
    $success 
- fwrite($fh, $string);
    fclose($fh); }


Я пробовал атрибут файла ставить r+ и /n в начало записи. Тогда первая строчка всегда пустая, а вторая переписывается.

Спустя 15 минут, 55 секунд (9.08.2009 - 20:14) Sylex написал(а):
savelikan
можно отсортировать массив просто одной функции в обр. направлении

опять спросишь как?

А фиг вам tongue.gif

Спустя 2 минуты, 31 секунда (9.08.2009 - 20:17) savelikan написал(а):
Ето так тяжело?

Спустя 3 минуты, 3 секунды (9.08.2009 - 20:20) Sylex написал(а):
Цитата (savelikan @ 9.08.2009 - 23:17)
Ето так тяжело?

нет...

вы очень невежливы ко мне.... вы не цените мое время... и так ВСЕ!
wink.gif

Спустя 2 минуты, 23 секунды (9.08.2009 - 20:22) savelikan написал(а):
Ну я знаю, что ето можно зделать через arsort($масив);
Но у меня масив[1] масив[2] масив[3] масив[4]...
И оно не работает.

К тому же у даных о файле нет по чем сортировать.
Как считать последний символ предпоследней строки txt файла и добавить его в переменную $linetest?
Если будет свободное время, подскажите мне.

Спустя 1 час, 6 минут, 50 секунд (9.08.2009 - 21:29) savelikan написал(а):
А что ето значит?
Warning: Division by zero in C:\xampp\htdocs\downloads\fileloader.php on line 2

ошибка в
PHP
<?php
$name 
= upload/mp3/$_FILES["filename"]["name"];
if (file_exists($name)){echo "Файл не существует";} 
else{ echo "Файл з таким іменем вже існує! Змініть ім'я файла.";}

Спустя 3 минуты, 7 секунд (9.08.2009 - 21:32) SunSet написал(а):
savelikan
Смотрю, ты уже сам с собой разговариваешь laugh.gif

Спустя 2 минуты, 3 секунды (9.08.2009 - 21:34) savelikan написал(а):
Я не с собой раззновариваю. Я наделсь, что кто-то мне поможет.


Суть кода: не позволить загружать файлы, которые уже присутствуют в такой папке.имя файла $_FILES["filename"]["name"]. Он должен проверить, нет ли такото вайла в upload/mp3/. Независимо от того, есть файл или нет, мне пишет

Warning: Division by zero in C:\xampp\htdocs\downloads\fileloader.php on line 2
Файл з таким іменем вже існує! Змініть ім'я файла.

Если можно, обьясните, в чем проблема.

Спустя 24 минуты, 49 секунд (9.08.2009 - 21:59) glock18 написал(а):
Цитата
Warning: Division by zero in C:\xampp\htdocs\downloads\fileloader.php on line 2


Просто переведи.

savelikan, Салех ведь правильно сказал. Будь вежлив, и тогда тебе помогут. Это ведь не так сложно сначала воспользоваться гуглом, поиском на форуме и т.п. Прежде чем лепить вопрос сюда.

Касательно, сортировки в обратном порядке смотри функцию reverse. Это исключение, на которое я больше не пойду - не буду давать ответов, если не будет проявлено банальное уважение.

Спустя 8 часов, 51 минута, 32 секунды (10.08.2009 - 06:50) PandoraBox2007 написал(а):
делить на НОЛЬ низя !1!!!ОНОТОЛЕЙ ЗАХВАТИЛ МИР

PHP
$name "upload/mp3/" $_FILES["filename"]["name"];

Спустя 58 минут, 56 секунд (10.08.2009 - 07:49) savelikan написал(а):
Доюрое утро!
Я не знаю, правильно ли я зделал с категориями, но, пожалуйста, посмотрите.
файл index.php - он главний, здесь список файлов.
PHP
<?php
echo 
"<center><FONT face=vardana size=5>Файли для завантаженя</FONT></center>
    <HR color=green><TABLE border=0><TR><TD valign=top>
            <TABLE width=150><TR><TD><FONT face=arial size=3>Оберіть категорію<BR></FONT><HR>"
; require ("filecategory.php"); echo "</TD></TR></TABLE>
        </TD><TD width=100% valign=top>"
;
        
if 
( isset( $_GET['category'] ) ) {$action = $_GET['category'];}else {$action = "";}
switch ( $action ) {
case "zno2010":
include 'category/zno2010.php';
break;
case "zno2009":
include 'category/zno2009.php';
break;
case "zno2008":
include 'category/zno2008.php';
break;
case "video":
include 'category/video.php';
break;
case "mp3":
include 'category/mp3.php';
break;
case "other":
include 'category/other.php';
break;
default:
include 'category/default.php';

}

echo "</table>";

echo "<TITLE>Файли для завантаження $title</TITLE>";


require '../testbase/PHP/PHPscript.php';
echo $bottommenu;


В папке category есть файлы, которые отвечают за ту или другую категорию, например, файл zno2010.php. Как вы и сказали, я пытался использовать reverse, но, ошибка "Warning: array_reverse() [function.array-reverse]: The argument should be an array in C:\xampp\htdocs\downloads\category\zno2010.php on line 6".
PHP
<?php
$title 
= " - Зовнішнє незалежне тестування 2010";
foreach(
 file("file.txt") as $data2 )
{
     $data2 = explode( "|", $data2 );
     $data = array_reverse($data, true);
if ($data[8] == zno2010){
     echo "<TABLE border=1><TD width=100%><FONT size=4 face=verdana>
        $data[0]
        </FONT></TD><TD><TABLE width=120><TR>
            <a href='$siteaddress/downloads/upload/$data[1]'><FONT size=2 face=verdana>Завантажити</FONT></a>
            </TABLE>
        </TD></TR><TR><TD colspan=2>
                    <TABLE border=0><TR><TD valign=top>
                <TABLE width=150><TR><TD><FONT size=2 face=arial>
                Додано:<I><B> $data[2]</B></I><BR>
                Додав: <I><B>$data[3]</B></I><BR>
                Розмір: <I><B>$data[4]</B></I><BR>
                Завантажень: <I><B>$data[5]</B></I><BR>
                Коментарів <I><B>$data[6]</B></I><BR>
                </FONT></TD></TR></TABLE>
            </TD><TD width=100% valign=top><FONT size=2 face=verdana>
                $data[7]</FONT>
                <BR><FONT face=arial size=1>--------------------------------------------------</FONT><BR>
                <FONT face=arial size=2>Файл знаходиться у категорії ''<a href='?category=zno2010'>$data[8]</a>''</FONT>
                </TD></TR></TABLE>
        </TABLE><BR>"
;}    }


Так можно долга рассказывать, но лушче скачайте скрипт, и посмотрите, что можно зделать.
http://www.testportal.at.ua/htdocs.rar
Запускать - admin/index.php - файлы.


Цитата
делить на НОЛЬ низя !1!!!ОНОТОЛЕЙ ЗАХВАТИЛ МИР

Я не совсем понимаю, при чем здесь деления, ето путь, у меня он дважды: при копировании
copy($_FILES["filename"]["tmp_name"],
"upload/$category/".$_FILES["filename"]["name"])
при сохранении
file[name]|$category/$file[url].
Хотелось бы по больше об етом узнать.

С уважениям, savelikan.

Спустя 2 часа, 22 минуты, 17 секунд (10.08.2009 - 10:12) Guest написал(а):
С категориями порядок, а вот это
PHP
foreach( file("file.txt") as $data2 )

сюр, которого я пока еще ни разу не встречл...
А тут почему то есть двойка, то нету?
PHP
$data2 explode"|"$data2 );
     
$data array_reverse($datatrue);


Спустя 6 минут, 25 секунд (10.08.2009 - 10:18) twin написал(а):
А вот это:
PHP
$category/$file[url]

и есть деление. надо так хотя бы:
PHP
$category .'/'. $file['url']

Спустя 20 минут, 11 секунд (10.08.2009 - 10:38) savelikan написал(а):
Спасиб! Испоравил, но как было,, так и осталось. Файл новые записи показивает последними.
PHP
$data2 explode"|"$data2 );
     
$data array_reverse($data2true);



И еще один вопросик. Как вы говорили, етой формой загрузки файла не сервер можно загрузить PHP скрипт и сломать сайт. Чтоб загружать только определенные типы файлов я зделал следущее:
PHP
if($_FILES["filename"]["type"] == "application/x-zip-compressed"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "audio/mpeg"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "video/x-ms-wmv"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "video/avi"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "application/msword"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "application/pdf"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "image/pjpeg"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "image/gif"){
                        require 
'fileloader.php';}
                elseif(
$_FILES["filename"]["type"] == "image/x-png"){
                        require 
'fileloader.php';}
else {echo 
"<FONT size=3 face=arial>Цей файл заборонено завантажувати на наш сервер.</FONT>";}}

Ето как-бы работает, но есть одно НО. Тип файла rar exe php - application/octet-stream. Как можно позволить загжужать только exe rar.
Ето не очено важно, но всё-таки буду ждать ответа.

Спустя 3 часа, 34 минуты, 16 секунд (10.08.2009 - 14:12) Kuliev написал(а):
savelikan
Так намного читабельней

PHP
$type = isset($_FILES['filename']['type']) ? $_FILES['filename']['type'] : 0;

switch(
$type)
{
    case 
"application/x-zip-compressed":
    require (
"fileloader.php");
    break;
    
    case 
"audio/mpeg":
    require (
"fileloader.php");
    break;
    
    case 
"video/x-ms-wmv":
    require (
"fileloader.php");
    break;
    
    case 
"video/avi":
    require (
"fileloader.php");
    break;
    
    case 
"application/msword":
    require (
"fileloader.php");
    break;
    
    case 
"application/pdf":
    require (
"fileloader.php");
    break;
    
    case 
"image/pjpeg":
    require (
"fileloader.php");
    break;
    
    case 
"image/gif":
    require (
"fileloader.php");
    break;
    
    case 
"image/x-png":
    require (
"fileloader.php");
    break;
    
    default : 
    echo 
"<FONT size=3 face=arial>Цей файл заборонено завантажувати на наш сервер.</FONT>";
}


Спустя 45 минут, 51 секунда (10.08.2009 - 14:58) savelikan написал(а):
Читабельнее, но вопрос остался.

Спустя 57 минут, 49 секунд (10.08.2009 - 15:56) PandoraBox2007 написал(а):
PHP
switch($type)
{
    case "application/x-zip-compressed": case "audio/mpeg": case "video/x-ms-wmv": case "video/avi": case "application/msword": case "application/pdf": case "image/pjpeg": case "image/gif": case "image/x-png":
    require ("fileloader.php");
    break;   
    
    default 
: 
    echo 
"<FONT size=3 face=arial>Цей файл заборонено завантажувати на наш сервер.</FONT>";
}


или

PHP
$types_allow = array("application/x-zip-compressed", "audio/mpeg", "video/x-ms-wmv", "video/avi", "application/msword", "application/pdf", "image/pjpeg", "image/gif", "image/x-png");

if (in_array($type, $types_allow))
{
    require ("fileloader.php");
}
 else {
    echo "<FONT size=3 face=arial>Цей файл заборонено завантажувати на наш сервер.</FONT>";
}


MIME проверять это не идельно так как может быть уязвимость на папку загружаемых файлов лучше сделать это (в папке загружаемых файлов)

.htaccess
PHP
php_flag engine off
RemoveHandler 
.php .php5 .php4 .php3 .phtml .pl .asp
AddType text
/plain .php .php .htm .html .phtml .pl .

Спустя 1 час, 5 минут, 34 секунды (10.08.2009 - 17:02) savelikan написал(а):
Создал файл .htaccess. Теперь при загрузке файла появляется часть кода PHP и сообщения о успершой загрузке.
PHP
1024*10*1024) {echo "Файл завеликий. Спробуйте завантажити файли, які менші, ніж 10 Мб.";} else{ switch($_FILES["filename"]["type"]) { case "application/x-zip-compressed": case "audio/mpeg": case "video/x-ms-wmv": case "video/avi": case "application/msword": case "application/pdf": case "image/pjpeg": case "image/gif": case "image/x-png": require ("fileloader.php"); break; default : echo "Цей файл заборонено завантажувати на наш сервер."; }} require '../testbase/PHP/PHPscript.php'; echo $bottommenu

Спустя 3 минуты, 58 секунд (10.08.2009 - 17:06) savelikan написал(а):
Лано. загрузка файлов не так важно.
Хотелось бы как-то редактировать файлы.
Я думаю так:
добавить такую же страницу файлов в админку, и напротивь каджого файла кнопка редактирования и удаления. А как можно получить данные для редактированя либо удаления определенной строки файла TXT?

Спустя 1 минута, 45 секунд (10.08.2009 - 17:07) PandoraBox2007 написал(а):
Цитата (savelikan @ 10.08.2009 - 16:02)
Создал файл .htaccess. Теперь при загрузке файла появляется часть кода PHP и сообщения о успершой загрузке.
PHP
1024*10*1024) {echo \\"Файл завеликий. Спробуйте завантажити файли, які менші, ніж 10 Мб.\\";} else{ switch($_FILES[\\"filename\\"][\\"type\\"]) { case \\"application/x-zip-compressed\\": case \\"audio/mpeg\\": case \\"video/x-ms-wmv\\": case \\"video/avi\\": case \\"application/msword\\": case \\"application/pdf\\": case \\"image/pjpeg\\": case \\"image/gif\\": case \\"image/x-png\\": require (\\"fileloader.php\\"); break; default : echo \\"Цей файл заборонено завантажувати на наш сервер.\\"; }} require '../testbase/PHP/PHPscript.php'; echo $bottommenu;

.htaccess файл не в папку с ПХП скриптами а в папку upload или files !!!! где складируеш файлы что б не запустить вирус(шелл) ))

Спустя 12 минут, 54 секунды (10.08.2009 - 17:20) savelikan написал(а):
Лано. загрузка файлов не так важно.
Хотелось бы как-то редактировать файлы.
Я думаю так:
добавить такую же страницу файлов в админку, и напротивь каджого файла кнопка редактирования и удаления. А как можно получить данные для редактированя либо удаления определенной строки файла TXT?

Спустя 7 минут, 1 секунда (10.08.2009 - 17:27) PandoraBox2007 написал(а):
SQLite, MySQL, MSSQL, текстовик, таблица, иерархия уровней папок для хранение что еще надо для быстрой работы файлового архивчега wink.gif ?

Спустя 10 минут, 39 секунд (10.08.2009 - 17:38) savelikan написал(а):
Еще нужно редактирования и немного помощи.
Мой фопрос:
Как можно получить данные для редактированя либо удаления определенной строки файла TXT?

Спустя 29 минут, 59 секунд (10.08.2009 - 18:08) PandoraBox2007 написал(а):
Цитата (savelikan @ 10.08.2009 - 16:38)
Еще нужно редактирования и немного помощи.
Мой фопрос:
Как можно получить данные для редактированя либо удаления определенной строки файла TXT?

пройтись по всем строкам если ты не знаеш положение offset в файле

строки это нечто а просто символы переноса файл 1 (поток 1)
лучше в твоем случае мини файловая СУБД (SQLite - http://www.sqlite.org/)

Спустя 1 час, 1 минута, 37 секунд (10.08.2009 - 19:10) savelikan написал(а):
а как пройтись? Что-то google Не находит ничего.

Там оно просто выводит $data для кажной записи ($data[1] $data[2]).
А как нумеруется каждая запись? Например, $data1 $data2 для каждой записи, чтоб потом найти строку и отредактировать.

Спустя 32 минуты, 46 секунд (10.08.2009 - 19:42) savelikan написал(а):
Данные из файла читаются так
PHP
foreach( file("file.txt") as $data2 )
{
     $data2 = explode( "|", $data2 );
     $data = array_reverse($data2, true);

Так добвляется сразу несколько записей.
Как мне осуществить ето:
PHP
$array = file("file.txt");
echo $array[номер строки, где онформация о ДАННОМ файле];


Например. Бада данных:
|zno2010/about.php|08.10.09 17:29:13|Адмін|1.04 Кб.|error|7|&nbsp&nbsp&nbsp&nbsp&nbsp|zno2010|127.0.0.1

|zno2010/about.php|08.10.09 17:29:13|Адмін|1.04 Кб.|error|7|&nbsp&nbsp&nbsp&nbsp&nbsp|zno2010|127.0.0.1

Открылось:
user posted image
Мне нужно, чтоб он открыл данный о третьем файле в форме textarea?

Может, нужно добавть ID для каждой записи в базу для орентации?

Буду ждать ответа.

Спустя 2 часа, 36 минут, 54 секунды (10.08.2009 - 22:19) PandoraBox2007 написал(а):
2 индекса номер категории и номера файлов в теме

Спустя 13 минут, 22 секунды (10.08.2009 - 22:33) savelikan написал(а):
В смысле... ето добавть в базу?

Спустя 3 часа, 32 минуты, 33 секунды (11.08.2009 - 02:05) PandoraBox2007 написал(а):
имя файла может быть категория, а индексы это номерация списка

savelikan, ага добавь в начало индекс wink.gif

Спустя 4 часа, 2 минуты, 20 секунд (11.08.2009 - 06:07) savelikan написал(а):
Я только могу последний индекс сохранять в отдельном файле, а то я не знаю, как он будет знать, каой последний индекс (последний сивол предпоследней строки).


_____________
Одесса - мой город!)))
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.