< návrat zpět

Diskuse


Téma: XSRF Protect rss

Zaslal/a 27.2.2017 22:09

Zdravím, vím, že se zde tento problém řešil už několikrát, ale pořád si nějak nevím rady.

Chtěl bych si v administraci vytvořit jednoduchý modul pro přidávání obědových meníček. Je to v podstatě má první zkušenost s PHP, kdy se snažím zpatlat něco sám, takže je možné, že tam budou chyby.
Každopádně ten hlavní problém je, že vždy při odeslání formuláře mi to vypíše, že "Formulář nebyl odeslán s platným autorizačním tokenem".

Tady v diskuzi jsem zjistil, že se jedná o xsrf protect, tak jsem se to pokoušel implmentovat dle toho, co jsem tu našel, ale hláška se objevuje pořád.

Kód je zde:
<?php

/* --- kontrola jadra --- */
if(!defined('_core')) die;

/* --- skript pluginu --- */

if ($_POST)
{
DB::query('
INSERT INTO sd_menu (polevka, jidloA, jidloB, jidloC, desert)
VALUES (?, ?, ?, ?, ?)
', $_POST['polevka'], $_POST['jidloA'], $_POST['jidloB'], $_POST['jidloC'], $_POST['desert']);
}

$output .= '
<form method="post">
Polévka<br />
<input type="text" name="polevka" /><br />
Jídlo A:<br />
<input type="text" name="jidloA" /><br />
Jídlo B:<br />
<input type="text" name="jidloB" /><br />
Jídlo C:<br />
<input type="text" name="JidloC" /><br />
Desert:<br />
<input type="text" name="desert" /><br />
<p>
<input type="submit" value="Odeslat" />
</p>
<?php echo _xsrfProtect(); ?>
</form>
';


Děkuju za jakoukoli radu :-)

Zaslat odpověď >

Strana:  « předchozí  1 2
#020656
Shira
Přidej si $dev = true; na konec config.php a zkus znovu. Pokud to nevyplivne žádnou hlášku ani v dev režimu, tak bude něco špatně jinde..
#020659
avatar
Plive to tohle -
http://www.imagehosting.cz/?v=snmekofnf.png

Ale jsem si jistej,že mám vyplněný vždy všechny pole. Takže tomu NULL úplně nerozumím ...
#020660
Shira
jidloC chybi ve formulari (prip. spatny nazev inputu) nebo mas chybu jinde.
#020662
avatar
Děkuju moc za trpělivost a pomoc. Samozřejmě jsem tam měl překlep ...
#020664
avatar
Tak ještě jednou vás chci poprosit o radu. Jak jsem říkal, s PHP mám nulový zkušenosti a píšu to podle návodu, ale ten návod zřejmě v SL naráží, protože mi to stále vyhazuje chyby a já to zkrátka nedokážu vypsat z té DB.

V databázi sd_menu mám nakonec jen tři sloupce - id, date, text_menu, přičemž zatím mi stačí vypsat jen text_menu.
Nevím, zda je to důležité, ale pro jistotu - data do text_menu vkládám z textarea, na kterou se mi podařilo implementovat wysiwig editor, takže text obsahuje i HTML značky.

Nejčastěji mi to vyhazuje chybu typu - Object of class mysqli_result could not be converted to string apod.
Nejdál jsem se dostal k tomu, že jsem do proměnné $menu uložil řetězec DB::query('SELECT text_menu FROM sd_menu WHERE id=' . DB::val($id));
který se mi následně propsal na web, což ale nebylo úplně mým záměrem. Snažil jsem se hledat nápovědu v souborech sunlightu, jakým stylem se volá do databáze, ale já jsem v tomhle asi fakt marnej a zkrátka s tím nemůžu pohnout.

Pokud by mi, prosím, někdo mohl napsat, jak tuhle část z DB propíšu na web, budu neskonale vděčný.

Moc děkuju.
#020665
Jirka Daněk
$query = DB::query("SELECT text_menu FROM `sd_menu` WHERE id=" . DB::val($id));
$query = DB::query_row("SELECT text_menu FROM `sd_menu` WHERE id=" . DB::val($id));

získaná data přiřadíš do proměnné, ale pozor nejsou string, jsou pole.echo $query['text_menu'];
což ovšem neplatí pokud taháš více řádků, ty je potřeba projít cyklem
$query = DB::query("SELECT title, perex, content FROM `articles` WHERE visible=1");
takže následný výpis je takto
while($row=DB::row($query)){
echo $row['title']; //$row je konktétní jeden řádek, každý jeden průchod cyklem otevírá jeden řádek
}
#020666
avatar
No takhle nějak jsem to zkoušel, ale i když přesně zkopíruju tvoje dva řádky, tak mi to vyhodí:

Error
Cannot use object of type mysqli_result as array

A označenej je řádek echo $query['text_menu'];
#020667
Jirka Daněk
Protože jsem blbej... pokud chceš tahat jeden řádek musíš použít $query = DB::query_row("SELECT text_menu FROM `sd_menu` WHERE id=" . DB::val($id));
nebo $row = DB::row($query); bez while
#020668
avatar
Děkuju moc, to už funguje. Přesně v tom jsem dělal tedy tu chybu taky. Ještě jednou moc děkuju.

Strana:  « předchozí  1 2