Upload nefunguje v PHP5 – PHP – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Upload nefunguje v PHP5 – PHP – Fórum – Programujte.comUpload nefunguje v PHP5 – PHP – Fórum – Programujte.com

 

hozjacz0
Duch
7. 12. 2006   #1
-
0
-

Zdrav?m v?echny,
p?edem bych cht?l upozornit na to, ?e jsem tot?ln? LAMA ale sna??m se u?it. M?m ale probl?m, pou??v?m na sv?ch str?nk?ch upload soubor? a v?e chodilo bez probl?m? do doby, ne? mi admin freehostingu (http://www.hostuju.cz/) ozn?mil, ?e to chodit nem??e, proto?e p?e?el na PHP5. V tomto okam?iku jsem ztracen, proto?e nevím co je "jinak" (pop?. ?patn?). Prost? co m?m s n?sleduj?c?m d?lat, aby v?e chodilo jak p?edt?m. Probl?m se tedy t?k? tohoto (d?m to sem cel? v?. formul??e):



<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%"><font face="Arial" size="2"><b>
Zadejte jm?no souboru:</b></font></td>
</tr>
<tr>
<td width="100%" style="border-bottom: 3 double #808080">
<FORM ACTION="upload.php" METHOD="post" ENCTYPE="multipart/form-data">
<INPUT TYPE="file" NAME="soubor" SIZE="40">
<INPUT TYPE="submit" NAME="ok" VALUE="Upload">
</FORM>
</td>
</tr>
</table>
<?
if ($ok == "Upload" && $soubor_name!="") {
$size = $soubor_size / 10000;
if ($soubor_type == "text/plain" || $soubor_type="text/html") {
if (copy ($soubor, "soubory/$soubor_name")) {
echo "<font face="Tahoma" size="2"><b>Soubor $soubor_name o velikosti $size KB byl nahr?n na server</b></font><BR>";
}
else {
echo "<font face="Tahoma" size="2"><b>Soubor nemohl b?t nahr?n, z?ejm? do?lo k chyb?!</b></font><BR>";
}
}
else {
echo "<font face="Tahoma" size="2"><b>Zadali jste ?patn? typ souboru!</b></font><BR>";
}
}
?>


Asi to je n?jak? hloupost a bude to jednoduch?, ale pros?m pora?te konkr?tn? (nap?. p?epi? "toto" na "toto").
D?ky (jsem fakt lama)

Nahlásit jako SPAM
IP: ...–
JSEM TOTÁLNÍ LAMA
7. 12. 2006   #2
-
0
-

Co ti to pise kdyz to pustis? Me prijde ze by mohl by problem s register_globals - data odeslana formularem se ti jen tak nenactou do promennych, ale misto toho jsou v poli $_POST["nazev_policka"] a soubory jsou v 2d poli $_FILES["nazev_policka"]. Treba docasny nazev souboru nazev souboru je $_FILES["nazev_policka"]["tmp_name"]

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
hozjacz0
Duch
7. 12. 2006   #3
-
0
-

No pr?v?, ?e se nestane vůbec nic - jen jakoby refresh str?nky a NIC (a nen? to jedin? funkce, kter? takhle z?hadn? p?estala chodit). A p?esn? v tomto tvaru to na webzdarma.cz fungovalo a na hostuju.cz n?jakou dobu taky, ale od t? doby, co hostuju.cz pr? p?e?lo na PHP5 u? to nechod?.
Toto je citace z mailov? odpov?di admina na hostuju.cz:

No to je jasne ze to nefunguje. Hostuju.cz je na PHP5 takze je treba zacit podle php5 programovat.

Tak nev?m... jsem z toho zmaten. Jo a je?t? m? odk?zal na str?nky php.net, ale tam jsem bohu?el nena?el nic, co by mi pomohlo (nevim toti?, co m?m po??dn? hledat).

Nahlásit jako SPAM
IP: ...–
JSEM TOTÁLNÍ LAMA
7. 12. 2006   #4
-
0
-

Zkus tam pustit nejaky jednoduchy skript, neco jako

<? echo "hello world" ?>

jestli bude fungovat

Nahlásit jako SPAM
IP: ...–
Prosím, jestli potřebujete s něčím poradit,zeptejte se na fóru. Jakýkoliv bezdůvodný pokus mě kontaktovat skončí okamžitým přidáním do ignore listu![br][br] Současný počet osob, které to nepochopily: 7
Jakub0
Super člen
8. 12. 2006   #5
-
0
-

Tady je řešení s register_globals off:



<?php
error_reporting(E_ALL);

$povolene_typy_souboru = array('text/plain', 'text/html');

$slozka_kam_se_nacita = 'soubory';
if(!is_dir($slozka_kam_se_nacita)) {
mkdir($slozka_kam_se_nacita, 0777);
}

if(isset($_FILES['soubor'])) {
if(in_array($_FILES['soubor']['type'], $povolene_typy_souboru)) {
if(isset($_POST['prepsat']) && move_uploaded_file($_FILES['soubor']['tmp_name'], $slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
if(file_exists($slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
$hlaska = 'Soubor '.$_FILES['soubor']['name'].' o velikosti '.($_FILES['soubor']['size']/1024).' KB byl prepsan na serveru.';
}
else {
$hlaska = 'Soubor '.$_FILES['soubor']['name'].' o velikosti '.($_FILES['soubor']['size']/1024).' KB byl nahran na server.';
}
}
elseif(!file_exists($slozka_kam_se_nacita.'/'.$_FILES['soubor']['name']) && move_uploaded_file($_FILES['soubor']['tmp_name'], $slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
$hlaska = 'Soubor '.$_FILES['soubor']['name'].' o velikosti '.($_FILES['soubor']['size']/1024).' KB byl nahran na server.';
}
else {
if(!isset($_POST['prepsat']) && file_exists($slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
$hlaska = 'Nepodarilo se nahrat soubor, protoze uz se stejnym jmenem uz existuje. Pokud si prejete ho prepsat zakrtnete prislusne policko.';
}
else {
$hlaska = 'Nepodarilo se nahrat soubor, diky chybe na serveru';
}
}
}
else {
$hlaska = 'Zadali jste typ souboru, ktery neni povolen!';
}
}
?>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%">
<font face="Arial" size="2">
<b>Zadejte jméno souboru:</b>
</font>
</td>
</tr>
<tr>
<td width="100%" style="border-bottom: 3 double #808080">
<form ACTION="<?php echo $_SERVER['REQUEST_URI'] ?>" METHOD="post" ENCTYPE="multipart/form-data">
<input TYPE="file" NAME="soubor" SIZE="40">
Prepsat kdyz existuje: <input type="checkbox" name="prepsat" value="ano">
<input TYPE="submit" NAME="ok" VALUE="Upload">
</form>
</td>
</tr>
</table>
<small>Pozmaka: Maximalni velikost souboru muze byt: <?php echo preg_replace(array('/(K|M|G)/i', "/^d+$/"), array('1b', 'bytes'), ini_get('upload_max_filesize')); ?>,
<br>povolene typy souboru: <?php foreach($povolene_typy_souboru as $p) echo $p.', '; ?></small>
<?php if(isset($hlaska)) { ?>
<br><font face="Tahoma" size="2"><b><?php echo $hlaska; ?></b></font><br>
<?php } ?>

Jinak co se mi nelíbí na původním skriptu: Střídte v html velká a malá písmena, doporučil bych používat v rytmu standardizace spíše všude malá. Použil jste nebezpečnou funkci copy(), kterou by měla nahradit bezpečnější move_uploaded_file() nebo si napsat vlastní copy funkci.

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
hozjacz0
Duch
8. 12. 2006   #6
-
0
-

To D1ce:
WOW, tak tohle funguje. Super. D?ky moc. Jsi klasa!!! Jen m?m je?t? jednu takovou drobnost k tomu, jsou tam povolen? jen prost? texty, j? bych potřeboval aby tam uploadovat jak?koli soubory (*.rar, *.exe, *.cmd, *.bat atd...) - co m?m zm?nit. D?ky moc
- - - - - - -
EDIT: tak jsem to ji? vy?e?il, ale asi ne p??li? "?ist?" (jak se zn?m), tak?e kdy? by mi n?kdo napsal, jak to m? b?t spr?vn?, budu happy. D?ky

Nahlásit jako SPAM
IP: ...–
JSEM TOTÁLNÍ LAMA
Jakub0
Super člen
9. 12. 2006   #7
-
0
-

Tak tady je verze, která se řídí dle přípon souborů:



<?php
error_reporting(E_ALL);

$povolene_pripony_souboru = "/.(txt|htm|html|rar|exe|cmd|bat|a tak dale)$/i";

$slozka_kam_se_nacita = 'soubory';
if(!is_dir($slozka_kam_se_nacita)) {
mkdir($slozka_kam_se_nacita, 0777);
}

if(isset($_FILES['soubor'])) {
if(preg_match($povolene_pripony_souboru, $_FILES['soubor']['name'])) {
if(isset($_POST['prepsat']) && move_uploaded_file($_FILES['soubor']['tmp_name'], $slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
if(file_exists($slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
$hlaska = 'Soubor '.$_FILES['soubor']['name'].' o velikosti '.($_FILES['soubor']['size']/1024).' KB byl prepsan na serveru.';
}
else {
$hlaska = 'Soubor '.$_FILES['soubor']['name'].' o velikosti '.($_FILES['soubor']['size']/1024).' KB byl nahran na server.';
}
}
elseif(!file_exists($slozka_kam_se_nacita.'/'.$_FILES['soubor']['name']) && move_uploaded_file($_FILES['soubor']['tmp_name'], $slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
$hlaska = 'Soubor '.$_FILES['soubor']['name'].' o velikosti '.($_FILES['soubor']['size']/1024).' KB byl nahran na server.';
}
else {
if(!isset($_POST['prepsat']) && file_exists($slozka_kam_se_nacita.'/'.$_FILES['soubor']['name'])) {
$hlaska = 'Nepodarilo se nahrat soubor, protoze uz se stejnym jmenem uz existuje. Pokud si prejete ho prepsat zakrtnete prislusne policko.';
}
else {
$hlaska = 'Nepodarilo se nahrat soubor, diky chybe na serveru';
}
}
}
else {
$hlaska = 'Zadali jste typ souboru, ktery neni povolen!';
}
}
?>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<tr>
<td width="100%">
<font face="Arial" size="2">
<b>Zadejte jméno souboru:</b>
</font>
</td>
</tr>
<tr>
<td width="100%" style="border-bottom: 3 double #808080">
<form ACTION="<?php echo $_SERVER['REQUEST_URI'] ?>" METHOD="post" ENCTYPE="multipart/form-data">
<input TYPE="file" NAME="soubor" SIZE="40">
Prepsat kdyz existuje: <input type="checkbox" name="prepsat" value="ano">
<input TYPE="submit" NAME="ok" VALUE="Upload">
</form>
</td>
</tr>
</table>
<small>Poznamka: Maximalni velikost souboru muze byt: <?php echo preg_replace(array('/(K|M|G)/i', "/^d+$/"), array('1b', '?bytes'), ini_get('upload_max_filesize')); ?>,
<br>povolene pripony souboru: <?php echo '.'.str_replace('|', ', .', substr($povolene_pripony_souboru, 4, -4)); ?></small>
<?php if(isset($hlaska)) { ?>
<br><font face="Tahoma" size="2"><b><?php echo $hlaska; ?></b></font><br>
<?php } ?>

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
hozjacz
~ Anonymní uživatel
5 příspěvků
9. 12. 2006   #8
-
0
-

To D1ce:
Super. Pokoušel jsem se podobně (ale pochopitelně špatně). Díky moc. Mám ještě jednu otázku: jak je to s tím limitem velikosti uploadovaného souboru? Dle čeho se řídí? Je to limitováno poskytovatelem, nebo to lze libovolně nastavit?

Nahlásit jako SPAM
IP: ...–
Jakub0
Super člen
9. 12. 2006   #9
-
0
-

Limit se řídí le nastavení v php.ini. Pokud k němu nemáte přístup ani přes ini_set('upload_max_filesize', '10M'), což jistojistě kvůli safe_mode nepůjde, nemůžete přenést víc jak je defaultně nastaveno. Jinak by možná víc šlo nahrát přes ftp funkce - http://cz.php.net/manual/en/ref.ftp.php, ale s tím zatím nemám tolik zkušenost

Nahlásit jako SPAM
IP: ...–
Věřím, že můžete v životě získat všechno, co budete chtít, když budete pomáhat druhým lidem, aby dostali to, co si přejí oni. - Zig Ziglar TOPlist
hozjacz0
Duch
9. 12. 2006   #10
-
0
-

Jako uživatel freehostingových služeb určitě k php.ini souboru přístup nemám. Tudíž limit je daný poskytovatelem (myslim jsem si to :-( ).
Jinak díky moc za pomoc.
Trošku OT, ale musím:
Obdivuju, s jakou rychlostí a hlavně vstřícností jsou schopni uživateli tohoto 4a odpovědět. Toto 4um a jeho uživatelé (rozhodně D1ce) by mohli jít příkladem jiným - hojně navštěvovaným - 4m na českém netu. Smekám!!!

Nahlásit jako SPAM
IP: ...–
JSEM TOTÁLNÍ LAMA
4
~ Anonymní uživatel
1 příspěvek
18. 3. 2007   #11
-
0
-

CommanderZ píše:#
# Zkus tam pustit nejaky jednoduchy skript, neco jako#
#

<? echo "hello world" ?>
#
#jestli bude fungovat

[email][/email][podtrzene][/podtrzene]

Nahlásit jako SPAM
IP: ...–
Violet0
Duch
15. 6. 2015   #12
-
0
-

Ahoj lide! Potrebovala bych poradit s weby .. Jsou v php a hosting konci podporu php4.. a ja nevim co mam udelat aby to bezelo v php5.. Jsou tam i databaze a formulare.. Nasel se by nekdo kdo by mi s tim pomoh? 

Nahlásit jako SPAM
IP: 80.92.242.–
peter
~ Anonymní uživatel
4016 příspěvků
16. 6. 2015   #13
-
0
-

Pro vlastni dotaz si zaloz vlastni tema.
Bude tam treba v kodu udelat spoustu zmen. Nebo pomenit nastaveni pres php.ini, .htaccess. Co za to?
Nevim, zda jsi neco o problematice studovala, ale je tam spoustu takovych malickosti...
- mozna bude treba i databazi preklopit na spravne kodovani
- nastavit spravne pripojeni k db pres SET NAMES
- vyresit globalni promenne
- zakazat asi chybove hlasky nebo opravit prejmenovat spoustu starych funkci na nove
- jestli je to nejaky redakcni system, treba existuje postup pro upgrade nebo ma upgradovaci soubor ta novejsi verze a nejak si s tim poradi sama...
Takze by se hodila adresa stranky, aby clovek treba mohl zkouknout, do ceho jde.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:80a8:8d...–
Violet
~ Anonymní uživatel
4 příspěvky
17. 6. 2015   #14
-
0
-

#13 peter
nejsem tak zkusena v phpecku..peru se tam s cestinou a ted tahle zmena na php5..pro priklad stranky kaznet cz, a to jen jeden ze 4 servru ..

Nahlásit jako SPAM
IP: 80.92.242.–
peter
~ Anonymní uživatel
4016 příspěvků
17. 6. 2015   #15
-
0
-

Violet - Php 5 je mnohem bezpecnejsi. Lze tedy rici, ze celou tu dobu, od roku 2004, do ted, jsou ty servery neduveryhodne, nezabezpecene. Kdyby tomu uzivatele rozumneli, jiste by chteli odskodneni.
Navic, uz ted lze rici, ze je php 5 zastarale, protoze se blizi datum vydani php 7 :)

https://cs.wikipedia.org/wiki/PHP#Nev.C3.BDhody_PHP
- Dne 22. května 2000 byla vydána verze PHP 4
- Dne 13. června 2004 byla představena verze PHP 5
- Vývoj  6 narazil někdy během roku 2010 na problémy... nedosáhlo bodu, ve kterém by bylo schváleno k vydání.
- PHP 7.0,  Datum vydání: polovina října 2015 (cili, verze 6 se uplne vynecha, ale kdo vi)

S kodovanim jsem se take pral. Jsou tam tri zpusoby. Bud to naimportujes do db spravne nebo spatne nebo uplne spatne (kdy pouzijes pri importu uplne jine, treti, SET NAMES nez mas jazyk puvodni db a jazyk nove db). Spravne a spatne se da jeste rozchodit spravne zadanym jazykem pro SET NAMES (utf8, latin1 a pod).  Tento pripad se da snadno zjistit, kdyz tam zadne SET NAMES nemas a podari se ti v prohlizeci poprepinat takove kodovani, pri kterem se to zobrazi spravne. Uplne spatne je treba ale naimportovat znova.

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:dc3e:49...–
Violet
~ Anonymní uživatel
4 příspěvky
17. 6. 2015   #16
-
0
-

#15 peter
Petre, vystrasil mne.. Ok..Asi bych mela  se podivat do tabulek v msqel jak jsou nastaveni..a nevim nevim php5..6..7..  A nechtel bys pomoc s dalsimi 3? 

Nahlásit jako SPAM
IP: 89.24.132.–
peter
~ Anonymní uživatel
4016 příspěvků
18. 6. 2015   #17
-
0
-

Vis, ani ne. Ignorujes zvyraznene dotazy.
Pokud se to zobrazuje spravne a nikdo problem s diakritikou nezminoval z uzivatelu, tak asi neni treba nic resit :)

Nahlásit jako SPAM
IP: 2001:718:2601:1f7:658e:8b...–
Violet
~ Anonymní uživatel
4 příspěvky
18. 6. 2015   #18
-
0
-

Neignoruji.  Napis nebo zavolej. Snad reseni se najde.

Nahlásit jako SPAM
IP: 80.92.242.–
Tomáš
~ Anonymní uživatel
560 příspěvků
18. 7. 2018   #19
-
0
-

Ahoj, nevíte někdo jak změnit název souboru (vlastně jen koncovku)  ještě před nahráním na server. Tedy pokud je to vůbec technicky možné. Jedná se mi o to, že jsem použil výše uvedený script k nahrávání souboru INI. Bohužel soubory INI jsou zablokovány ze strany poskytovatele hostingu. Napadlo mě přejmenovat soubor ještě před nahráním na TXT a až potom nahrát. 

Díky moc za radu.

Nahlásit jako SPAM
IP: 195.191.204.–
peter
~ Anonymní uživatel
4016 příspěvků
19. 7. 2018   #20
-
0
-

Pokud mas dotaz, zaloz si vlakno. Pridej tam link na toto vlakno, treba.

Myslim, ze tohle docilit normalne nejde.

Resil bych to zachytavanim inputu pres js. Prekodovanim na base64 v js a poslanim do php jako data. Pripadne to poslat httprequestem (ajaxem). Ale nevim, zda ti tohle umozni web-prohlizec, protoze je to tak jaksi hackovani.
Tam by pak slo vytvorit si i vlastni upload request, kde si to prejmenujes. Ale fakt si nejsem moc jisty, zda to vubec pujde a jak.

A zkousel jsi ten soubor ZIPnout pred poslanim? Ikdyz, nektere scripty stouraji i do zipu...

FF umoznuje takovou vec, ze pomoci 'drag' (uchopeni) souboru z plochy, presunuti do okna do urcite oblasti a 'drop' (pusteni) ti ho uploaduje. Tam to prave pouziva base64.
Nebo, do content=editable divu to jde podobne s obrazky.

https://html5demos.com/dnd-upload/

Nahlásit jako SPAM
IP: 90.176.141.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 32 hostů

Podobná vlákna

Upload fungující pod PHP5 — založil mike007

Php5.4, php5.3 — založil nord

Php5 img — založil lolik

Apache - php5 — založil Zelenáč

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý