ugrás a tartalomhoz

mysql query linkre

Anonymous · 2006. Okt. 16. (H), 09.08
Van egy linkem:

http://localhost/mypage/sendmsgu.php?do=attach

Ha a linkre katintok egy uj bejegyzes kerul be mySQL-be.
A lap ujratoltodik es az ID (azonosito) amely bekerult a mySQL-be, elojon egy hidden input mezobe.

Egy pelda

Meg nem katintottam ra a linkre:
<input type="hidden" name="msgid" value="">
Rakatintottam a linkre :
<input type="hidden" name="msgid" value="1">
A gond az, hogy ha megegyszer megnyitom a linket akkor egy masik ID generalodik. Azt szeretnem elerni, hogy ha az ID szam mar letezik a hidden mezoben, es ujbol raklikelek a lapra http://localhost/mypage/sendmsgu.php?do=attach akkor mar ne generaljon uj bejegyzest.

Tudnatok segiteni ?

Koszonom !
 
1

segitseg

Anonymous · 2006. Okt. 16. (H), 10.09
tudna valaki segiteni ?
barmilyen tanacs jol jonne
2

nem illik sürgetni, segítünk

Táskai Zsolt · 2006. Okt. 16. (H), 10.23
a helyzetet neked kell lekezelni. ha kiküldöd a linket mondjuk regisztrációs céllal, akkor adj egy egyedi azonosítóval rendelkező tokent, amit törölhetsz az account létrehozásakor. ha ez nem egy kiküldött link, hanem egy webalkalmazásban szerepel valahol, akkor az frissítés kellemetlen hatását kiküszöbölheted egy redirecttel a művelet után, a back+újrakattinás ellen ez "nem véd", de ilyenkor már magára vessen a felhasználó (iiletve a link szövegének jó megfogalmazása segíthet).
jó munkát,
Tasi
3

ok

Anonymous · 2006. Okt. 16. (H), 10.40
Elnezest de nem igazan ertem amit fent leirtal.
A link nem regisztraciora szolgal. A lap privat uzenet kuldesre van letrehozva.

Amikor a felhasznalo rakatint a linkre egy uj bejegyzes kerul az adatbazisba. Ez a bejegyzes egy ideglenes (Draft) uzenet. Ha o kilep az oldalrol, egy folderbe megtalalja az uzenetett.

A gond az, hogy ahanyszor megnyitom a linket egy uj uzenet jon letre, vagy ha esetleg Firefoxban egy refresht adok.

Ahogy fent amikor letrejon a mySQL bejegyzes egy hidden field az oldalon erteket kap.
Gondoltam a Session hasznalatara de nem igazan tudom ha ez a helyes megoldas es ha mukodik is.

Koszonom !
4

nekem kevés az információ

Táskai Zsolt · 2006. Okt. 16. (H), 11.04
fentebb két hipotetikus esetre válaszoltam, mert nem bírtam elképzelni a helyzetedet. sajnos most sem tudom.

nem derül ki számomra, hogy mi a funkció. mi a link szövege? az alapján, amit most sejtek a dologról, a link URL-je alatt lakó PHP-nek először meg kéne vizsgálnia, hogy az adott felhasználó elkezdett-e már egy levelet az adott másiknak. ha igen, akkor az elkezdett üzenet ID-jét kéne betölteni a hidden mezőbe (meg gondolom a szövegét a szövegbe). de mindezt tényleg úgy mondom, hogy nem értem, hogy mit is akarsz pontosan.
5

re

Anonymous · 2006. Okt. 16. (H), 11.43
A weblaboron volt egy doksi amely leirta a SESSION kezelest. Tudnal segiteni egy linkel ? mert nem talalom meg..

Ha nem fog sikerulni SESSION-al akkor kesobb leirom reszletesen a problemat.
Koszonom !
6

keresés és probléma

Anonymous · 2006. Okt. 16. (H), 12.18
A weblaboron volt egy doksi amely leirta a SESSION kezelest. Tudnal segiteni egy linkel ? mert nem talalom meg..

a kereső session szóra elsőként hozza a cikket. próbáld ki, menni fog!

Ha nem fog sikerulni SESSION-al akkor kesobb leirom reszletesen a problemat.

szerintem inkább írd le mit szeretnél megvalósítani. egyrészt az adatbázisban ne változtass semmit get kérés hatására, erre való a post metódus. másrészt a kezdők alapvető problémája, hogy nem a problémájukra keresnek választ, hanem a problémájukból előállított másik problémára. ha leírod mi a feladat, lehet sokkal jobb megoldást kapsz rá.

gex
7

ok

Anonymous · 2006. Okt. 16. (H), 13.11
OK, leirom reszletesen a problemat.
Van egy HTML lap, amelyen van egy link. A link a kovetkezo cimen talalhato (a gepemen):
http://localhost/lap/oldal.php
Ha rakatintok a linkre a kovetkezo oldalra leszek kuldve:
http://localhost/lap/oldal.php?do=attach
A "?do=attach" resz a kovetkezo keppen nez ki:

<?php
if ($_GET['do'] == 'attach')
{
   mysql_query("INSERT INTO db ....") // hozaad egy sort mySQL-hez
   $lastid = mysql_insert_id();  // Megkapja a hozaadot ID szamot

   // A "lastid" valtozo szamat beirja egy input hiden fieldbe
}
?>
Az a gond, hogy ha ujbol toltom a "http://localhost/lap/oldal.php?do=attach" lapot akkor, egy uj szam kerul be mySQL-be, es az input field erteke eltunik.

Le kene valahogy elenorizni, ha mar hozza volt adva egy szam az input fieldhez akkor ne adjon masikat hoza.
8

nem ez a probléma

Anonymous · 2006. Okt. 16. (H), 13.18
neked nem ez a problémád, ezt már te csináltad. az eredeti problémádat (feladatodat) írd le. és olvasd el amiket előbb írtam (nem módosítunk get kérésre, stb).

gex
9

még mindig session

tiku I tikaszvince · 2006. Okt. 16. (H), 13.26
1. Már más is írta, hogy GET-ben érkező paraméter hatására nem szerencsés adatbázis módosítást végrehajtani, mert így megnyitsz egy hatalmas kaput a rosszakaróknak... Szerencsésebb lenne POST-ként küldözgetni ezt a paramétert.

2. Miért nem teszel $_SESSION-be egy jelzőt (akár még a visszakapott azonosítót is atarthatod benne), hogy igen létrejött az adatbázisban a rekord, de még nem nem került bele adat. Amint feltöltöd adattal a rekordot, törlöd a $_SESSION tömbből az előbb beállított jelölőt.
Ha jól értelek, akkor éppen egy tipikusan szerver oldali munkamenet problémát akarsz a kliensre bízni.

3. Ha eddig jól kombináltam akkor pedig végképp semmi értelme az egész akciódnak. Miért hozol létre teljesen üres rekordot? Csak akkor futtasd le az adatbázis módosítást, ha már elég adatod van a rekord feltöltéséhez. Szerintem.

tikuVoltam
10

GET-POST rosszak, unique

Anonymous · 2006. Okt. 17. (K), 15.34
Természetesen a POST metódis is éppen akkora kapu a rosszakaróknak, ebből a szempontból teljesen mind1, melyiket használod.

Sok esetben az adatbási megfelelő unique constraintjei megoldást jelentenek az ilyen tipusú problémákra.