Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: uploader i blokowanie html/php podczas wysylania
Forum PHP.pl > Forum > Przedszkole
backlash
a wiec tak.. nie wiem jaka powinienem wstawic komende która by blokowala pliki typu htm i php :/

umieszcze kod strony
Kod
<form name="upload" method="POST"

enctype="multipart/form-data" action="uploader.php">

<p>Upload System:<br>

<input type="file" name="file" size="40" >

<br>

<input type="submit" value="Send"></p>

</form>

--htm

[php:1:a081b4b605]
<?
copy("$file", "$file_name");
unlink("$file");
echo"<br><br><br><b>File Info:</b><br>
<br>
Link do pliku:<br>http://www.xxx.zzz.ppp.lll/$file_name<br>
<br>
Size: $file_size b";
?>
[/php:1:a081b4b605]
---php

mozecie mnie wysmiac ale chce tylko sie dowiedziec jaki to ma byc kod..
rogrog
[php:1:6a50d6f62e]
<?php

$blokuj[] = 'text/html';
$blokuj[] = 'application/octet-stream';


if(in_array($_FILES['type'], $blokuj)){
echo 'Plików tego typu nie można przesyłać';
} else {
move_uploaded_file($_FILES['plik']['tmp_name'], $_FILES['plik']['name']); //nigdy nie cytuj zmiennych, uzywaj zmiennych superglobalnych

echo "<br><br><br><b>File Info:</b><br>
<br>
Link do pliku:<br>http://www.xxx.zzz.ppp.lll/".$_FILES[plik][name]."
<br>
<br>
Size: $file_size b";
}
?>
[/php:1:6a50d6f62e]

PS. troche niestosowny tytuł tematu!
backlash
aha..
ale powiedz czemu nie dziala :/
http://www.members.lycos.co.uk/pluploader/...st/uploader.htm
hwao
Taki fajny Pan napisal to moze warto przeczytac winksmiley.jpg
http://php.pl/index.php/phppl/artyku_y/dla...h/upload_plik_w
backlash
nie no nie lapie tego :/
mozecie mi jakos to wytlumaczyc questionmark.gif
prosze

#up
moze jestem slepy ale jakos nie znalazlem nic na temat blokowania php i html podczas wysylania na server :/
backlash
<bump>

[php:1:1ae4cdcfbc]
<?php
if($file_name='text/html'){ echo 'Error';}
else {
copy($file, $file_name);
unlink($file);
echo"<br><br><br><b>File Info:</b><br>
<br>
Link do pliku:<br>http://xxxxxxxxxx.xxxx/$file_name<br>
<br>
Size: $file_size b
";}
?>
[/php:1:1ae4cdcfbc]

mozeci mi wyjasnic co zle zrobilem...
niestety jeszcze sie na tym nie znam jak wy, lecz bardzo zalezy mi zeby to dzialalo ...
rogrog
1. nie $file_name tylko $file_type (pierwsza linijka)
2. nie $file_name czy $file_type tylko $_FILES['file']['name'] i $_FILES['file']['type']
3. nie = tylko == (pierwsza linijka)
4. zamiast copy lepiej uzyc move_uploaded_file()
backlash
stary dzieki..twoja ostatnia odpowiedz bardzo mi pomogla
...ale...
[php:1:667112781c]
<?php
if($file_type=='text/html') { echo 'Plik nie moze zostać przesłany <br>Prawdopodobnie zawiera złe rozszerzenie.<br>
<br>
<hr>
<br>
';}
else {
copy($file, $file_name);
unlink($file);
echo"<br><br><br><b>File Info:</b><br>
$file_name<br>
Size: $file_size b
";}
?>
[/php:1:667112781c]

po wybraniu pliku który chce przerzucic jako pierwszy wybralem dowolny html. No i dzialala pokazywala sie komenda erroru. Potem sprawdzilem na gifach .. dzialalo ale gdy juz chcialem przetestowac na innym htmlu <-wybralem do tego ten html który odpowiada za wybieranie pliku do przerzucania...niestety ale wtedy sie error nie pokazal...czemu questionmark.gif

aha i jeszcze jedno
jak jest ($file_type=='text/html') to moze byc ($file_type=='text/php')
czy tez nie [chcialem to zrobic ale nie dzialalo w sensie nie wyskakiwal błąd]
aleksander
[php:1:b96aa68467]<?php
// NAZWA PLIKU - "upload.php"
// FUNKCJE:
// - UPLOADOWANIE PLIKU (by Cudi)
// - FILTR DLA WYBRANYCH TYPOW PLIKOW
(http://www.dhtml.helion.pl/cgi-bin/listscript.fcgi?id=124)
// - UPLOADOWANIE DO WYBRANEGO KATALOGU (LISTA TWORZONA DYNAMICZNIE PRZEZ
REKURENCYJNĄ FUNKCJĘ CZYTANIA KATALOGU ( PHPSolutions nr 02/2004)
// WSZELKIE SUGESTIE PROSZE ZGLASZAC NA GG:3820945
echo '<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
extArray = new Array(".inc", ".jpg", ".gif"); // TABLICA Z ROZSZERZENIAMI PLIKOW
KTORE MAJA BYC AKCEPTOWANE DO WYSLANIA
function LimitAttach(form, file)
{
allowSubmit = false;
if (!file) return;
while (file.indexOf("") != -1)
file = file.slice(file.indexOf("") + 1);
ext = file.slice(file.indexOf(".")).toLowerCase();
for (var i = 0; i < extArray.length; i++) {
if (extArray[i] == ext) { allowSubmit = true; break; }
}
if (allowSubmit) form.submit();
else
alert("Proszę wysyłać tylko pliki graficzne typu: "
+ (extArray.join(" ")) + "nProsze wybrać nowy plik "
+ "i wysłać ponownie.");
}
// End -->
</script>';
if (!isset($_FILES['userfile']['tmp_name']))
{
echo "Tym skryptem możesz wysyłać pliki na serwer. Można wysyłać tylko pliki
<script> document.write(extArray.join(' ')); </script>";
echo '<form enctype="multipart/form-data" action="upload.php" method="POST"
name="form" >
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Plik do wysłania:<br>
<select size="1" name="dir">';
// FUNKCJA CZYTAJĄCA KATALOGI DO POLA SELECT
$z = 1;
function list_dir($chdir)
{
global $z;
chdir($chdir);
$handle = opendir('.');
if ($z==1) // JAKO PIERWSZA POZYCJA POJAWI SIE KATALOG GLOWNY (./)
{
$somepath2 = str_replace ("../", "/", $chdir);
echo "<option
value='c:/usr/apache/httpd/html".$somepath2."'>.".$somepath2
."</option><br>n";
//echo "./" . $chdir . "<br>";
$z = 0;
}
while ($file = readdir($handle))
{
if(is_dir($file) && $file != "." && $file != "..") // TU
MOZNA WSTAWIC FILTRY, JAKIE KATALOGI NIE MOGA SIE POJAIWC
(SKLADNIA: && $file != "NAZWA_KATALOGU")
{
$sdirs[] = $file;
}
}
for($i=0; $i<sizeof($sdirs); $i++)
{
$basedir = realpath($sdirs[$i]);
$b1 = str_replace ("" , "/", $basedir);
$b2 = str_replace ("c:/usr/apache/httpd/html", ".", $b1);
echo "<option value='".$b1."'>".$b2."</option><br>n";
list_dir($sdirs[$i]);
chdir("..");
}
}
list_dir("."); // WYWOLANIE FUNKCJI Z PARAMETREM FOLDERU OD KTOREGO MA
ZACZAC SKANOWANIE
// KONIEC FUNKCJI CZYTAJĄCEJA KATALOG

echo '</select>&nbsp;
<input name="userfile" type="file" />
<input type=button value="Wyślij" onclick="LimitAttach(this.form,
this.form.userfile.value)" />
</form>';
}
elseif (isset($_FILES['userfile']['tmp_name'])) // UPLOADOWANIE PLIKU
{
if( is_uploaded_file( $_FILES['userfile']['tmp_name'] ) )
{
$strUploadDir = $_POST['dir'] . "/" . $_FILES['userfile']['name'];
// TWORZENIE SCIEZKI BEZWZGLEDNEJ NA PODSTAWIE OPCJI WYBRANEJ W POLU
SELECT
if( move_uploaded_file( $_FILES['userfile']['tmp_name'],
$strUploadDir ) )
{
echo 'Plik został pomyślnie uploadowany! <br />';
}
else
{
echo 'Upload pliku nie powiódł się!';
}
echo 'Dodatkowe informacje o uploadowanym pliku: <pre>' .
print_r($_FILES, true ) . '</pre>';
echo $strUploadDir; // SCIEZKA BEZWZGLENA UPLOADOWANEGO PLIKU
}
else
{
echo 'Wystąpił błąd podczas wysyłania pliku na serwer!<br>';
}
}
?>[/php:1:b96aa68467]

mi działa bez zarzutu. dodatkowo masz wybór katalogu, w którym ma się znaleźć plik...
backlash
ale sęk w tym ze chce to zrobic w ty moim uploaderze a nie w innym :/
Chce dokonczyc to co zaczolem :/
Paul
Problem chyba jest juz zalatwiony ale jeszcze napisze - posrednim rozwiazaniem bedzie np. :
[xml:1:48a202681b]<input type="file" accept="image/gif,jpg,jpeg,png">[/xml:1:48a202681b]

:arrow: http://www.kailastudio.com.pl/design/htm/h...tml/e/input.htm

:arrow: http://www.kailastudio.com.pl/design/htm/h...html/t/mime.htm
Brick
A nie będzie najprościej zrobić sprawdzenie rozszerzenia nazwy pliku przez substr?

if ($file and substr($file_name, -3) == "htm") print "Złe rozszerzenie";
Oczywiście samo wypisywanie błędów można zrobić tak żeby wyświetlało dalej formularz z błędami np. u gory na czerowno.
aleksander
Cytat
ale sęk w tym ze chce to zrobic w ty moim uploaderze a nie w innym :/
Chce dokonczyc to co zaczolem :/


czy to taki wielki problem przeanalizować mój kod i dopisać brakujący skrypt do Twojego :wink:

Kod
<SCRIPT LANGUAGE="JavaScript">

<!-- Begin

extArray = new Array(".inc", ".jpg", ".gif"); // TABLICA Z ROZSZERZENIAMI PLIKOW

KTORE MAJA BYC AKCEPTOWANE DO WYSLANIA

function LimitAttach(form, file)

{

        allowSubmit = false;

        if (!file) return;

        while (file.indexOf("") != -1)

        file = file.slice(file.indexOf("") + 1);

        ext = file.slice(file.indexOf(".")).toLowerCase();

        for (var i = 0; i < extArray.length; i++) {

        if (extArray[i] == ext) { allowSubmit = true; break; }

        }

        if (allowSubmit) form.submit();

        else

        alert("Proszę wysyłać tylko pliki graficzne typu:  "

        + (extArray.join("  ")) + "nProsze wybrać nowy plik "

        + "i wysłać ponownie.");

}

//  End -->

</script>

<form name="upload" method="POST"

enctype="multipart/form-data" action="uploader.php">

<p>Upload System:<br>

<input type="file" name="file" size="40" >

<br>

<input type="button" value="Wyślij" onclick="LimitAttach(this.upload,

         this.upload.file.value)" /> </p>

</form>


powinno chodzić ale sobie nie dam uciąć... poparaw ewentualnie atrybuty funkcji LimitAttach w przedostatniej lini (<input type...)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.