Autor Zpráva
Demoniak
Profil
Dobrý večer,
zkouším tento script, vše proběhne, do DB se údaj uloží ale na serveru se mi soubory neuloží. Zkusí mi prosím někdo poradit kde by mohla být chyba?
Chmod nastaven na 777.


pro zkoužku: zde


stránky beží na Endoře, takže s GD lib atd. by problém být neměl.

<?php
//pripojeni k mysql
require_once("db.php");

//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;
}

//nastaveni promenych
$popis = odstran_diakritiku($_POST["popis"]);
//$popis = trim($_POST["popis"]);
//$popis = preg_replace('~\s~','',$popis);
$popis = mysqli_real_escape_string($spojeni,$popis);
$popis_s_mezerami = trim($_POST["popis"]);
$popis_s_mezerami = mysqli_real_escape_string($spojeni,$popis_s_mezerami);
$rok = mysqli_real_escape_string($spojeni,$_POST["rok"]);
$fotka = trim($_FILES["image"]["name"]);
$fotka = str_replace(" ","",$fotka);
$soubor = $rok."-".$popis."-".date("Y-m-d_H-i-s")."-".$fotka;
$sql = 'INSERT INTO fotky (
         `soubor`, `rok`, `popis`)
       VALUES (
        \''.$soubor.'\', \''.$rok.'\', \''.$popis_s_mezerami.'\');
       ';

/** Vrácení rozměrů obrázku po zmenšení
 * @param string název zmenšovaného souboru
 * @param int maximální šířka výsledného obrázku, 0 pokud na ní nezáleží
 * @param int maximální výška výsledného obrázku, 0 pokud na ní nezáleží
 * @return array ($width, $height) výsledná šířka a výška
 * @copyright Jakub Vrána, http://php.vrana.cz/
 */

function image_shrink_size($file_in, $max_x = 0, $max_y = 0) {
    list($width, $height) = getimagesize($file_in);
    if (!$width || !$height) {
        return array(0, 0);
    }
    if ($max_x && $width > $max_x) {
        $height = round($height * $max_x / $width);
        $width = $max_x;
    }
    if ($max_y && $height > $max_y) {
        $width = round($width * $max_y / $height);
        $height = $max_y;
    }
    return array($width, $height);
}

/** Převzorkování obrázku GIF, PNG nebo JPG
 * @param string název zmenšovaného souboru
 * @param string název výsledného souboru
 * @param int šířka výsledného obrázku
 * @param int výška výsledného obrázku
 * @return bool true, false v případě chyby
 * @copyright Jakub Vrána, http://php.vrana.cz/
 */


function image_resize($file_in, $file_out, $width, $height) {
    $imagesize = getimagesize($file_in);
    if ((!$width && !$height) || !$imagesize[0] || !$imagesize[1]) {
        return false;

    }
    if ($imagesize[0] == $width && $imagesize[1] == $height) {
        return copy($file_in, $file_out);

    }
    switch ($imagesize[2]) {
        case 1: $img = imagecreatefromgif($file_in); break;
        case 2: $img = imagecreatefromjpeg($file_in); break;
        case 3: $img = imagecreatefrompng($file_in); break;
        default: return false;
    }
    if (!$img) {
        return false;

    }
    $img2 = imagecreatetruecolor($width, $height);
    imagecopyresampled($img2, $img, 0, 0, 0, 0, $width, $height, $imagesize[0], $imagesize[1]);
    if ($imagesize[2] == 2) {
        return imagejpeg($img2, $file_out);
    } elseif ($imagesize[2] == 1 && function_exists("imagegif")) {
        imagetruecolortopalette($img2, false, 256);
        return imagegif($img2, $file_out);
    } else {
        return imagepng($img2, $file_out);
    }
}



//zpracovani po odeslani
if($_POST["ok"]){
    //overovani, zda jsou vyplnena vsechna povinna pole
    if($_POST["rok"] && $_POST["popis"] && $_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 = "fotky/novinky/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 = "../fotky/novinky/".$soubor;
                    image_resize($_FILES["image"]["tmp_name"], $filename, $width, $height);
                }
                //move_uploaded_file($_FILES["image"]["tmp_name"], "../img/uploaded/foto/$soubor");
            }
        }

        //ulozit data do MySQL
        if(mysqli_query($spojeni,$sql)){
            echo"<p>Data byla úspěšně uložena!</p><br><br>";
            echo"<p><a href=\"insert_to_photos.php\">Nahrát další obrázek</a></p>";
            echo"<p><a href=\"../admin/\">Do administrační sekce</a></p>";
            $send = true;
        }
        else{
            echo "<p class=\"error\"><strong>Uložení dat do databáze selhalo!</strong>Zkus to znovu.</p>";
            echo "<form><input type=\"button\" value=\"Zpět\" onclick=\"history.back()\"></form>";
        }
    }
    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

echo $filename;?>
<p align="left">Vyplneni vsech poli je povinne. </p><br><br>
<form name="vlozit"  action="<?php echo SERVER."/index.php?page=upload";?>" method="post" enctype="multipart/form-data">
    <table>
        <tr>
            <td>Rok:</td>
            <td colspan="2">
                <select name="rok">
                    <option value="">Vyber rok...*</option>
                    <?php
                    //vytvori rolovatko s roky od roku 1994 do soucasneho
                    for($rok = 1994; $rok <= date("Y"); $rok++){
                        echo"<option value=\"$rok\""; if(!isset($send)){echo $_POST["rok"]==$rok ? "selected" : "";} echo">$rok</option>";
                    }
                    ?>
                </select>
            </td>
        </tr>

        <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>Popis:</td>
            <td><textarea name="popis" cols="40" rows="3" maxlength="999"><?php if(!isset($send)){echo $_POST["popis"];}?></textarea></td>
            <td><i>tento text bude zobrazen jako titulek a zaroven jako popisek k fotce</i></td>
        </tr>

        <tr>
            <td><input type="submit" name="ok" value="Uložit"></td>
        </tr>
    </table>
</form>
    <br>
    <p><a href="../admin/">Zpět do administrační sekce</a> </p>
Davex
Profil
Nejspíš se ho snažíš nahrávat do špatného adresáře.

Jednou je na ř. 10:
$filename = "fotky/novinky/thumb_".$soubor;

Podruhé na ř. 43:
$filename = "../fotky/novinky/".$soubor;
Demoniak
Profil
Davex:
Nejspíš se ho snažíš nahrávat do špatného adresáře.

Opraveno, ale stejně nic.

složka je root/fotky/novinky/
Demoniak
Profil
Omlouvám se, ale už to funguje. stejný problém jako v topicu č. 163780

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: