Stránka 1 z 2

php script

Napsal: 31 pro 2012, 17:42
od prostejov
tady je script kterej by mel uploadovat obrazky a nazev obrazku vymenit za vlastne vygenerovany nazev a nejak mi to nejde :

Kód: Vybrat vše

<style type="text/css">
chyba {
   line-height: 2.0em;
   margin-bottom: 20px;
   font-weight: bold;
   color: red;
   font-size: 25px;
}
podchyba {
   line-height: 2.0em;
   margin-bottom: 20px;
   font-weight: bold;
   color: red;
   font-size: 14px;
}

cod {
   line-height: 2.0em;
   margin-bottom: 20px;
   font-weight: bold;
   color: white;
   font-size: 14px;
}

uspech {
   line-height: 2.0em;
   margin-bottom: 20px;
   font-weight: bold;
   color: green;
   font-size: 14px;
}

nad {
   line-height: 2.0em;
   margin-bottom: 20px;
   font-weight: bold;
   color: yellow;
   font-size: 14px;
}
</style>
<form action="#" method="post" enctype="multipart/form-data">
<td width="100" align="right">
<nad>Název:</nad> </td>
<td width="200" align="left">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
<input type="text" name="jmeno"></td></tr><br>
<tr><td width="100" align="right">
<nad>Soubor:</nad> </td>
<td width="200" align="left"><input name="obrazek" type="file"></td></tr>
<tr><td colspan="2" width="300">
<input type="submit" value="Nahrát obrázek"></form></td></tr></table></td></tr></table>
<nad>POZOR! - do názvu zadejte kombinaci písmen a číslic např."eiponj876hjl" jinak může soubor někdo odcizit nebo se může stát, že soubor bude smazán!</nad>
<nad>Nahrávat můžete soubory pouze typu .jpg .jpeg .png .bmp !</nad>
<?php if (is_uploaded_file($_FILES['obrazek']['tmp_name']))  {
if($_FILES['obrazek']['type']=="image/jpeg" or $_FILES['obrazek']['type']=="image/pjpeg" or $_FILES['obrazek']['type']=="image/png" or $_FILES['obrazek']['type']=="image/bmp"){ 






$jmeno=$_POST['jmeno'];

$special = array('/','!','&','*',' ','-');

$new_file_name = str_replace(' ',' ',str_replace($special,'',$_FILES));
echo '['.$new_file_name.']';

$path= "/soubory/".$new_file_name;

if($ufile !=none)
{
if(copy($_FILES['ufile']['tmp_name'], $path))
{
echo "Successful<BR/>";
echo "File Name :".$new_file_name."<BR/>";
echo "File Size :".$_POST['jmeno']['size']."<BR/>";
echo "File Type :".$_POST['jmeno']['type']."<BR/>";
}
else
{
echo "Error";
}
}
?>





 




Re: php script

Napsal: 31 pro 2012, 17:58
od Nyqi
Nějakou chybu ti to vypisuje?

Re: php script

Napsal: 31 pro 2012, 18:05
od prostejov
Parse error: syntax error, unexpected $end in /home/users/prostejovpk1/mcteam.eu/web/upload.php on line 95

Re: php script

Napsal: 31 pro 2012, 18:28
od Mysteria
No na řádku 95 máš syntaktickou chybu. A počítat, kterej řádek je 95. rozhodně nebudu :)

Re: php script

Napsal: 31 pro 2012, 18:36
od prostejov
to je divný ... 95 řádků to ani nemá :(

Re: php script

Napsal: 31 pro 2012, 19:56
od prostejov
pomůže mi někdo najít tu chybu pls ? :D

Re: php script

Napsal: 31 pro 2012, 21:02
od Mysteria
Celý to máš divný. Kdyby jsi si tu PHPkovou část zarovnal, tak by jsi zjistil (alespoň v tom co si poslal do fóra) chybí ukončovací závorka prvního IFu.

Kód: Vybrat vše

if (is_uploaded_file($_FILES['obrazek']['tmp_name']))  
{
    if(
$_FILES['obrazek']['type']=="image/jpeg" or $_FILES['obrazek']['type']=="image/pjpeg" or $_FILES['obrazek']['type']=="image/png" or $_FILES['obrazek']['type']=="image/bmp")
    { 
        
$jmeno=$_POST['jmeno'];
        
$special = array('/','!','&','*',' ','-');
        
$new_file_name str_replace(' ',' ',str_replace($special,'',$_FILES));
        echo 
'['.$new_file_name.']';
        
$path"/soubory/".$new_file_name;
        if(
$ufile !=none)
        {
            if(
copy($_FILES['ufile']['tmp_name'], $path))
            {
                echo 
"Successful<BR/>";
                echo 
"File Name :".$new_file_name."<BR/>";
                echo 
"File Size :".$_POST['jmeno']['size']."<BR/>";
                echo 
"File Type :".$_POST['jmeno']['type']."<BR/>";
            }
            else
            {
                echo 
"Error";
            }
        }
    }

Navíc celej ten skript je divnej.
Ta první podmínka na kontrolu typu souborů je hnusná, jde to udělat mnohem elegantněji.
Tenhle řádek děláš co? $new_file_name = str_replace(' ',' ',str_replace($special,'',$_FILES)); Pochopil bych str_replace($special,'',$_FILES), který vyháže z názvu nechtěný znaky, ale proč je tam ještě ten začátek?
Funkce copy není vhodná pro tohle, protože ti v tempu budou pořád zůstávat ty původní soubory, respektive každej soubor tam budeš mít 2x, ty nechceš vytvořit kopii, ale přesunout jenom ten soubor.
Proč používáš nakonci $_POST['jmeno']['size'], když jsi si udělal $jmeno=$_POST['jmeno'];? Použij pak $jmeno['size'].
Naopak chválím použití funkce is_uploaded_file, to jsi udělal dobře.

Co vlastně chceš udělat? Image hosting? V tom případě ti tam chybí kontrola velikosti uploadovaného souboru + když ti tam dva lidi nahrajou stejně pojmenovaný soubor, tak se původní přepíše, tohle je tady potřeba řešit.

Jako jo bude to fungovat, ale nasadit to někam na server a zpřístupnit lidem bych se to v současném stavu bál.

Re: php script

Napsal: 31 pro 2012, 21:13
od prostejov
Ok děkuji, zkusím to dát nějak do kupy :D

Re: php script

Napsal: 31 pro 2012, 21:16
od prostejov
ps. ano chci udělat takový hosting kde si budou moct lidé nahrávat obrázky, ovšem problém je vtom, že pokud půjdou 2 soubory se stejným názvem tak se přepíše. a to nevím jak :(

Re: php script

Napsal: 31 pro 2012, 21:28
od Sejsel