Autor Zpráva
koudelacek
Profil *
Prosím Vás, našel jsem tento kód a funguje perfektně i s funkcemi, když ho ale předělám, abych mohl nahrávat i soubory doc, docx a pdf tak nefunguje.

Změny které jsem provedl
Přidal doc, docx, pdf, ubral gif z koncovek.
Soubor pro nahrávání přesunut z localhost/upload.php do localhost/admin/attachment.php.
Cílová složka pro nahrané soubory localhost/attachment/$promenna_slozka_cisla(1,2,..)/

Pomozte prosím s úpravou kódu i pro nahrávání daných souborů. Děkuju.

kód
//odstraneni diakritiky(upravena funkce od php.vrana.cz)
function odstran_diakritiku($in){
  $in = preg_replace('~[^\\pL0-9_]+~u', '-', $in);
  $in = trim($in, "-");
  $in = iconv("utf-8", "us-ascii//TRANSLIT", $in);
  $in = strtolower($in);
  $out = preg_replace('~[^-a-z0-9_]+~', '', $in);
  return $out;
}

$fotka = trim(@$_FILES["image"]["name"]);
$fotka = preg_replace('~\s~','',$fotka);
$soubor = date("Y-m-d_H-i-s")."-".$fotka;

//zpracovani po odeslani
if(@$_POST["ok"]){
  //overovani, zda jsou vyplnena vsechna povinna pole
  if($_FILES["image"]){
    //vytvoreni a ulozeni nahledu nahraneho obrazku
    //vytvoreni nahledu o maximalni veliskosti (sirka=120, vyska=80)
    list($width, $height) = image_shrink_size($_FILES["image"]["tmp_name"], 120, 80);
    if ($width && $height){
      //adresar kde se ulozi nahled obrazku, pojmenovany stejne jako original, jen na bude zacina thumb_... 
      $filename = "attachment/1/thumb_".$soubor;
      image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
    }
    //nahrani obrazku
    if($_FILES["image"]["size"] > 0){
      //povolene koncovky
      $koncovky = array('jpg', 'jpeg', 'png', 'gif');
      $chyba = "";
      if (!$_FILES || $_FILES["image"]["error"] == UPLOAD_ERR_INI_SIZE) {
        $chyba = "<p class=\"error\">Soubor je příliš velký, maximální velikost je " . ini_get('upload_max_filesize') . ".</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      }
      elseif ($_FILES["image"]["error"] == UPLOAD_ERR_NO_FILE) {
        $chyba = "<p class=\"error\">Nevybrali jste soubor, který chcete nahrát.</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      elseif ($_FILES["image"]["error"]) {
        $chyba = "<p class=\"error\">Soubor se nepodařilo nahrát!</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      elseif (!in_array(strtolower(pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION)), $koncovky)) {
        $chyba = "<p class=\"error\">Koncovka souboru musí být jedna z: " . implode(", ", $koncovky) . ".</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      elseif (!($imagesize = getimagesize($_FILES["image"]["tmp_name"])) || $imagesize[2] > 3) {
        $chyba = "<p class=\"error\">Typ obrázku musí být JPG, JPEG, PNG nebo GIF.</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      else {
        //vytvoreni velkeho obrazku o maximalnich rozmerech(sirka=900, vyska=692)
        list($width, $height) = image_shrink_size($_FILES["image"]["tmp_name"], 900, 692);
        if ($width && $height){
          //cesta kam se to ma ulozit(slozka musi mit nastaven chmod=0777)
          $filename = "attachment/1/".$soubor;
          image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
        }
        //move_uploaded_file($_FILES["image"]["tmp_name"], "../img/uploaded/foto/$soubor");
      }
    }
    
  }
  else{
    echo "<p class=\"error\"><strong>Nejsou vyplněna všechna povinná pole!</strong></p>";
    echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
  }
}
//zobrazeni formulare
else{
?>
<p align="left">Vyplneni vsech poli je povinne.</p><br><br>
<form name="vlozit"  action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data">
<table> 
 <tr>
  <td>Obrázek:</td>
  <td><input type="file" name="image" accept="image"></td>
  <td><i>klikni a vyber *.jpg, *,jpeg, *.png nebo *.gif soubor</i></td>
 </tr> 
 <tr>
  <td><input type="submit" name="ok" value="Uložit"></td>
 </tr>
</table>  
</form>
<?php
}
?>
shaggy
Profil
koudelacek:
A môžem sa opýtať, ako si ho upravil pre nahrávanie doc, docx a pdf súborov? Nikde v tom kóde nevidím spomínanú úpravu. Preto by bolo vhodnejšie napísať, čo to presne nerobí/vypíše (nefunguje nie je presný popis) a prípadne nám ukázať tvoj zmenený kód.
koudelacek
Profil *
$fotka = trim(@$_FILES["image"]["name"]);
$fotka = preg_replace('~\s~','',$fotka);
$soubor = date("Y-m-d_H-i-s")."-".$fotka;
 
//zpracovani po odeslani
if(@$_POST["ok"]){
  //overovani, zda jsou vyplnena vsechna povinna pole
    if($_FILES["image"]["size"] > 0){
      //povolene koncovky
      $koncovky = array('jpg', 'jpeg', 'png', 'doc', 'docx', 'pdf');                                                                                                 // UPRAVA
      $chyba = "";
      if (!$_FILES || $_FILES["image"]["error"] == UPLOAD_ERR_INI_SIZE) {
        $chyba = "<p class=\"error\">Soubor je příliš velký, maximální velikost je " . ini_get('upload_max_filesize') . ".</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      }
      elseif ($_FILES["image"]["error"] == UPLOAD_ERR_NO_FILE) {
        $chyba = "<p class=\"error\">Nevybrali jste soubor, který chcete nahrát.</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      elseif ($_FILES["image"]["error"]) {
        $chyba = "<p class=\"error\">Soubor se nepodařilo nahrát!</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      elseif (!in_array(strtolower(pathinfo($_FILES["image"]["name"], PATHINFO_EXTENSION)), $koncovky)) {
        $chyba = "<p class=\"error\">Koncovka souboru musí být jedna z: " . implode(", ", $koncovky) . ".</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      elseif (!($imagesize = getimagesize($_FILES["image"]["tmp_name"])) || $imagesize[2] > 3) {
        $chyba = "<p class=\"error\">Typ obrázku musí být JPG, JPEG, PNG nebo GIF.</p>\n";
        $chyba .= "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
      } 
      else {
        move_uploaded_file($_FILES["image"]["tmp_name"], "../img/uploaded/foto/$soubor");                           // UPRAVA
      }
    
  }
  else{
    echo "<p class=\"error\"><strong>Nejsou vyplněna všechna povinná pole!</strong></p>";
    echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
  }
}
//zobrazeni formulare
else{
?>
<p align="left">Vyplneni vsech poli je povinne.</p><br><br>
<form name="vlozit"  action="<?php echo $_SERVER["PHP_SELF"];?>" method="post" enctype="multipart/form-data">
<table> 
 <tr>
  <td>Obrázek:</td>
  <td><input type="file" name="image" accept="image"></td>
  <td><i>klikni a vyber *.jpg, *,jpeg, *.png nebo *.gif soubor</i></td>
 </tr> 
 <tr>
  <td><input type="submit" name="ok" value="Uložit"></td>
 </tr>
</table>  
</form>
<?php
}
?>
Again
Profil
1) Pokud ti něco nefunguje, uváděj přesnou chybu (ať už je logická, nebo syntaktická).
2) Napiš si celý script sám a nedělej ze sebe pouhého "slepovače".
3) Ty koncovky, co jsi přidal do pole vůbec nesouvisí s obrázky, jak si s nimi má script asi poradit, když na to není stavěný?

K celému dotazu bych dodal jediné, máš to rozbité, nejdříve to musíš slepit.
candiess
Profil
koudelacek:
accept="image">
Aneb podívej se, co vlastně používáš :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: