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"> <? $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 |
#3 · Zasláno: 10. 4. 2016, 15:52:50
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 |
#4 · Zasláno: 10. 4. 2016, 16:59:22
Elleran:
jak vypadá tvůj kod v současné době? |
||
Elleran Profil |
#5 · Zasláno: 10. 4. 2016, 17:47:27
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 |
#6 · Zasláno: 10. 4. 2016, 19:04:32
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 * |
#7 · Zasláno: 10. 4. 2016, 21:28:48
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().
|
||
Časová prodleva: 9 let
|
0