ugrás a tartalomhoz

Egymásba include-olt fájlok közötti session adat átadás

Anonymous · 2006. Jún. 15. (Cs), 19.36
Kedves Fórumozók!

A következő problémával állok szemben:
Van egy .php fájlom, amiben az oldalamhoz szükséges saját készítésű függvények találhatóak. Van egy másik állomány is, amiben egy másik függvény található. A két php fájl között szeretnék átadni session adatokat. Sajnos ez nem jön össze. session_start() mindkét php fájl elején van. Az első fájlban teljes egészében az összes függvényen belül elérhető a $_SESSION tömb, a másikban viszont sajnos már nem.
Nem tudom, hogy ez befolyásol-e valamit, de az első php fájl include-olva van a másodikba.

Légyszi aki tud segítsen!

Köszi!
 
1

minek is kell a session?

sotetbarna · 2006. Jún. 15. (Cs), 20.12
masodik.php:

<?php
include('elso.php');
echo $var;
?>
elso.php:

<?php
$var = 12;
?>
a masodik.php 12-t ír ki, tehát ha az include-olt fájlból akarsz ebben az esetben kiíratni, akkor nem kell session, az include fájlban történt értékadások megmaradnak a fő fájlban.

ha mindenképpen session-t akarsz, akkor is elég az egyik file-ban session_start. én az include file-ba tenném.

barna
2

Még mindig gond van.

Anonymous · 2006. Jún. 16. (P), 09.10
Session-t szeretnék használni a második.php miatt. Sajnos továbbra se megy át a session tömb az elsőből a másodikba. Itt vannak a fájlok:

elso.php

<?php

session_start();

[...]

function tartalomLekerdezes( $oldal ) {
	global $kapcsolat;
	$eredmeny = @mysql_query( "SELECT menu_id, content FROM valami WHERE menu_id=\"{$oldal}\"", $kapcsolat );
	if ( ! $eredmeny )
		die ( "Adatbázis hiba! A hiba oka: " . mysql_error() );

	while ( $sor = mysql_fetch_array( $eredmeny ) ) {
		switch ( $sor["menu_id"] ) {
			case "titkos":
				if ( tartalomAuthentikacio() ) {
					$content = str_replace("név", $_POST["name"], $sor["content"]);
					$_SESSION["nev"] = $_POST["name"];
				}
				else
				{
					$content = "";
					tartalomLekerdezes( "vedettoldal" );
				}
				break;
			case $oldal:
				$content = $sor["content"];
				break;
		}
	}

	if ( ! isset( $content ) ) {
		$eredmeny = @mysql_query( "SELECT content FROM valami WHERE id=\"4\"", $kapcsolat );
		if ( ! $eredmeny )
			die ( "Adatbázis hiba! A hiba oka: " . mysql_error() );
		$sor = mysql_fetch_array( $eredmeny );
		$content = substr_replace($sor["content"], "A(z) \"<b>$oldal</b>\"", 31, 0);
	}

	echo $content;
}

[...]

?>
masodik.php

<?php

include("elso.php");

if ( isset($_SESSION["nev"]) ) {
$eredmeny = @mysql_query( "SELECT name, type, size, content FROM valami WHERE id=\"{$_GET["melyik"]}\" ", $kapcsolat );
if ( ! $eredmeny )
	die ( "Adatbázis hiba! A hiba oka: " . mysql_error() );

list($name, $type, $size, $content) = mysql_fetch_array( $eredmeny );

header("Content-Disposition: attachment; filename=$name");
header("Content-Length: $size");
header("Content-Type: $type");
echo $content;

exit;
}
else
	echo "NOAUTH";

?>
Nem tudom, hogy az számít-e valamit, hogy az elso.php egy másik, kimenetet generáló fájlba is include-olva van. ob_start()-tal is próbáltam, de úgy sem megy.
3

függvény meghívása?

sotetbarna · 2006. Jún. 16. (P), 17.41
szerintem valahol meg kellene hívni ezt a tartalomLekerdezes nevű függvényt, lehetőleg még azelőtt, hogy keresnéd a $_SESSION["nev"] változót (persze lehet, hogy kimaradt a bemásolásnál)
4

Kipróbálom.

Anonymous · 2006. Jún. 18. (V), 11.00
Oké, köszi, amint a fejlesztői környezet közelébe kerülök, ki fogom próbálni. Mellesleg arra is kíváncsi vagyok, hogy a $_POST tartalmát "átviszi-e". Majd ezt is kipróbálom és írom, hogy mi a helyzet.
5

Kézikönyv: változók hatásköre

Dualon · 2006. Jún. 18. (V), 11.19
6

Ez oké, de...

Anonymous · 2006. Jún. 20. (K), 15.18
Na, ezzel én is tisztában vagyok. Lehet, hogy én siklom el a dolgok felett, de ugye a $_SESSION egy szuperglobális tömb, amit minden függvényből, stb. gyakorlatilag bárhonnan el lehet érni. Akkor én miért nem érem el a másik include-olt állományból?
7

Megvan a megoldás!

Anonymous · 2006. Jún. 21. (Sze), 14.24
Sziasztok!

Megtaláltam a megoldást: az volt a hiba, hogy az oldal, ahol munkamenetkezelést szerettem volna alkalmazni frame technikával van átirányítva. Emiatt nem ment a session. Sikerült megoldanom azt is, hogy menjen a frame-en belül is, mégpedig úgy, hogy közvetlenül a session_start(); után kiküldtem a következő header-t:

header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');
A kérdésem csupán annyi lenne, hogy ez mit is művel tulajdonképpen? Beírtam gugliba, de sajnos nem találtam olyan találatot, amelyet meg is értettem volna...
8

header compact policy a neve

TeeCee · 2006. Jún. 21. (Sze), 14.50
olvass el

Érdekes rész még a: Transforming a P3P Policy to a Compact Policy

:)
9

Röviden... Magyarul

Anonymous · 2006. Jún. 21. (Sze), 17.26
Esetleg nagyon röviden a lényegét magyarul nem lehetne?
Biztonsági aggályokat nem vet fel?
10

hát ha magyarul nem is de

toxin · 2006. Jún. 21. (Sze), 19.50
http://www.sitepoint.com/article/p3p-cookies-ie6

röviden arra szolgál hogy IE6 alatt lehessen sütiket használni, akkor is ha böngésző biztonsági beállításai alapesetben nem tennék ezt lehetővé,

én is most olvasom :)