Problém s Session ve Vendoru

ForestCZE
Člen | 209
+
0
-

Ahoj, z ničeho nic mi začalo na jediném odkazu celé stránky vyskakovat error 500.

Log píše:
`
[2020–08–08 16–49–11] PHP Warning: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time in /var/www/protiskcbcz/vendor/nette/http/src/Http/Session.php:394 @ http://protiskcb.cz/kontakt/
[2020–08–08 16–49–11] PHP Warning: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time in /var/www/protiskcbcz/vendor/nette/http/src/Http/Session.php:394 @ http://protiskcb.cz/kontakt/
[2020–08–08 16–49–11] PHP Warning: session_id(): Cannot change session id when headers already sent in /var/www/protiskcbcz/vendor/nette/http/src/Http/Session.php:91 @ http://protiskcb.cz/kontakt/
`

Netuším, co může být špatně.

EDIT: Když zapnu DebugMode, tak error zmizí.

Editoval ForestCZE (8. 8. 2020 17:10)

CZechBoY
Člen | 3608
+
0
-

Co je na ty strance specialniho? Mozna formular? Zkus nastavit session start na true

ForestCZE
Člen | 209
+
0
-

CZechBoY napsal(a):

Co je na ty strance specialniho? Mozna formular? Zkus nastavit session start na true

Ano, je tam formulář a když to vyhodí ten error, tak ten formulář se nezobrazí, zbytek obsahu nad ním ano.

Vůbec se ssession nepracuju a nikdy jsem session u formuláře v nette startovat nemusel. Proč a kde to mám použít? Díky.

CZechBoY
Člen | 3608
+
+1
-

Nepouzivas csrf protection?

ForestCZE
Člen | 209
+
0
-

CZechBoY napsal(a):

Nepouzivas csrf protection?

protected function createComponentContact()
    {
        $form = new Form;
        $form->addText('nameaddress', 'Jméno a příjmení, adresa:')
             ->setRequired('Vyplňte jméno a příjmení, adresu.')
             ->setAttribute('placeholder', 'Jméno a příjmení, adresa')
             ->setAttribute('autocomplete', 'off');

        $form->addText('telephone', 'Telefon:')
             ->setRequired('Vyplňte telefon.')
             ->addRule(Form::PATTERN, 'Zadejte správný formát tel. čísla.', '[0-9]{9}')
             ->setAttribute('placeholder', 'Telefon (+420)')
             ->setAttribute('autocomplete', 'off');

        $form->addEmail('mail', 'E-mail:')
             ->setRequired('Vyplňte e-mail.')
             ->setAttribute('placeholder', 'E-mail')
             ->setAttribute('autocomplete', 'off');

        $form->addTextArea('message', 'Zpráva:')
             ->setRequired('Vyplňte zprávu.')
             ->setAttribute('placeholder', 'Zpráva');

        $form->addUpload('uploadpdf', 'PDF:')
             ->setRequired(false)
              ->setAttribute('accept', 'application/pdf')
             ->addRule(Form::MIME_TYPE, 'Můžete nahrát pouze PDF soubor!', 'application/pdf')
             ->addRule(Form::MAX_FILE_SIZE, 'Maximální velikost souboru je 2M!', 2 * 1024 * 1024);

        $form->addProtection('Vypršel časový limit pro odeslání!');

        $form->addSubmit('send', 'Odeslat');
        $form->onSuccess[] = [$this, 'contactSucceeded'];
        return $form;
    }

Poznámka: Ten error znefunkční všechny odkazy a nejde se nikam dostat. Web je zde

Editoval ForestCZE (9. 8. 2020 18:59)

Marek Bartoš
Nette Blogger | 1264
+
+4
-

$form->addProtection('Vypršel časový limit pro odeslání!');

Tohle startuje session. Nastartuj session sám v presenteru, v rámci životního cyklu nejpozději v beforeRender()