NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Ondřej Langr (andysekcze):26.7.2016 21:30

Ahoj, potřeboval bych jemnou pomoci s uploadem obrázků na MVC(základ stavěn na zdejším seriálu). Potřebuji zjistit co dělám špatně, protože to prostě nefunguje. Pokud někde pletu do kontroleru to co by tam nemělo být tak se omlouvám a doufám že mě opravíte. Díky všem co mi nějak pomohou. :) Zde je kód:

class ProfilKontroler extends Kontroler
{
    public function zpracuj($parametry)
    {
        $spravceSouboru = new SpravceSouboru();
        $spravceUzivatelu = new SpravceUzivatelu();
        $uzivatel = $spravceUzivatelu->vratUzivatele();

        if($uzivatel['admin'] == 1)
            $uzivatel['admin'] = "Tento uživatel má administrátorská oprávnění";
        else
            $uzivatel['admin'] = "Tento uživatel má pouze uživatelská oprávnění";

        $editace = false;

        if ($_POST)
        {
            $uzivatelskaData = array(
                'jmeno' => '',
                'heslo' => '',
            );

            if(isset($_POST['jmeno']))
                $uzivatelskaData['jmeno'] = $_POST['jmeno'];
            if(isset($_POST['heslo']) && isset($_POST['heslo_znovu']))
                if($_POST['heslo'] == $_POST['heslo_znovu'])
                    $uzivatelskaData['heslo'] = $spravceUzivatelu->vratOtisk($_POST['heslo']);
            if(!empty($_FILES['image']['tmp_name']))
                $spravceSouboru->nahrajAvatar($_FILES['image']['tmp_name'],$uzivatel['uzivatele_id']);
            $spravceUzivatelu->aktualizuj($uzivatel['uzivatele_id'],$uzivatelskaData);
            $this->pridejZpravu('Uživatelská data byly úspěšně aktualizovány');
        }
        else
        {
            $uzivatelZobraz = $spravceUzivatelu->vratUzivateleKZobrazeni($parametry[0]);

            if (empty($parametry[0]) && $uzivatel || $uzivatel['uzivatele_id'] == $parametry[0]) {
                $this->data['avatar'] = $uzivatel['avatar'];
                $this->data['jmeno'] = $uzivatel['jmeno'];
                $this->data['admin'] = $uzivatel['admin'];
                $titulek = "Profil uživatele ".$uzivatel['jmeno'] . " | Dáme pařbu";
                $this->hlavicka = array(
                    'titulek' => $titulek,
                    'klicova_slova' => '',
                    'popis' => '',
                );
            } else if (($parametry[0] != $uzivatel['uzivatele_id']) || !(empty($parametry[0]))) {
                if (!$uzivatelZobraz) {
                    $this->pridejZpravu("Uživatel neexistuje");
                    $this->presmeruj('domu');
                }
                else{
                    $this->data['jmeno'] = $uzivatelZobraz['jmeno'];
                    $this->data['avatar'] = $uzivatelZobraz['avatar'];
                    if($uzivatelZobraz['admin'] == 1)
                        $uzivatelZobraz['admin'] = "Tento uživatel má administrátorská oprávnění";
                    else
                        $uzivatelZobraz['admin'] = "Tento uživatel má pouze uživatelská oprávnění";
                    $this->data['admin'] = $uzivatelZobraz['admin'];
                    $titulek = "Profil uživatele " . $uzivatelZobraz['jmeno'] . " | Dáme pařbu";
                    $this->hlavicka = array(
                        'titulek' => $titulek,
                        'klicova_slova' => '',
                        'popis' => '',
                        );
                }
            } else if (empty($parametry[0]) && !$uzivatel) {
                $this->pridejZpravu('Nejsi přihlášený.');
                $this->presmeruj('domu');
            }elseif ($parametry[1] == 'upravit' && $uzivatel && $uzivatel['uzivatele_id'] == $parametry[0])
            {
                $editace = true;
                $titulek = "Editace profilu uživatele" . $uzivatel['jmeno'] . " | Dáme pařbu";
                $this->hlavicka = array(
                    'titulek' => "Editace profilu uživatele " . $uzivatel['jmeno'] . " | Dáme pařbu",
                    'klicova_slova' => '',
                    'popis' => '',
                );


            }
            else {
                $this->pridejZpravu('Uživatel neexistuje');
                $this->presmeruj('domu');
            }
            $this->data['edit'] = $editace;
            $this->pohled = 'profil';
        }
    }
}

//Databázová metoda zmen
 public function zmen($tabulka, $hodnoty = array(), $podminka, $parametry = array()){
        return self::dotaz("UPDATE `$tabulka` SET `".
            implode('` = ?, `', array_keys($hodnoty)).
            "` = ? " . $podminka,
            array_merge(array_values($hodnoty), $parametry));
    }

//metoda aktualizuj
public function aktualizuj($id,$uzivatelskeData)
    {
        Db::zmen('uzivatele', $uzivatelskeData , "WHERE uzivatele_id = ?", array($id));
    }
//metoda pro upload
public function pridejObrazek($slozka, $uzivatelovoID)
        {
    // konfigurace
    $uploadDir = $slozka; // adresar, kam se maji nahrat obrazky (bez lomitka na konci)
    $allowedExt = array('jpg', 'jpeg', 'png', 'gif', 'svg'); // pole s povolenymi priponami

    // zpracovani uploadu
    if(isset($_FILES['image']) && is_array($_FILES['image']['name'])) {

        $counter = 0;
        $allowedExt = array_flip($allowedExt);
        foreach($_FILES['image']['name'] as $klic => $nazev)
        {
            $fileName = basename($nazev);

            $tmpName = $_FILES['image']['tmp_name'][$klic];

            // kontrola souboru
            if(!is_uploaded_file($tmpName) || !isset($allowedExt[strtolower(pathinfo($fileName, PATHINFO_EXTENSION))]))
            {
                // neplatny soubor nebo pripona
                throw new ChybaUzivatele("Neplatná přípona souboru.");
            }

            // presun souboru
            if(move_uploaded_file($tmpName, "{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}")) {
                ++$counter;
                if($uzivatelovoID)
                    rename("{$uploadDir}".DIRECTORY_SEPARATOR."{$fileName}", "{$uploadDir}".DIRECTORY_SEPARATOR."{$uzivatelovoID}");
            }

            }
        }
        }
//profil.phtml - pohled
<div id="article-background">
    <?php if($edit): ?>
        <form method="post" enctype="multipart/form-data">
            Změnit avatar<br/>
            <input type="file" name="image" />
            Změnit Jméno<br />
            <input type="text" name="jmeno" value="<?= $jmeno ?>"/><br />
            Změnnit Heslo<br />
            <input type="password" name="heslo" /><br />
            Heslo znovu<br />
            <input type="password" name="heslo_znovu"/>
            <input type="submit" name="ok" value="Potvrdit">
        </form>
    <?php endif ?>
    <?php if(!$edit): ?>
        <img src=" <?= $avatar ?>" alt="avatar" width="124px" height="124px"/>
        <?= $jmeno ?><br />
        <?= $admin ?>
    <?php endif; ?>
</div>
Odpovědět
26.7.2016 21:30
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar
Lukáš Černý :27.7.2016 0:40

mohl by jsi pridat i funkci "nahrajAvatar" (SpravceSoubo­ru::nahrajAva­tar)? :)

 
Nahoru Odpovědět
27.7.2016 0:40
Avatar
Odpovídá na Lukáš Černý
Ondřej Langr (andysekcze):27.7.2016 9:36

Mohl no, ale můj problém to jaksi moc nepořeší :)

Nahoru Odpovědět
27.7.2016 9:36
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar
VitekST
Člen
Avatar
VitekST:27.7.2016 18:04

Zkontroloval sis práva na serveru? => na Linuxu příkazy chown, chmod

Jinak, zkus to zjednodušit jak to jde, případně si můžeš udělat novou stránku kde bude probíhat upload jen jednoho souboru, ať se ti to dobře ladí.

Pak to samozřejmě vrať do původního stavu.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
27.7.2016 18:04
Avatar
Odpovídá na VitekST
Ondřej Langr (andysekcze):28.7.2016 10:07

Jop, díky za nasměrování na správnou cestu :) uznávám ti řešení ;) :)

Nahoru Odpovědět
28.7.2016 10:07
I have a charger. I have Note 7. Umh I haven't Note7.
Avatar
mkub
Tvůrce
Avatar
Odpovídá na Ondřej Langr (andysekcze)
mkub:28.7.2016 16:05

staci nastavit na ten adresar prava rwx pre vlastnika a rx pre ostatnych, dalej nastavit vlastnika toho adresara na uzivatela a skupinu, pod ktrym bezi server a zabudni na prava 777, co je bezpecnostne riziko a hocikto ti to potom moze vykradnut a tam pomenit

 
Nahoru Odpovědět
28.7.2016 16:05
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.