Autor Zpráva
matlala
Profil
Ahoj,
mám takový malý, ale velmi otravný problém.
Potřebuju hahrát fotku, ale ne zas všude, mám to udělané tak, že pole pro nahrátí souboru tam je, ale problém nastává až při kontrole
if (isset($_FILES['fupload']) and $_FILES['fupload']!="none")


Když se formulář odešle bez vybrání souboru tak to hlásí, že soubor tam je.
Další kus kodu pro pochopení:
...
$povolenéTypy=array("image/jpeg", "image/pjpeg");
if(!in_array($_FILES['fupload']['type'], $povolenéTypy)){$chyba .= "Obrázek může být pouze formátu JPG!<br>";}
...


Co je tedy špatně? Pomohlo by i něco v javasriptu co by to pole skrývalo-měnili to atribut type="file" na type="hidden" s kterým mi to nedělalo

Předem díky za všechny rady, i když asi tuším, že to je nejaká blbost.
matlala
Profil
kdyby nekdo potřeboval cely script tak je tady:
function NahrajFotkuPujcovna($id, $konecnyNazevSouboru, $cil_smaz, $cil_male, $cil_velke){
$rozmery = getimagesize ($cil_smaz);
$sirka = $rozmery[0];
$vyska = $rozmery[1];
if($sirka>$vyska){$delka=1024;}
elseif($sirka<$vyska){$delka=768;}
ZmenciFotku($cil_smaz, $cil_velke, $delka, 0);
//copyright
$f = imagecreatefromjpeg($cil_velke);
$size = GetImageSize($cil_velke);
$text_size = 20;
$bottom=10;
$top = $size[1]-10;
$barva = imagecolorallocate($f, 255, 255, 255);
$copyright=COPYRIGHT_NA_FOTKY;
imagettftext($f, $text_size, 0, $bottom, $top, $barva, CESTA_K_PISMU, $copyright);
Imagejpeg ($f, $cil_velke, 100); 
//dokončeni
$rozmery = getimagesize ($cil_velke);
$sirka2 = $rozmery[0];
$vyska2 = $rozmery[1];
if($sirka2>$vyska2){$delka2=150;}
elseif($sirka2<$vyska2){$delka2=90;}
ZmenciFotku($cil_velke, $cil_male, $delka2, 0);
unlink($cil_smaz);
mysql_query("UPDATE pujcovna SET fotka='ANO' WHERE id='$id'");
}

if(isset($_POST["uloz"])){
$nazev_polozky=strip_tags(htmlspecialchars(trim(ucfirst($_POST["nazev"]))));
$kat_polozky=$_POST["kategorie"];
$cena_den_polozky=strip_tags(htmlspecialchars(trim($_POST["cena_za_den"])));
$cena_celkova_polozky=strip_tags(htmlspecialchars(trim($_POST["cena_celkova"])));
$ks_polozky=strip_tags(htmlspecialchars(trim($_POST["ks"])));

$chyba0="Nebylo vylpněno povinné pole Název!<br>";
$chyba1="Nebylo vylpněno povinné pole Cena na den!<br>";
$chyba2="Nebylo vylpněno povinné pole Cena položky!<br>";
$chyba3="Nebylo vylpněno povinné pole Množství!<br>";
$chyba4="Chybně vyplněné pole Cena na den!<br>";
$chyba5="Chybně vyplněné pole Cena položky!<br>";
$chyba6="Chybně vyplněné pole Množství!<br>";

if($nazev_polozky=="" or $nazev_polozky==false){$chyba .= $chyba0;}
if($cena_den_polozky=="" or $cena_den_polozky==false){$chyba .= $chyba1;}
else{if(!eregi("^[0-9]{1,12}$",$cena_den_polozky)){$chyba .= $chyba4;}}
if($cena_celkova_polozky=="" or $cena_celkova_polozky==false){$chyba .= $chyba2;}
else{if(!eregi("^[0-9]{1,12}$",$cena_celkova_polozky)){$chyba .= $chyba5;}}
if($ks_polozky=="" or $ks_polozky==false){$chyba .= $chyba2;}
else{if(!eregi("^[0-9]{1,12}$",$ks_polozky)){$chyba .= $chyba6;}}
if (isset($_FILES['fupload']) and $_FILES['fupload']!="none")
{
if(!in_array($_FILES['fupload']['type'], $povolenéTypy)){$chyba .= "Obrázek může být pouze formátu JPG!<br>";}
else{
if($chyba==false){
mysql_query("INSERT INTO `pujcovna` (kat, polozka, cena_den, mnozstvi, cena_celkem) VALUES ('$kat_polozky', '$nazev_polozky', '$cena_den_polozky', '$ks_polozky', '$cena_celkova_polozky')");
}
$ded=mysql_query("SELECT id FROM pujcovna WHERE kat='$kat_polozky', polozka='$nazev_polozky', cena_den='$cena_den_polozky', mnozstvi='$ks_polozky', cena_celkem='$cena_celkova_polozky' LIMIT 1");
$set=mysql_fetch_array($ded);
{$cislo=$set["id"];}
$konecnyNazevSouboru=$cislo.".jpg";
$cil_smaz = PUJCOVNA_FOTO."/smaz".$konecnyNazevSouboru;
$cil_velke = PUJCOVNA_FOTO."/".$konecnyNazevSouboru;
$cil_male = PUJCOVNA_FOTO."/nahled_".$konecnyNazevSouboru;
$nazevSouboru = $_FILES['fupload']['tmp_name'];
$copy = move_uploaded_file($nazevSouboru, $cil_smaz) or die ("Přenesenou fotku nelze zkopírovat");
chmod ($cil_smaz, 0777); 
if($copy == true){
NahrajFotkuPujcovna($cislo, $konecnyNazevSouboru, $cil_smaz, $cil_male, $cil_velke);
}else{
echo "Fotka nemohla být nahrána.\nPočet chyb: " . $_FILES['fupload']['error'];
}
}
}
if($chyba==true){
if($_POST["kategorie"]=="Kroje kompletní"){$selcet_kat1=" selected=\"selected\"";}
elseif($_POST["kategorie"]=="Dětské kompletní"){$selcet_kat2=" selected=\"selected\"";}
elseif($_POST["kategorie"]=="Ženské - součástky"){$selcet_kat3=" selected=\"selected\"";}
elseif($_POST["kategorie"]=="Mužské - součástky"){$selcet_kat4=" selected=\"selected\"";}
elseif($_POST["kategorie"]=="Dětské - součástky"){$selcet_kat5=" selected=\"selected\"";}
elseif($_POST["kategorie"]=="Ostatní"){$selcet_kat6=" selected=\"selected\"";}
$kategorie_select="<option value=\"Kroje kompletní\"".$selcet_kat1.">Kroje kompletní</option>
<option value=\"Dětské kompletní\"".$selcet_kat2.">Dětské kompletní</option>
<option value=\"Ženské - součástky\"".$selcet_kat3.">Ženské - součástky</option>
<option value=\"Mužské - součástky\"".$selcet_kat4.">Mužské - součástky</option>
<option value=\"Dětské - součástky\"".$selcet_kat5.">Dětské - součástky</option>
<option value=\"Ostatní\"".$selcet_kat6.">Ostatní</option>";
}
elseif($chyba==false){
mysql_query("INSERT INTO `pujcovna` (kat, polozka, cena_den, mnozstvi, cena_celkem) VALUES ('$kat_polozky', '$nazev_polozky', '$cena_den_polozky', '$ks_polozky', '$cena_celkova_polozky')");
header("location:".HTTP."/pujcovna/stav=ok&c=pujc_vloz");
}
}
Charlie22
Profil
nikde jsem si nevsiml, ze by jsi kontroloval
is_file($_FILES['neco']['tmp_name'])
- zkontrolujem jestli to tempu dorazil soubor nebo
empty($_FILES['neco']['name'])
- zkontrluje, jestli bylo vyplnena cesta uploadovaneho souboru.
matlala
Profil
aha empty funguje, ale je to pro mě novinky, tohle sjme nikdy nepoužíval, díky
AM_
Profil
pro kontrolu úspěšně nahraného souboru bys mohl používat funkci
is_uploaded_file
.
matlala
Profil
re: AM_

tu používám v kopírování-2 příspěvěk

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: