Autor Zpráva
Gecko
Profil *
Zdravim,
resim jeden problem, a to odesilani obrazku na server s naslednym prejmenovanim.
Nize uvedeny kod pracuje v poradku, jen mi nejde ochrana pri odeslani prazdenho "formulare" cili kdyz neni soubor vybran.
Nevim kde by mohl byt problem, podminka if(isset($_POST['Submit']) && !$chyby) tam je, tak fakt nevim.

<?php
$output='
<form name="newad" method="post" enctype="multipart/form-data" action="">
<input type="file" name="image" />
<input name="Submit" type="submit" value="Nahrát obrázek" />
</form>';

define ("MAX_SIZE","2000"); //Velikost souboru vkB
function getExtension($string) {
$i = strrpos($string,".");
if (!$i) { return ""; }
$l = strlen($string) - $i;
$ext = substr($string,$i+1,$l);
return $ext;
}

$chyby=0;

if(isset($_POST['Submit']))
{

$image=$_FILES['image']['name'];

if ($image)
{

$filename = stripslashes($_FILES['image']['name']);
$extenze = getExtension($filename);
$extenze = strtolower($extenze);

if (($extenze != "jpg") && ($extenze != "jpeg") && ($extenze != "png") && ($extenze != "gif") && ($extenze != "JPG" && ($extenze != "JPEG")) && ($extenze != "PNG") && ($extenze != "GIF"))
{
$output='<h1>Neznámý soubor</h1>';
$chyby=1;
}

else
{

$velikost=filesize($_FILES['image']['tmp_name']);

if ($velikost > MAX_SIZE*1024)
{
$output='<h1>Soubor je příliš veliký</h1>';
$chyby=1;
}

$jmeno_souboru=time().'.'.$extenze;
$nove_jmeno="soubory/".$jmeno_souboru; //Přednastavená složka "soubory"


$kopirovani = copy($_FILES['image']['tmp_name'], $nove_jmeno);

if (!$kopirovani)
{
$output='<h1>Error</h1>';
$chyby=1;
}}}}

if(isset($_POST['Submit']) && !$chyby)

{
$output="<h1>Soubor byl nahrán</h1>";
$output='<div class="message1">Obrázek <strong>'.$jmeno_souboru.'</strong> byl úspěšně nahrán na server.</div>
<ul>
<li>Velikost souboru: '.$velikost.' kB</li>
<li>Náhled obrázku: <a href="'.$nove_jmeno.'">'.$nove_jmeno.'</a></li>
</ul>
HTML: <input onclick="this.select();" value="&lt;img src=&quot;http://www.smetka.net/'.$nove_jmeno.'&quot; alt=&quot;Velikost - '.$velikost.' kB&quot; /&gt;" size="85">
          <h3>Náhled</h3>
          <div align="center"><small>Obrázek může být v náhledu deformován.</small><br />
            <a href="'.$nove_jmeno.'"><img src="'.$nove_jmeno.'" width="500px"/></a>
          </div>';
}

?>
mattyZEM
Profil
Ten kód vystříhej a dej sem jen to, co budeme potřebovat. Nehodlám se probírat tunou textů, výpisem článků a takových věcí které s danou problematikou nemá nic společnýho.
Keeehi
Profil
Zkus: if(!empty($_POST['Submit']) and $chyby==0)
Gecko
Profil *
mattyZEM:
Kdybych to vystříhal, tam zmizne jen pár řádků.

Keeehi:
Bohužel to nejde, ale i tak díky za reakci. (Vkládal jsem ba řádek 60).
Alphard
Profil
Gecko:
Naučte se odsazovat kód, tohle se čte hrozně.
Pro upload je vhodnější použít funkci move_uploaded_file() místo copy() a pro ověření, jestli je soubor skutečně uploadován, potom is_uploaded_file().
Gecko
Profil *
Mám to tedy takto
řádek 52
$kopirovani = move_uploaded_file($_FILES['image']['tmp_name'], $nove_jmeno);

a ochrana
if(is_uploaded_file($_POST['image']['tmp_name']) and $chyby==0)

Soubor se nahraje v pořádku, ale hlášení o tom, že se provedl upload se nevypíše.
AM_
Profil
a zkoušel jsi si vypsat, co je v tu chvíli v proměnné $chyby? Pokud ne, tak vůbec nevím, co tu hledáš, tohle snad uděláš dřív, než jdeš na fórum ;)
Gecko
Profil *
V tý proměnné není nic.
Gecko
Profil *
Hurááá
<?php
$output='
<form name="newad" method="post" enctype="multipart/form-data" action="">
<input type="file" name="image" />
<input name="Submit" type="submit" value="Nahrát obrázek" />
</form>';

define ("MAX_SIZE","2000"); //Velikost souboru vkB
function getExtension($string) {
$i = strrpos($string,".");
if (!$i) { return ""; }
$l = strlen($string) - $i;
$ext = substr($string,$i+1,$l);
return $ext;
}

$chyby=0;
if (is_uploaded_file($_FILES['image']['tmp_name'])) {
if(isset($_POST['Submit']))
{

$image=$_FILES['image']['name'];

if ($image)
{

$filename = stripslashes($_FILES['image']['name']);
$extenze = getExtension($filename);
$extenze = strtolower($extenze);

if (($extenze != "jpg") && ($extenze != "jpeg") && ($extenze != "png") && ($extenze != "gif") && ($extenze != "JPG" && ($extenze != "JPEG")) && ($extenze != "PNG") && ($extenze != "GIF"))
{
$output='<h1>Neznámý soubor</h1>';
$chyby=1;
}

else
{

$velikost=filesize($_FILES['image']['tmp_name']);

if ($velikost > MAX_SIZE*1024)
{
$output='<h1>Soubor je příliš veliký</h1>';
$chyby=1;
}

$jmeno_souboru=time().'.'.$extenze;
$nove_jmeno="soubory/".$jmeno_souboru; //Přednastavená složka "soubory"


$kopirovani = move_uploaded_file($_FILES['image']['tmp_name'], $nove_jmeno);

if (!$kopirovani)
{
$output='<h1>Error</h1>';
$chyby=1;
}}}}

if(isset($_POST['Submit']) && !$chyby)

{
$output="<h1>Soubor byl nahrán</h1>";
$output='<div class="message1">Obrázek <strong>'.$jmeno_souboru.'</strong> byl úspěšně nahrán na server.</div>
<ul>
<li>Velikost souboru: '.$velikost.' kB</li>
<li>Náhled obrázku: <a href="'.$nove_jmeno.'">'.$nove_jmeno.'</a></li>
</ul>
HTML: <input onclick="this.select();" value="&lt;img src=&quot;http://www.smetka.net/'.$nove_jmeno.'&quot; alt=&quot;Velikost - '.$velikost.' kB&quot; /&gt;" size="85">
          <h3>Náhled</h3>
          <div align="center"><small>Obrázek může být v náhledu deformován.</small><br />
            <a href="'.$nove_jmeno.'"><img src="'.$nove_jmeno.'" width="500px"/></a>
          </div>';
}}

?>

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:

0