Diskuse

Téma: PHP úprava v MySQL

Zdravím,
snažím se udělat formulář, pro úpravu dat v mysql.
Mám tento kód:
<?php
/* --- kontrola jadra --- */
if (!defined('_core')) {
exit;
}

/* Výtah dat z mysql */
$sql = mysql_query("SELECT * FROM `" . _mysql_prefix . "-zkusenosti`" . (isset($_GET['id']) ? " WHERE id =".intval($_GET['id']) : ''));
$zaznam = mysql_fetch_array($sql);
$id = $zaznam['id'];

/* Zpracování formuláře */
if (isset($_POST['formular'])) {
$error_log = array();
if (empty($_POST['jmeno'])) $error_log[] = "Vyplňte jméno!";
if (sizeof($error_log) > 0) {
$output.=_formMessage(2, _eventList($error_log, 'errors'));
}

else{

$jmeno = _safeStr(_htmlStr($_POST['jmeno']));
if (mysql_query("UPDATE `" . _mysql_prefix . "-zkusenosti` SET jmeno='".$jmeno."' WHERE id=$id")){
$output.=_formMessage(1, "Formulář byl odeslán. Děkujeme.");
}
else{
$output.=_formMessage(3, "Zprávu se nepodařilo odeslat, kontaktujte nás prosím.");
}
}
}

$output.="<form action='' method='post' name='formular'>
<input type='hidden' name='id' value='".$zaznam['id']."' />
Jméno:<input type='text' name='jmeno' value='".$zaznam['jmeno']."' />
Příjmení:<input type='text' name='prijimeni' value='".$zaznam['prijimeni']."' />
<input type='submit' value='Uložit do databáze' name='formular' />
</form>";
?>
.

Formulář funguje, jen bych tam potřeboval menší fičůrku 😁 . v DB je email a datum/čas ve formátu SL (dlouhé číslo) (+ další hodnoty které se budou upravovat). Před ten formulář bych tedy potřeboval šoupnout další formulář, do kterého by člověk vložil email + to číslo (datum), po ověření správné kombinace v PHP by se zobrazil formulář, ve kterém by si člověk mohl upravovat své hodnoty (nevím jak udělat ochranu, aby člověk nemohl upravovat cizí hodnoty)
Možná by nebylo špatné, aby se heslo udrželo dejme tomu 10 minut v cash prohl. (asi cookies, fakt netuším jaks e tohle řeší).

Potřebuji tedy, aby si návštěvníci mohlu upravovat svá data http://ocnivady.cz/vypis-refrakcnich-zakroku.p63.html.

Snad jsem to dobře popsal.

Díky za odpověď. 😁
postZaslat odpověď
Pokud svá data můžou upravovat jen přihlášení uživatelé, tak je to jasné, pokud nepřihlášení, tak máš smůlu, protože bych rád viděl jak se někdo pamatuje na vteřinu přesné datum, kdy data vložil. Snad jedině podle mailu, ale vzhledem k tomu že mail je v info vidět, tak by pak mohl kdokoliv upravit komukoliv.
Moc jsme si nerozuměli. To číslo (resp. datum/čas) slouží jako heslo, které uživatel zná nebo si ho může nechat zaslat na mail, není to problém. Jde jen o to, jak udělat tu kontrolu mailu a číslo, aby to nikdo nezneužil.
OK, pokud tedy jde time odeslat na mail, ketrý je u záznamu, tak není problém to proti němu i ověřit. Záleží už pouze na tom v jakém formátu v tabulce zkusenosti datum a čas vkládáš.

A jako uplně ideální bych viděl to, že po vložení zkušenosti na mail dojde to heslo pro případné další úpravy i s informací, že v případě ztráty se nic neděje a je možnost si ho nechat poslat znovu.
Datum a čas vkládám jako time()do db (jako text), mail klasicky exmaple@example.tld.

S odesilaním hesla na mail si nedělej starosti, to zvládnu, funkci mail znám ;)
Tak to potom není co řešit. Po vložení na mail posílej ten time údaj a info, že se případně nechá poslat znova a maš vystaráno. Pak jen při loginu prokontrolujes jeslti mail a time odpovídá a pokud ano, tak může upravit zkušenost.
Jojo, to bych mozna zvladl.
Natahnout data z mysql umim, udelam si HCM modul, a data upravuji podle promenne v URL,m cili takto:
upravitzakrok.p1.html?id=1a do poli se mi natahnou data ID uzivatele s ID 1. Jde mi ale o to, ze se nejsem jist, jak ochranit to, aby pripadny utocni nenacetl data za nekoho jineho, aby neprohodil cislo v ID a neupravil ciziho.

Nevim jak se to dela, jestli se pouziva session nebo cookies, v tomhle plavu. Jeste mrknu na googlu.
Na tohle staci regnout session.
Po prihlaseni udelas $_SESSION['logged']=1;
A pak uz jen kontrolujes jestli $_SESSION['logged']=1;