Autor Zpráva
Lechy
Profil
Ahoj, plánuju si udělat na web jednoduché posílání soukromých zpráv mezi uživateli.
Akorát mi teď vrtá hlavou, jak udělat, když budu mít čtení zprávy ve tvatu www.mujweb.cz/index.php?page=szpravy&id=5
tak to uvidí každej uživatel, když si změní ručne ID v adrese, jak se něco podobného ošetřuje?
Jde mi oto, aby uživatel mohl číst zprávy samozřejmě, který jsou jeho.
Taps
Profil
Lechy:
tak kontroluj zprávu podle toho komu je určena.
GeneralDv
Profil
Mno tak když jsme u PM - otázka. Taky plánuju něco takovýho udělat, ale nechci aby se z DB dal text zprávy jednoduše přečíst, respektive chce to nějakou dobrou šifru, jinač nevim. Co mi doporučíte / používáte?
panther
Profil
Lechy, GeneralDv:
jelikož jsou SZ vázány na přihlášení, tato URL je v pořádku. V SQL dotazu bude podmínka kromě na ID zprávy i na příjemce, zda jsem to já, který jsem přihlášený.

Pro jednoho bude SZ s ID = 5 platná, pro druhého ne.
1Pupik1989
Profil
A nejlépe to udělat na ID uživatele kdyby se náhodou v budoucnosti měnila jeho přezdívka.
panther
Profil
1Pupik1989:
to je samozřejmé, že ne na přihlašovací jméno, ale na ID. Veškeré vzájemné propojování záznamů je vhodné dělat na základě unikátního identifikátoru.

To jsem bral jako samozřejmost, proto jsem to ani nezmiňoval. A při tvorbě čehosi se SZ očekávám jistou, nezačátečnickou znalost.
1Pupik1989
Profil
No já kdysi takovou blbost udělal, tak upozorňuji aby to ostatní nezblbli jako já :) Je tedy pravda, že já měl přejmenování nemožný, respektive jsem to nedovolil. Jakou přezdívku si uživatel vybere, takovou prostě má. Další otázka je, jestli chce dotyčný i hromadné zprávy, pak by to bylo trošičku jinak. Třeba oddělené středníkem nebo čárkou.
panther
Profil
1Pupik1989:
Třeba oddělené středníkem nebo čárkou.
to je téměř vždy špatně.

Do DB by v takovém případě měla příijít zpráva/uživatel každá na samostatný řádek. Bude-li tedy určena 10 uživatelům, vloží se do DB 10 řádků a zpráva s ID = 5 bude přístupně všem těmto 10.
První problém by ti nastal, kdyby jeden z těchto uživatelů oddělenýh čárkou chtěl záznam smazat. Ne, že by to nešlo, ale zbytečné komplikace navíc.
1Pupik1989
Profil
Jo, teď mi došlo, že jsem napsal pěknou blbost, jelikož bych pokaždé ve sloupci "prijemce" musel hledat "id_uzivatele;". Vlastně ani nevím proč jsem to napsal, sám to tak neřeším :D Já si pomocí implode udělám víc záznamů do INSERT a pak to teprve pošlu.
Lechy
Profil
Díky všem, už sem si udělal jednoduché soukromé zprávy. Teď sem u toho zabezpečení. Nyní to mám tak, že uživatel může prohlížet zprávu, jen která mu je určená. Vypisuju taky zprávy, který sem já odeslal některýmu uživatelovi a chci aby mě to pustilo do detailu zprávy, což mě už nepustí, jelikož mě ta zpráva nebyla doručena.

Pro výpis detailu zprávy mám kod:
$sql_nove = MySQL_Query("SELECT * FROM zpravy WHERE id =  ".$_GET["id"]." AND komu = '$iduser' ");


strukturu databáze mám: id, od, komu, vytvoreno, predmet, zprava, precteno

jak docílit toho, když já s id 8(od) odešlu zprávu uživatelovi s id 5(komu) tak abych si i já mohl přečíst co sem napsal? Lze to nějak vyešit?
panther
Profil
Lechy:
MySQL_Query("SELECT * FROM zpravy WHERE id =  ".(int)$_GET["id"]." AND (komu = ". (int)$iduser . " OR od = " . (int)$iduser . ") ");

Předpokládám, že $_GET['id'] a $iduser jsou číselné hodnoty.
Lechy
Profil
ano $_GET['id'] , $iduser jsou číselné hodnoty

pořád mi to ale píše, že zpráva nebyla nalezena(nemám přístup)
Lechy
Profil
omlouvám se, běží jak má mockrát děkuji :)
czechiaa
Profil *
Zdravím. Vím, že již je tato debata postarší, ale mám totožný problém, nýbrž s uživately nemám spjaté jejich ID, ale prostě používám jejich user (nick) .. Jak přeformulovat query, aby to funkovalo stejně ?

Předek děkuji za odpověď
jenikkozak
Profil
MySQL_Query("SELECT * FROM zpravy WHERE id =  ".(int)$_GET["id"]." AND (komu = '". mysql_real_escape_string($userNick) . "' OR od = '" . mysql_real_escape_string($userNick) . "') ");

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0