Diskuse

Téma: XSRF Protect

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 :-)
postZaslat odpověď
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..
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 ...
jidloC chybi ve formulari (prip. spatny nazev inputu) nebo mas chybu jinde.
Děkuju moc za trpělivost a pomoc. Samozřejmě jsem tam měl překlep ...
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.
$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
}
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 řádekecho $query['text_menu'];
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
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