Autor Zpráva
Elleran
Profil
Zdravim pracuju na registračnim formuláři firem kde je zároveň možnost uploadu 3 dokumentů popřípadě fotek ( tato možnost je ovšem nepovinná ). Když ze scriptu vyndam část na upload tak mi funguje bezchybně ale s uploadem mi to vrací zpátky jako by byl odeslán prázdnej formulář.
<?php
session_start();
if(isset($_POST['sent'])){
  
      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;
              }
          $soubor_name1 = odstran_diakritiku ($_FILES["soubor1"]["name"]);
          $soubor1 = ($_FILES["soubor1"]["tmp_name"]);
          $soubor_typ1 = ($_FILES["soubor1"]["type"]);
          $soubor_velikost1 = ($_FILES["soubor1"]["size"]);
          $soubor_name2 = odstran_diakritiku ($_FILES["soubor2"]["name"]);
          $soubor2 = ($_FILES["soubor2"]["tmp_name"]);
          $soubor_typ2 = ($_FILES["soubor2"]["type"]);
          $soubor_velikost2 = ($_FILES["soubor2"]["size"]);
          $soubor_name3 = odstran_diakritiku ($_FILES["soubor3"]["name"]);
          $soubor3 = ($_FILES["soubor3"]["tmp_name"]);
          $soubor_typ3 = ($_FILES["soubor3"]["type"]);
          $soubor_velikost3 = ($_FILES["soubor3"]["size"]);
          $max_velikost=($_POST['MAX_FILE_SIZE']);
          $podpora = array('image/png','image/jpeg','image/pjpeg','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/pdf','application/rtf','application/x-rtf','text/richtext');
          $ok = ($_POST["send"]);
          $web=trim($_POST['web']);
          $jmeno=($_POST['jmeno']);
          $ico=trim($_POST['ico']);
          $dico=trim($_POST['dico']);
          $adresa=trim($_POST['adresa']);
          $popis=($_POST['popis']);
          $tel=trim($_POST['tel']);
          $jmena=($_POST['jmena']);
          $youtube=trim($_POST['youtube']);
          $potvrzeni=($_POST['checkbox']);
          $zamereni2=($_POST['zamereni']);
          $zamereni1=trim($_POST['zamereni1']);
          $error=$_POST['error'];
          if($potvrzeni=="ok"){
            if($_FILES["soubor1"]["type"]=="" or $_FILES["soubor1"]["type"]=="image/jpeg" or $_FILES["soubor1"]["type"]=="image/png" or $_FILES["soubor1"]["type"]=="image/pjpeg" or $_FILES["soubor1"]["type"]=="text/richtext" or $_FILES["soubor1"]["type"]=="application/x-rtf" or $_FILES["soubor1"]["type"]=="application/rtf" or $_FILES["soubor1"]["type"]=="application/pdf" or $_FILES["soubor1"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" or $_FILES["soubor1"]["type"]=="application/msword"){
                if($_FILES["soubor2"]["type"]=="" or $_FILES["soubor2"]["type"]=="image/jpeg" or $_FILES["soubor2"]["type"]=="image/png" or $_FILES["soubor2"]["type"]=="image/pjpeg" or $_FILES["soubor2"]["type"]=="text/richtext" or $_FILES["soubor2"]["type"]=="application/x-rtf" or $_FILES["soubor2"]["type"]=="application/rtf" or $_FILES["soubor2"]["type"]=="application/pdf" or $_FILES["soubor2"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" or $_FILES["soubor2"]["type"]=="application/msword"){
                  if($_FILES["soubor3"]["type"]=="" or $_FILES["soubor3"]["type"]=="image/jpeg" or $_FILES["soubor3"]["type"]=="image/png" or $_FILES["soubor3"]["type"]=="image/pjpeg" or $_FILES["soubor3"]["type"]=="text/richtext" or $_FILES["soubor3"]["type"]=="application/x-rtf" or $_FILES["soubor3"]["type"]=="application/rtf" or $_FILES["soubor3"]["type"]=="application/pdf" or $_FILES["soubor3"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" or $_FILES["soubor3"]["type"]=="application/msword"){
                    if ($soubor_velikost1>=$max_velikost){
                      $bl="zverejnit.php";
                      header("location: $bl"); 
                      $_SESSION['error'] = $error;
                      exit;  
                        }elseif ($soubor_velikost2>=$max_velikost){
                          $bl="zverejnit.php";
                          header("location: $bl"); 
                          $_SESSION['error'] = $error;
                          exit;
                        }elseif ($soubor_velikost3>=$max_velikost){
                          $bl="zverejnit.php";
                          header("location: $bl"); 
                          $_SESSION['error'] = $error;
                          exit;
                        }else{
                          if (move_uploaded_file($soubor1, "./docasne/$soubor_name1")&& move_uploaded_file($soubor2, "./docasne/$soubor_name2")&& move_uploaded_file($soubor3, "./docasne/$soubor_name3")){
                            chmod ("./docasne/$soubor_name1", 0646);
                            chmod ("./docasne/$soubor_name2", 0646);
                            chmod ("./docasne/$soubor_name3", 0646);
                          $_SESSION['soubor_name1'] = $soubor_name1;
                          $_SESSION['soubor1'] = $soubor1;
                          $_SESSION['soubor_name2'] = $soubor_name2;
                          $_SESSION['soubor2'] = $soubor2;
                          $_SESSION['soubor_name3'] = $soubor_name3;
                          $_SESSION['soubor3'] = $soubor3;
                          $_SESSION['ok'] = $ok;
                          $_SESSION['web'] = $web;
                          $_SESSION['jmeno'] = $jmeno;
                          $_SESSION['ico'] = $ico;
                          $_SESSION['dico'] = $dico;
                          $_SESSION['adresa'] = $adresa;
                          $_SESSION['popis'] = $popis;
                          $_SESSION['tel'] = $tel;
                          $_SESSION['jmena'] = $jmena;
                          $_SESSION['youtube'] = $youtube;
                          $_SESSION['potvrzeni'] = $potvrzeni;
                          $_SESSION['zamereni2'] = $zamereni2;
                          $_SESSION['zamereni1'] = $zamereni1;
                          $bl="zverejnit2.php";
                          header("location: $bl"); 
                          exit;
                         }
                        }
                  }
                }
              }else{
                $bl="zverejnit.php";
                header("location: $bl"); 
                $_SESSION['error'] = $error;
                exit;
              }
            }
                $bl="zverejnit.php";
                header("location: $bl");
                $_SESSION['error'] = $error;
                exit;
          }else{
                $bl="zverejnit.php";
                header("location: $bl"); 
                $_SESSION['error'] = $error;
                exit;
          } 

?>



Elleran:
Ještě dodatek tohle je část co funguje jak má jen mi tam nejde přidat to nahrání souborů:

<?php
session_start();
if(isset($_POST['sent'])){
  
      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;
              }
          $soubor_name1 = odstran_diakritiku ($_FILES["soubor1"]["name"]);
          $soubor1 = ($_FILES["soubor1"]["tmp_name"]);
          $soubor_typ1 = ($_FILES["soubor1"]["type"]);
          $soubor_velikost1 = ($_FILES["soubor1"]["size"]);
          $soubor_name2 = odstran_diakritiku ($_FILES["soubor2"]["name"]);
          $soubor2 = ($_FILES["soubor2"]["tmp_name"]);
          $soubor_typ2 = ($_FILES["soubor2"]["type"]);
          $soubor_velikost2 = ($_FILES["soubor2"]["size"]);
          $soubor_name3 = odstran_diakritiku ($_FILES["soubor3"]["name"]);
          $soubor3 = ($_FILES["soubor3"]["tmp_name"]);
          $soubor_typ3 = ($_FILES["soubor3"]["type"]);
          $soubor_velikost3 = ($_FILES["soubor3"]["size"]);
          $max_velikost=($_POST['MAX_FILE_SIZE']);
          $podpora = array('image/png','image/jpeg','image/pjpeg','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/pdf','application/rtf','application/x-rtf','text/richtext');
          $ok = ($_POST["send"]);
          $web=trim($_POST['web']);
          $jmeno=($_POST['jmeno']);
          $ico=trim($_POST['ico']);
          $dico=trim($_POST['dico']);
          $adresa=trim($_POST['adresa']);
          $popis=($_POST['popis']);
          $tel=trim($_POST['tel']);
          $jmena=($_POST['jmena']);
          $youtube=trim($_POST['youtube']);
          $potvrzeni=($_POST['checkbox']);
          $zamereni2=($_POST['zamereni']);
          $zamereni1=trim($_POST['zamereni1']);
          $error=$_POST['error'];
          if($potvrzeni=="ok"){
            if($_FILES["soubor1"]["type"]=="" or $_FILES["soubor1"]["type"]=="image/jpeg" or $_FILES["soubor1"]["type"]=="image/png" or $_FILES["soubor1"]["type"]=="image/pjpeg" or $_FILES["soubor1"]["type"]=="text/richtext" or $_FILES["soubor1"]["type"]=="application/x-rtf" or $_FILES["soubor1"]["type"]=="application/rtf" or $_FILES["soubor1"]["type"]=="application/pdf" or $_FILES["soubor1"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" or $_FILES["soubor1"]["type"]=="application/msword"){
                if($_FILES["soubor2"]["type"]=="" or $_FILES["soubor2"]["type"]=="image/jpeg" or $_FILES["soubor2"]["type"]=="image/png" or $_FILES["soubor2"]["type"]=="image/pjpeg" or $_FILES["soubor2"]["type"]=="text/richtext" or $_FILES["soubor2"]["type"]=="application/x-rtf" or $_FILES["soubor2"]["type"]=="application/rtf" or $_FILES["soubor2"]["type"]=="application/pdf" or $_FILES["soubor2"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" or $_FILES["soubor2"]["type"]=="application/msword"){
                  if($_FILES["soubor3"]["type"]=="" or $_FILES["soubor3"]["type"]=="image/jpeg" or $_FILES["soubor3"]["type"]=="image/png" or $_FILES["soubor3"]["type"]=="image/pjpeg" or $_FILES["soubor3"]["type"]=="text/richtext" or $_FILES["soubor3"]["type"]=="application/x-rtf" or $_FILES["soubor3"]["type"]=="application/rtf" or $_FILES["soubor3"]["type"]=="application/pdf" or $_FILES["soubor3"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" or $_FILES["soubor3"]["type"]=="application/msword"){
                    if ($soubor_velikost1>=$max_velikost){
                      $bl="zverejnit.php";
                      header("location: $bl");
                      $_SESSION['error'] = $error; 
                      exit;  
                        }elseif ($soubor_velikost2>=$max_velikost){
                          $bl="zverejnit.php";
                          header("location: $bl");
                          $_SESSION['error'] = $error; 
                          exit;
                        }elseif ($soubor_velikost3>=$max_velikost){
                          $bl="zverejnit.php";
                          header("location: $bl");
                          $_SESSION['error'] = $error; 
                          exit;
                        }else{
                          $_SESSION['soubor_name1'] = $soubor_name1;
                          $_SESSION['soubor1'] = $soubor1;
                          $_SESSION['soubor_name2'] = $soubor_name2;
                          $_SESSION['soubor2'] = $soubor2;
                          $_SESSION['soubor_name3'] = $soubor_name3;
                          $_SESSION['soubor3'] = $soubor3;
                          $_SESSION['ok'] = $ok;
                          $_SESSION['web'] = $web;
                          $_SESSION['jmeno'] = $jmeno;
                          $_SESSION['ico'] = $ico;
                          $_SESSION['dico'] = $dico;
                          $_SESSION['adresa'] = $adresa;
                          $_SESSION['popis'] = $popis;
                          $_SESSION['tel'] = $tel;
                          $_SESSION['jmena'] = $jmena;
                          $_SESSION['youtube'] = $youtube;
                          $_SESSION['potvrzeni'] = $potvrzeni;
                          $_SESSION['zamereni2'] = $zamereni2;
                          $_SESSION['zamereni1'] = $zamereni1;
                          $bl="zverejnit2.php";
                          header("location: $bl"); 
                          exit;
                         }
                  }
                }
              }else{
                $bl="zverejnit.php";
                header("location: $bl");
                $_SESSION['error'] = $error; 
                exit;
                  
              }
            }
                $bl="zverejnit.php";
                header("location: $bl");
                $_SESSION['error'] = $error;
                exit;
          }else{
                $bl="zverejnit.php";
                header("location: $bl");
                $_SESSION['error'] = $error; 
                exit;
          } 

?>
Taps
Profil
Elleran:
Máš ve formuláři nastaveno enctype ?
<form action="zpracuj.php"  method="POST" enctype="multipart/form-data">
Dále bych se těmi tlačítky pro upload pracoval jako s polem. Co se týče těch if podmínek pro povolené přílohy, tak bych vydefinoval povolené přílohy, něco ve smyslu níže uvedeného.

<?
$allowed =  array('application/vnd.ms-excel','text/plain','text/csv','text/tsv');
$ext = $_FILES['soubor']['type'];
if(in_array($ext,$allowed) ){
echo 'povolené přípony, pracuje dále';
}else{
echo 'chybná přípona souboru';
}

?>
Elleran
Profil
Taps:
jj formulář mam nastavenej správně

ke zbytku ten tvůj kód mi to zjednodušil a našel sem u sebe i chybu proč to nechtělo nahrávát jen tu mam zase problém, že nejde formulář odeslat bez vyplnění všech souborů. dalo by se to sice udělat tim že bych udělal další podmínku místo vypsání chyby typu souboru ovšem to mi příjde trochu zdlouhaví....nedá se nějak nastavit, podobně jako sem to měl v puvodnim kódu, aby když je typ souboru prazdnej, ho to ignorovalo a pokračovalo bez něj? nejlíp to nějak dát do toho porovnání typu.
Taps
Profil
Elleran:
jak vypadá tvůj kod v současné době?
Elleran
Profil
Taps:
session_start();
if(isset($_POST['sent'])){
  
      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;
              }
          $soubor_name1 = odstran_diakritiku ($_FILES["soubor1"]["name"]);
          $soubor1 = ($_FILES["soubor1"]["tmp_name"]);
          $soubor_typ1 = ($_FILES["soubor1"]["type"]);
          $soubor_velikost1 = ($_FILES["soubor1"]["size"]);
          $soubor_name2 = odstran_diakritiku ($_FILES["soubor2"]["name"]);
          $soubor2 = ($_FILES["soubor2"]["tmp_name"]);
          $soubor_typ2 = ($_FILES["soubor2"]["type"]);
          $soubor_velikost2 = ($_FILES["soubor2"]["size"]);
          $soubor_name3 = odstran_diakritiku ($_FILES["soubor3"]["name"]);
          $soubor3 = ($_FILES["soubor3"]["tmp_name"]);
          $soubor_typ3 = ($_FILES["soubor3"]["type"]);
          $soubor_velikost3 = ($_FILES["soubor3"]["size"]);
          $max_velikost=($_POST['MAX_FILE_SIZE']);
          $podpora = array('image/png','image/jpeg','image/pjpeg','application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/pdf','application/rtf','application/x-rtf','text/richtext');
          $ok = ($_POST["send"]);
          $web=trim($_POST['web']);
          $jmeno=($_POST['jmeno']);
          $ico=trim($_POST['ico']);
          $dico=trim($_POST['dico']);
          $adresa=trim($_POST['adresa']);
          $popis=($_POST['popis']);
          $tel=trim($_POST['tel']);
          $jmena=($_POST['jmena']);
          $youtube=trim($_POST['youtube']);
          $potvrzeni=($_POST['checkbox']);
          $zamereni2=($_POST['zamereni']);
          $zamereni1=trim($_POST['zamereni1']);
          $error=$_POST['error'];
          if($potvrzeni=="ok"){
            if(in_array($soubor_typ1,$podpora) && in_array($soubor_typ2,$podpora) && in_array($soubor_typ3,$podpora)){
                    if ($soubor_velikost1>=$max_velikost){
                      $bl="zverejnit.php";
                      header("location: $bl");
                      $_SESSION['error'] = $error; 
                      exit;  
                        }elseif ($soubor_velikost2>=$max_velikost){
                          $bl="zverejnit.php";
                          header("location: $bl");
                          $_SESSION['error'] = $error; 
                          exit;
                        }elseif ($soubor_velikost3>=$max_velikost){
                          $bl="zverejnit.php";
                          header("location: $bl");
                          $_SESSION['error'] = $error; 
                          exit;
                        }else{
                          $_SESSION['soubor_name1'] = $soubor_name1;
                          $_SESSION['soubor1'] = $soubor1;
                          $_SESSION['soubor_name2'] = $soubor_name2;
                          $_SESSION['soubor2'] = $soubor2;
                          $_SESSION['soubor_name3'] = $soubor_name3;
                          $_SESSION['soubor3'] = $soubor3;
                          $_SESSION['ok'] = $ok;
                          $_SESSION['web'] = $web;
                          $_SESSION['jmeno'] = $jmeno;
                          $_SESSION['ico'] = $ico;
                          $_SESSION['dico'] = $dico;
                          $_SESSION['adresa'] = $adresa;
                          $_SESSION['popis'] = $popis;
                          $_SESSION['tel'] = $tel;
                          $_SESSION['jmena'] = $jmena;
                          $_SESSION['youtube'] = $youtube;
                          $_SESSION['potvrzeni'] = $potvrzeni;
                          $_SESSION['zamereni2'] = $zamereni2;
                          $_SESSION['zamereni1'] = $zamereni1;
                          if (move_uploaded_file($soubor1, "./docasne/$soubor_name1")){
                          chmod ("./docasne/$soubor_name1", 0644);
                          $souborcesta1 = "docasne/".$soubor_name1;
                          $_SESSION['soubor_name1'] = $soubor_name1;
                          }
                          if (move_uploaded_file($soubor2, "./docasne/$soubor_name2")){
                          chmod ("./docasne/$soubor_name2", 0644);
                          $souborcesta2 = "docasne/".$soubor_name2;
                          $_SESSION['soubor_name2'] = $soubor_name2;
                          }
                          if (move_uploaded_file($soubor3, "./docasne/$soubor_name3")){
                          chmod ("./docasne/$soubor_name3", 0644);
                          $souborcesta3 = "docasne/".$soubor_name3;
                          $_SESSION['soubor_name3'] = $soubor_name3;
                          }
                          $bl="zverejnit2.php";
                          header("location: $bl"); 
                          exit;
                         }
                 
              }else{
                $bl="zverejnit.php";
                header("location: $bl");
                $error2 ="něco je blbě se souborem";
                $_SESSION['error'] = $error2;
                exit;
                  
              }
            }
                $bl="zverejnit.php";
                header("location: $bl");
                $_SESSION['error'] = $error;
                exit;
          }else{
                $bl="zverejnit.php";
                header("location: $bl");
                $_SESSION['error'] = $error; 
                exit;
          } 

?>
Lonanek
Profil
Elleran:
aby když je typ souboru prazdnej, ho to ignorovalo a pokračovalo bez něj?
Neřekl bych, že odkazovat se pouze na typ je vhodné. Můžete k tomu využít hodnotu v $_FILES[soubor]['error'].
"Přeskočení" bych realizoval pouze pokud nebyl žádný soubor nahrán.

Drobný nedostatek také vidím v tom, že mohu nahrát 3 stejně pojmenované soubory, s jiným obsahem, a uloží se pouze ten poslední.
visionic
Profil *
Použij podmínku, že pokud je soubor vybrán a nahrán. Určitě by nebylo špatné udělat to formou třídy a vní si definovat co se v ní děje. Dále bych ošetřil ten stejný název. Bud mu pridas dalsi podminku, coz uz je podminka za podminkou a nebo budes prejmenovavat soubory pomocí time().

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: