ugrás a tartalomhoz

POST Azonosítás

supi007 · 2008. Nov. 12. (Sze), 09.14
Hi,
Általam készülő oldalon van lehetőség hírt küldeni. Szeretném megoldani, hogy a hír küldője: szerkeszthesse és törölhesse a hírt. Sajnos ott akadtam el, hogy nem tudom azonosítani a hírt. Jelenleg úgy működik, hogy bekérem a felhasználótól, hogy mi a cikk azonosítója (ezt kiíratom a kiíratásnál). Elég fapados\gagyi, de most ennyit tudok. Segítséget szeretnék kérni, hogyan kellene ezt csinálni?
supesz
 
1

attól függ

rrd · 2008. Nov. 12. (Sze), 10.25
Attól függ, hogy hogyan működik a rendszered. Ha az embernek be kell lépnie a cikk beküldéséhez akkor az adatbázisban el kellene mentened, hogy melyik cikket melyik user küldte be, és ez alapján vissza tudod a következő belépésnél keresni, hogy melyik tartozik hozzá.

Ha nem kell belépni hozzá akkor nehezebb az ügy, esetleg cookival vagy egy böngésző-oprendszer-monitor vizsgálattal megkísérelheted beazonosítani.
4

most olvastam

supi007 · 2008. Nov. 12. (Sze), 11.16
Mielőtt nyitottam ezt a topicot kicsit böngésztem a régiek között és találtam egy cikket a session-ről. Azért fontos ez, mert azonosításhoz kellene kötni az oldalt\oldalakat. Szóval lehet szó azonosításról. Ezért írtam, hogy minden féle megoldás érdekel, mert igazából én nem vagyok nagyon jártas a programozásban ezért nem biztos, hogy ismerek minden prog.eszközt a cél eléréséhez.
2

nem értem

gex · 2008. Nov. 12. (Sze), 10.27
ott akadtam el, hogy nem tudom azonosítani a hírt [...]a cikk azonosítója

azzal van gond, hogy összepárosítsd a felhasználókat a hírekkel?
3

asszem igen

supi007 · 2008. Nov. 12. (Sze), 11.13
Azzal van a gond, hogy van egy gombom, amire rákattinthat: ez a szerkesztés gomb.
Azonban honnan tudja a program, hogy az illető melyik cikket akarja szerkeszteni? Valahonnan ki kellene olvasnia a cikk azonosítóját, de vajon honnan vagy hogy?
5

küldd el a cikk azonosítóját is

gex · 2008. Nov. 12. (Sze), 11.23
ezt a gombot gondolom a php programod generálja oda. a címből ítélve egy

<form action="edit.php" method="post">
    <input type="submit" value="szerkeszt" />
</form>
kód formájában. ha beleraksz még egy

<input type="hidden" name="id" value="ide írd az azonosítót" />
elemet is, akkor az edit.php $_POST['id'] alakban meg fogja kapni a cikk azonosítóját.
6

ó nem

supi007 · 2008. Nov. 12. (Sze), 11.45
(mégis csak le kellett volna írnom)
Szóval az adatbázisomban szerepel a cikk_id,datum,ido,user,tartalom oszlop.
Ezzel viszem fel az új cikkeket:
<?php
echo '
	<html>
	<head>
	<title>Cikk küldő!</title>
	</head>
';
$akt_datum = DATE("Y-m-d");
$akt_ido = DATE("H:i:s");
echo '<table border="1" cellpadding="1" cellspacing="1">
<tr>
<td>Ön az alábbi személyes adatokat adta meg:</td>
<td>';print "$akt_datum "; print " $akt_ido"; echo '</td>
</tr>
</table>
<br /><br />
';

$name = $_POST["uname"];
$pswd = $_POST["pswd"];
$cikk = $_POST["cikk"];

print "Felhasználónév: <b>$name</b><br />";
print "Jelszó: <b>$pswd</b><br /><br />";
print "$cikk<br /><br />";

include ("csatlakozas.php");

mysql_select_db($table, $sql_csatlakozas);
$sql = "select * from moricz1b.azonosit";
$cikk_feltolt = "insert into moricz1b.cikk (cikk_id, datum, ido, user, tartalom) VALUES ('','$akt_datum','$akt_ido','$name','$_POST[cikk]')";
$eredmeny = mysql_query($sql, $sql_csatlakozas) or die(mysql_error());

while ($tomb = mysql_fetch_array($eredmeny))
	{
	$nev = $tomb['user_name'];
	$jelszo = $tomb['user_pswd'];
	if ($name == $nev && $pswd == $jelszo)
		{
		$j++;
		}
	}
if ($j>0)
	{
	mysql_query($cikk_feltolt, $sql_csatlakozas);
	print "A cikket sikeresen elküldte!";
	}
	else
	{
	print "Önnek nincsen joga cikket küldeni!<br />Amennyibe kellene, hogy legyen, kérem forduljon a rendszergazdához!<br />Megértését köszünjük!<br /><br />webmester<br />";
	}
echo '<center><form>
<input type=button value="Bezár" onClick="javascript:window.close()">
</form></center>';
echo '</html>';
?>
A szerkeszt gombot pedig csak úgy csináltam mellé, gondolván, hogy majd írok egy scriptet, amivel szerkeszteni is lehet. Csak akkor még nem tudtam, hogy ilyen bonyolult lesz.
7

Hmmm

cSuwwi · 2008. Nov. 12. (Sze), 12.50
Mióta php-zel? Mert van pár - khm - csúnya megoldás. Persze csak azért jelzem, hogy fejlődj belőle.
Pl. formból küldött adatot nem írunk közvetlenül adatbázisba, valami ellenőrzés illik elé, legalább egy mysql_real_escape_string()

Az első echozás a fejléccel felesleges, a php-t ott érdemes kezdeni, ahol tényleg kell, a fejlécet meg tedd ki sima html-ként. Felesleges php használat.

Az insert intonál a cikkid generálás legyen automatikus (sql-ben auto increment arra a mezőre), és majd azt lekéred, és szerkeszted.

A végén a bezár gombnál ha csak egy javascript kódot futtatsz, pl. ablakbezárás, felesleges a form megadása. Az csak akkor kell, ha adatot akarsz küldeni.

Hirtelen ennyi.
8

igaz - köszi

supi007 · 2008. Nov. 12. (Sze), 12.57
1 hónapja.
Amúgy mindenben igazad van (este rá is gyúrok).
Az auto_increment az működik. Azt használom.
9

vázlat

gex · 2008. Nov. 12. (Sze), 13.26
első körben egy felhasználó-kezelést kéne csinálni, hogy amikor megnyitja majd valaki azt az oldalt amin szerkesztheti a cikket, akkor a program tudja azt hogy ki próbálja szerkeszteni.
ezek után már tudsz csinálni egy olyan alap megoldást, hogy a cikkek listázásánál a belépett felhasználó azonosítóját összehasonlítod a az éppen kiírandó cikk user mezőjével és ha egyeznek akkor kirakod a szerkesztés linket, pl szerkesztes.php?id=x ahol x a cikk azonosítója.
a szerkesztes.php-ben pedig az első dolog az ellenőrzés, hogy a felhasználó szerkesztheti-e a $_GET['id'] azonosítójú cikket. ha igen akkor ugyanúgy egy űrlapot kell csinálni mint a felvitelnél, a különbség csak annyi, hogy a textarea elemet ki kell tölteni az azonosító alapján lekért tartalommal. az elküldés után pedig nem insert hanem update sql parancsot kell futtatnod.

nagyjából ennyi a legegyszerűbb megoldás vázlata.

ajánlott cikkek:
http://weblabor.hu/cikkek/munkamenetkezeles1
http://weblabor.hu/cikkek/munkamenetkezeles2
http://weblabor.hu/cikkek/phpkeretrendszer
http://weblabor.hu/cikkek/jogosultsagkezeles
(elsőre sok lehet a terjedelem és az információ is, de biztos tanulsz belőlük valamit)
10

aham

supi007 · 2008. Nov. 12. (Sze), 13.27
Ez jól hangzik. Ezt meg fogom próbálni.
Az a $_GET["id"] bigyula nem világos. Miért $_GET és miért $_POST?
Ez persze most csak teoretikus, mert nem akarom offolni a saját topikomat.
Köszi amúgy.
11

$_GET vs $_POST

gex · 2008. Nov. 12. (Sze), 13.53
a $_GET tömbbe az url-ben szereplő a $_POST tömbbe pedig a method="post" tulajdonságú űrlapokból küldött változók érkeznek.

lehet method="get" tulajdonságú űrlapot is küldeni, az megjelenik az url-ben, és így $_GET lesz belőle.

szerk: a dokumentáció is hasznos
13

oldal

supi007 · 2008. Nov. 22. (Szo), 14.10
Az oldal maga a privatpage-ra hallgat. Ezt szeretném kicsit kipofozni.
12

nem értem

supi007 · 2008. Nov. 22. (Szo), 13.51
Segítséget szeretnék kérni, mert nem értem ezt a Session dolgot.
Hogyan lesz ebből felhasználó azonosítás és hogyan fogja tudni a kiszolgáló, hogy van-e joga megnézni valakinek egy oldalt? Nem értem :(
15

az oldaladon van egy belépő

rrd · 2008. Nov. 22. (Szo), 15.06
az oldaladon van egy belépő box. user belép, adatbázisban ellenőrzöd, hoyg létezik-e, jó-e jelszó, lekérde a jogát. A sessionba elmented, hogy be van lépve, hogy ki ő és mihez van joga.
Ezután minden oldal elején ellenőrzöd, hogy be van-e lépve (a session szerint) és van e joga ott ügyködni.
Nagy vonalakban ennyi
17

Na ezt nem tudom

supi007 · 2008. Nov. 22. (Szo), 15.27
ki ő és mihez van joga.
Ezután minden oldal elején ellenőrzöd, hogy be van-e lépve (a session szerint) és van e joga ott ügyködni.

Ezt nem tudom, hogy kell...
20

a jogosultság kezelést neked

rrd · 2008. Nov. 22. (Szo), 20.43
a jogosultság kezelést neked kell kitalálni elvi szinten. Mondjuk egy egyszerű megközelít esetén vannak sima userek és szerkesztők. Az adatbázisban a következő mezőid lesznek:
id, nev, jelszo, jog

Mondjuk azt mondod, hogy ugy akarod tarolni, hogy ha a jog 'u' akkor user, ha 's' akkor szerzo.

Ebben az esetben a php oldlad eleje igy nez ki: (Csak gyorsan idepötyögtem, lehetnek benne szintaktikai hibák, az elvet nézd)
<?php
session_start();
if(!$_SESSION['user']){
  //nincs belépve a user
   header('Location:login.pgp');   //átirányítjuk a belépéshez 
}
else{
   //szerepel a session-ban tehát be van lépve
   if($_SESSION['jog'] == 'u'){
      //sima user. Ide jönnek azok a funkciók amiket ő érhet el pl a bejegyzés megjelenítése
   }
   elseif($_SESSION['jog'] == 's'){
      //ide jönnek azok a funkciók amiket a szerzőknek szánsz
   }
}
?>
Más megközelítés szerint azt is mondhatod, hogy a jog pl egy 0-9 terjedő egész szám. Minél nagyobb a szám annál több mindenhez van joga. Pl megtekintéshez elég ha van 1-es joga, módosításhoz legalább 5-ös jog, tölréshez vagy más user létrehozásához 9-es jog. Ilyenkor a php-ban azt vizsgálod., hogy a $_SESSION['jog'] nagyobb egyenlő-e mint a művelethez szükséges.

Ha ennél kifinomultabb dolog kell arra ott az ACL.

Ne haragudj, de számomra még mindig nem derült ki, hogy a dolog elve nem tiszta előtted, vagy az ugyan tiszta de nem tudod lekódolni.
22

köszi

supi007 · 2008. Nov. 22. (Szo), 21.00
Hi,
Köszönöm a segítséget.
Az elv nem tiszta, mert nem bírom elképzelni, miként működik. Amit megtudok csinálni az az, hogy kész a beléptető form.
A magam módján meg tudom vizsgálni, hogy van-e a dbben ilyen user ilyen jelszóval:
$query = "SELECT * FROM azonosit";
$result = mysql_query($query, $sql_csatlakozas) or die(mysql_error());
while ($tomb = mysql_fetch_array($result))
{
if ($_POST['uneved'] == $tomb['user_name'] && $_POST['ujelszo'] == $tomb['user_pswd'])
header("Location: cimlap.php");
}

Most találtam rá a session_is_registered és a session_register fg.-kre.
Azonban a Session elvét vagy használatát még mindíg nem értem. Beírom a kódom elejére, hogy
<?php session_start(); ?>

de nem értem ez mit csinál.
Egyenlőre ennyi

Skypeom: supesz007, akár írhatnánk azon is, mert nem tudok, mindent bepostolni, de ha nem nem.

supesz
21

a beléptetés

rrd · 2008. Nov. 22. (Szo), 20.59
a beléptetés meg:

<?php
//ez a login.php fájl
session_start();
if(!$_SESSION['user']){
   //még nincs belépve
   if(!$_POST){
      //még nem küldte el a formot, vagyis most jött ide bejelentkezni, toljuk ki neki a login formot
      print '<form method="post" action="'.$_SERVER['PHP_SELF'].'">';
      //..ide jön a form többi része, azaz két input mező a usernévnek és a jelszónak
      //és egy submit gomb
   }
   else{
      //vannak adatok a post tömbben nézzük meg, hogy szerepelnek-e az adatbázisban
      $kapcsolat = mysql_connect ('localhost', 'user', 'pass');
      if (!$kapcsolat) die ("Nem lehet kapcsolódni a MySql kiszolgálóhoz." . mysql_error());
      mysql_select_db('adatbazis') or die ("Nem lehet megnyitni az adatbázist" . mysql_error());
      
      //kapcsolódtunk az adatbázishoz keressük meg a usert
      $parancs = 'SELECT * FROM users WHERE users.nev = ' . mysql_real_escape_string($_POST['nev']) . 'AND users.jelszo = ' . mysql_real_escape_string($_POST['jelszo']);
      $eredmeny = mysql_query($parancs);
      $user = mysql_fetch_array($eredmeny);
      //ha van ilyen user tegyük be az adatait a sessionba
      if($user){
         $_SESSION['user'] = $user['nev'];
         $_SESSION['jog'] = $user['jog'];
      }
   }
}
?>
Nagy vonalakban ennyi. Persze a jelszót valószínűleg titkosítottan tárolod, tehát úgy kell hasonlítani,aztán vannak itt még más biztonsági és egyéb kérdések de magaa beléptetés valahogy így zajlik.
14

UP

supi007 · 2008. Nov. 22. (Szo), 14.54
Csak Uppolnám a Topicot,mert fontos lenne(nekem):)
16

találtam vmit

supi007 · 2008. Nov. 22. (Szo), 15.15
"Az index.php oldal behívásakor elindítunk egy munkamenetet. Sikeres belépéskor a munkamenet számára létrehoztunk a $_SESSION[] globális változóban egy user nevű változót, amelynek a felhasználó neve éréket adtuk. Az egyes oldalakra való belépéskor ennek a változónak a meglétét ellenőrizzük a session_registered() függvény segítségével."

Ez mit jelenthet?
Én idáig jutottam, de ez még nem csinál semmit.
<?php //szamlalo.php  
    session_start();  
    if (!isset($_SESSION[’szamlalo’])) {  
        $_SESSION[’szamlalo’] = 0;  
}  
$_SESSION[’szamlalo’]++;  
echo $_SESSION[’szamlalo’];  
 
// változó törlése  
if ($_SESSION[’szamlalo’] == 20) {  
    unset($_SESSION[’szamlalo’]);  
}  
?>
18

UP

supi007 · 2008. Nov. 22. (Szo), 16.49
Egy kis segítség? Tud valaki?
19

Egész nap

supi007 · 2008. Nov. 22. (Szo), 20.02
Hi,
Egész nap nyúztam ezt az átkozott PHP-t, de csak nem értem ezt a Session dolgot. Csináltam én már mindent, de ha a böngészőbe beírom az oldalt, akkor bizony megjelenik simán. Nem mondja, hogy nincs hozzáférésem az oldalhoz.
Valaki pls. help, mert tényleg érdekel. Elolvastam már a php.net-es bejegyzéseket, a weblaborosokat és még néhány forrást is megvizsgáltam, de nekem nem jön át, hogy mi a lényeg.
Előre is köszi.

supesz
23

Azonosítás

supi007 · 2008. Dec. 2. (K), 13.57
Hello,

Még mindíg ott tartok, ahol elkezdtem. Hogyan tudnám beazanosítani a cikkemet?
Itt a weblaboron ha az egeret a válasz link fölé viszem, akkor megjeleni egy link --> http://weblabor.hu/forumok/temak/18093/hozzaszolas/42970 a végén látszik, hogy ez a cikk sorszáma. Na nekem is ilyen kellene. De vajon, hogy a viharba??
Elképzelésem sincs. Amit kptam választ azt elolvastam, de lehet én nem értem, de nem tudom, mit csináljak vele. Előre is köszi a válaszokat.

supesz
24

???

tgr · 2008. Dec. 2. (K), 15.38
Ha nem tudod beazonosítani a cikkedet, hogyan akarod megjeleníteni (elmenteni, bármi mást csinálni vele)? Valami belső azonosítót csak használsz.
25

A cikkemet be tudom

supi007 · 2008. Dec. 2. (K), 15.44
A cikkemet be tudom azonisítani. A cikk táblámban van cikk_id azonosító, ami auto_increment.
De, amikor kiteszem a linket, hogy szerkeszt, akkor hogyan fogom tudni, hogy melyik cikket kell szerkeszteni? Honnan fogja tudni a nyomorult php kód, hogy a 10-es cikket szerkessze, meg amikor kb így néz ki a kód:
<a href="edit.php">Szekeszt</a>
26

Most ott

supi007 · 2008. Dec. 2. (K), 17.22
Most ott tartok, hogy a kiíratásnál betűztem egy ilyet: <a href="'.$tomb[cikk_id].'">Szerkeszt</a> ez jelenik meg ha fölé viszem az egeret: http://napfutok.uw.hu/1 - a végén a szám az jó most ua. mint a weblaboton. A kérdés, hogy hogyan futtassam akkor scriptet rá? hogyan tudom azt az egyest átadni vizsgálatra?

supesz
27

input

tgr · 2008. Dec. 3. (Sze), 12.42
POST kérésnél input mezővel, ahogy az az 5. kommentben le lett írva. GET kérésnél meg az URL query string részével: url?paraméter1=érték1&paraméter2=érték2 azaz pl. http://napfutok.uw.hu/index.php?action=edit&id=<?php echo $cikk_id ?> vagy http://napfutok.uw.hu/edit.php?id=<?php echo $cikk_id ?> (attól függően, hogy műveletenként külön php fájlt használsz-e).
28

thx

supi007 · 2008. Dec. 3. (Sze), 15.21
Köszi. Megpróbálom.

supesz
29

nem értem akkor sem

supi007 · 2008. Dec. 3. (Sze), 16.51
Ide hogyan szerkesszem be, hogy továbbvigye a cikk azonosítóját. Az előző postoknak semmi értelme nincs. Vagy erre nem értelmezhető.
Én így iratom ki a cikk táblám tartalmát. Ott van a Szerkeszt pont is. Remélem így jobban érthető a helyzetem.

while ($tomb = mysql_fetch_array($eredmeny)) // |
	{
	if ($_SESSION['real'] == $tomb['rname'])
	{
	echo '
	<table border="0" cellspacing="0" cellpadding="1" width="590px">
	<tr>
	<td align="left" bgcolor="#000000"><font size="2" color="#ffffff">'.$tomb['rname'].' | Szerkeszt</font></td>
	<td align="right" bgcolor="#000000"><font size="2" color="#ffffff">'.$tomb['datum'].' , '.$tomb['ido'].' | #'.$tomb['cikk_id'].'</font></td>
	</tr>
	<tr>
	<td colspan="2" align="justify"><font face="Tahoma" size="2">'.$tomb['tartalom'].'<br /></font></td>
	</tr>
	</table>
	<br /><br />';
	}
30

szerkeszt link?

Poetro · 2008. Dec. 3. (Sze), 22.47
$tomb['rname'].' | <a href="szerkeszt.php?id='. $tomb['cikk_id'] .'">Szerkeszt</a>'
31

Ezt csináltam

supi007 · 2008. Dec. 4. (Cs), 08.10
Ezt már csináltam. Aztán betöltötte a szerkeszt.php fájlt, de az id-t hogyan adja át vizsgálatra? Valami olyasmiben gondolkodom, hogy összehasonlítom a kapott cikk id-t a táblában lévő cikk id-vel és akkor lehet azt szerkeszteni.
Gondolom ezt így is kel csinálni. A baj csak az, hogy nem tudom átadni az értéket vizsgálatra. Ezt hogyan kellene?

supesz
32

írjuk meg helyetted?

gex · 2008. Dec. 4. (Cs), 11.23
mégegyszer utoljára:
  1. a cikkek listájában minden cikk mellé csinálsz egy linket, pl szerkeszt.php?id=x, ahol x az éppen kiírandó cikk azonosítója
  2. a szerkeszt.php-ben a $_GET['id'] változó fogja tartalmazni, hogy milyen azonosítót kaptál
  3. a szerkeszt.php-ben lekéred a kapott azonosító alapján a konkrét cikk adatait, és ezzel kitöltesz egy űrlapot, azaz csinálsz egy cikkfeltöltéshez hasonló dolgot, csak lesznek alapértelmezett értékek a mezőkben
  4. a mentés gomb megnyomása után INSERT parancs helyett UPDATE paranccsal felülírod a cikk adatait az adatbázisodban

mivel ezek nagyjából elhangzottak itt, már csak annyit tudunk segíteni, hogy megírjuk helyetted, ehhez a munka és állás rovatot ajánlom.
33

ne!

supi007 · 2009. Jan. 6. (K), 14.15
ne!