Kezdőoldal » Számítástechnika » Weblapkészítés » Hogyan adhatom át egy változó...

Hogyan adhatom át egy változó értékét fájlok között PHP-ban?

Figyelt kérdés

Egy weboldalon lévő fórum egyik php fájljában kiszámolom a user legutóbbi látogatása óta született posztok számát. (/forum/includes/functions.php)


Ennek a változónak az értékére lenne szükségem, a gyökérben lévő index.php-ben, lehetőleg include-olás nélkül (egyrészt mert nagy a fájl, másrészt nem szép megoldás).


Próbáltam valami session dologgal, de valamit elronthattam, mert sehogy sem jött össze. (teljesen új vagyok PHP-ben)



2012. márc. 31. 23:54
 1/2 anonim ***** válasza:

Pedig pont az include lenne a megoldás, ugyanis akkor az index.php-ből hívhavnád meg közvetlen a kiszámolós függvényt.

Include-olni pont azért szoktak más php fájlokat, hogy ne kelljen ugyanazt, ugyanazokat a függvényeket többször megírni. Például a felhasználónak nem is kéne tudnia megnyitni a /forum/includes/functions.php fájlt.

2012. ápr. 1. 00:25
Hasznos számodra ez a válasz?
 2/2 2xSü ***** válasza:

Ha a látogató rögtön az index.php-t nézi meg, akkor a /forum/includes/functions.php -ben található kód ugye soha nem fog lefutni. Illetve ha már az index.php-n van, nyom egy refresht, miközben hárman még írtak a fórumba, akkor nem fog helyes adatokat adni a rendszer. Tehát szükséges minden egyes alkalommal újra kiszámolni, hogy hány új hozzászólás érkezett.


Inkább induljunk ki abból, hogy egy fórumról van szó. Ilyen esetben már erősen indokolt az adatbázis használata, de végül is kisebb forgalmú fórumon még el lehet lenni szövegfájlokkal is.


Elsőként jól kell megtervezni a működést. Minden userről ugye tárolsz mindenféle adatot. (Minimum a belépési nevét, jelszavát.) Egyszerűen le kell tárolni az utolsó látott fórumhozzászólás időpontját és ugye azt kell összeszámolni, hogy hány hozzászólás van, ami ennél a dátumnál újabb. Amennyiben olvasottnak tekinted a fórumot, úgy ezt a dátumot módosítod a legutolsó fórumhozzászólás vagy az aktuális idő alapján. Ezt viszonylag egyszerű leprogramozni. Több fórumtéma esetén már kicsit időigényesebb, itt sokat tud segíteni, ha SQL-t használsz.


De azért nézzük meg a te megoldásodat. Szerintem jelen esetben nem használható, de máshol előjöhet hasonló probléma, aminél lehet használni.


Az egyik mód az adatok átvitelére, hogy lemented fájlba az átvinni kívánt adatokat. A másik megoldás az adatbázisban tárolás. A harmadik a session. Igazából ez utóbbi kettő megoldás is a szerveren történő lementést jelenti fizikailag, de programozás szempontjából egészen más a megvalósítás. A session nagyon sokszor jön jól, ezért érdemes megérteni a működését.


A session esetén az első látogatásnál generálódik egy session id. Ezt a böngésző átadja a következő oldallekérésnél a szervernek. Ez legtöbbször cookie-n keresztül történik, de előfordulhat, hogy URL-en, vagy POST kérésen keresztül adja át a session id-t. A szerver oldalon a session id-hez létrejön egy fájl, amiben a két oldallekérés között tárolódnak az adatok.


PHP-ben egyszerű a dolog, mert csak egy session_start() függvényhívást kell beírni. Viszont ennek még azelőtt meg kell történnie, hogy bármit is írnál a kimenetre.


Álljon itt egy kis példa:


********** elso.php **********

<?

session_start();

$veletlen=mt_rand(1,100); // generálunk egy véletlen számot

$_SESSION['tarolt_szam']=$veletlen; // eltároljuk sessionben.

?>

<html>

<body>

Kisorsoltam egy véletlen számot: <?= $veletlen; ?><br />

<a href="masodik.php">Lépj a következő oldalra, és nézd meg, hogy ugyanazt írja-e ki.</a>

</body></html>


********** masodik.php **********

<?

session_start();

if (isset($_SESSION['tarolt_szam'])) $szam=$_SESSION['tartolt_szam'] else $szam='nem lett véletlen szám kisorsolva vagy a session lejárt';

?>

<html>

<body>

A sessionben a következő érték lett letárolva: <?= $szam ?>

</body></html>


********** **********

2012. ápr. 1. 00:40
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!