Session-Variable verschwindet immer..

NullAhnung

Aktives Mitglied
hallo erstmal...

ich bin neu hier und muss gleich sagen, dass ich in php nicht besonders viel Ahnung habe....

ich habe ein problem... und zwar habe ich mittels der url eine zeichenkette an eine andere seite übermittelt...das klappt auch und sie wird in der zielseite auch angezeigt...

auf der zielseite möchte ich die zeichenkette als $_SESSION festlegen...
CODE @session_start();
$id=$_GET['session'];
$_SESSION['id']=$id;
echo $_SESSION['id'];


wird alles wunder bar angezeigt, nur wenn ich auf eine andere Seite wechsle... ist die $_SESSION['id'] weg... was mach ich falsch....
 
Hi,

muss nicht session_start(); auch auf die andere Seite welche auf die session zugreifen soll ?

Gruss
 
Also grundlegend sollte die Session ID nicht mehr über GET oder POST übergeben werden, da es einfach zu häufig geschehen ist, dass die Session ID von dem Benutzer selber anderen Personen zugänglich gemacht wurde, insbesondere über GET. Somit würde die Session ID ggf. sogar in der Logs anderer Websites auftauchen, da wenige normale Benutzer wissen, dass Sie den Referrer abschalten können.

Mittels session_id() kann die Session ID abgerufen werden, und ggf. gesetzt werden. Dann muss wie bereits erwähnt auf jeder Seite mittels session_start() die Session initialisiert werden, sollte session_id() einen leeren String zurückgeben, natürlich kann man auch pauschal bei jeden Scriptaufruf in der ersten Zeile einfach session_start() reinschreiben werden, da ist die Funktion session_start() relativ robust (bzw. intelligent).
 
sorry... hab es nur session genannt... ist einfach eine mischung aus buchstaben und zahlen.... ich benötige diese auf einer anderen webseite um auf eine datenbank zu zugreifen....ich hätte auch müller schicken können....

es geht mir nur darum warum diese zeichenfolge nicht als Sessionvariable funktioniert....

hier nochmals das ganze..
Code:
<?php
@session_start();
$_SESSION['id']=$_GET['session'];
echo $_SESSION['id'];
?>[CODE]
 
Mir scheint, dass Du nicht verstehst, was hier gesagt wird...

Also der Code da unten ist einfach nur Müll, den kannst Du genau so gut neu schreiben. Ergo müsstest Du lernen mit Sessions umzugehen, und Du musst lernen wie die HTTP-Kommunikation funktionieren.

Oder Du musst Dir jemanden suchen, der für Dich das übernimmt. Aber nur wieder steif etwas Falsches umzusetzen, weil man sich damit nicht auseinandersetzen, ist nicht mal logisch.
 
QUOTE (NullAhnung @ Do 16.02.2012, 23:07) ..auf einer anderen webseite..

Was ist für dich eine andere Webseite? Innerhalb deines (v)Hosts ("Domain") ein anderes Script oder wirklich eine "externe" Webseite?

Falls es zweiteres ist - dann sind Sessions dafür der falsche Ansatz. Die funktionieren nicht Server/Hostübergreiffend.
 
Ich versteh nicht ganz warum du die SESSION über GET oder POST versuchen willst zu erreichen. Die Session wird generell vorher festgelegt beim einloggen.

Sprich leite den User auf eingeloggt.php weiter und mach folgendes:

CODE // Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);

// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["id"];
header ("Location: index.php");


Falls du einen Sessionwert festlegen willst dann schreib den Wert des Users vorher in die Datenbank und schreib ihn in die Session, dann kannst du u.a. Kontrollen später vornehmen.

Auf den Seiten wo du drauf zugreifst, machst du ganz normal


CODE <?php session_start (); ?>


Auf die Daten greifst du dann ganz einfach via PHP zu:


CODE $_SESSION["user_id"]


Da drin brauchst du keinen GET oder POST, weil Session auf Cookies aufbauen und das ganze speichern, solange der Browser offen ist.
 
also ich muss das nochmal genauer erklären....

ich komm auf eine andere Domäne....also von Domäne A.de auf Dömäne B.com.....

auf die Domäne B.com komm ich mit der url:http://www.B.com/html/send.php?id=8e554fab2b33e026266d031d1ea8363d

so und diese zeichenfolge möchte ich hier als $_SESSION['id']=url id......

Code:
@session_start();
$_SESSION['id']=$_GET['id'];
echo $_SESSION['id'];
?>[CODE]


und das funktioniert ja auch.... nur wenn ich dann auf die nächste seite gehe also....url:http://www.B.com/html/seite2.php gehe....ist diese Variable weg

wenn ich eine $_SESSION['test']="haaaallllooo" mache dann wird auf seite2 auch diese haaaalllloooo angezeigt...

und da frag ich mich warum...
 
habe nur schnell den Thread durchgelesen und nicht gross nachgedacht, aber kann es sein, dass 'id' ein reservierter Variablenname innerhalb der Session array ist?
 
QUOTE (PH @ Fr 17.02.2012, 12:47)habe nur schnell den Thread durchgelesen und nicht gross nachgedacht,
stimmt :)


QUOTE aber kann es sein, dass 'id' ein reservierter Variablenname innerhalb der Session array ist?




@NullAhnung

keine ahnung, wozu das gut sein soll. aber, wenn du die session von a auf b übernehmen willst, dann allenfalls so:

CODE
session_id($_GET['id']); // <= nur 1x auf der empfangenden seite
session_start(); // <= in jeder PHP datei vor allem anderen

...

?>


$_SESSION['id'] ist hat übrigens nichts mit der eigentlichen sessionId zu tun. das ist einfach nur eine variable
 
danke...

ist mir klar... werde das auch noch umbenennen....

aber wie gesagt kenn ich mich nicht aus.... wie gründe ich nun die Variable....

$_SESSION['id']=???????
 
Hast du mal getestet $_GET['id'] auszugeben, ob er das dann korrekt ausgibt?

*UPDATE*
Falls das nämlich nicht klappt scheint deine Variable schon durch was anderes geblockt. Dann nenn es einfach mal userid oder so.
 
Was war es denn
smile.gif
?
 
sorry ich war krank und komm erst jetzt dazu zu antworten...

das problem ist noch nicht gelöst... ich werd noch verrückt...
CODE <?php
@session_start();
error_reporting(E_ALL);
ini_set("display_errors", "1");

$f=$_GET['f'];
$t=$_GET['type'];
$_SESSION['t']=$t;
$_SESSION['f']=$f;
$_SESSION['IP']=$_SERVER["REMOTE_ADDR"];
$_SESSION['test']="dies ist ein Test";
?>


das wird dann angezeigt...

$_SESSION['f'] =1
$_SESSION['t'] =1001
$_SESSION['IP'] =188.105.114.212
$_SESSION['test'] =dies ist ein Test
$_GET['f'] =1
$_GET['type'] =1001

soweit alles in ordnung....gehe ich auf eine andere Seite und zurück auf diese Seite...dann kommt
die Fehlermeldung:
Notice: Undefined index: f in /var/www1/cis/de/html/landing.php
Undefined index: type in /var/www1/cis/de/html/landing.php

$_SESSION[‘IP’] =188.105.114.212
$_SESSION[‘test’] =dies ist ein Test

gut dass bei den $_GET die weg sind leuchtet mir ein... aber bei den $_SESSION versteh ich nicht....


 
QUOTE (NullAhnung @ Fr 9.03.2012, 18:21) sorry ich war krank und komm erst jetzt dazu zu antworten...

das problem ist noch nicht gelöst... ich werd noch verrückt...

CODE <?php
@session_start();
error_reporting(E_ALL);
ini_set("display_errors", "1");

$f=$_GET['f'];
$t=$_GET['type'];
$_SESSION['t']=$t;
$_SESSION['f']=$f;
$_SESSION['IP']=$_SERVER["REMOTE_ADDR"];
$_SESSION['test']="dies ist ein Test";
?>


das wird dann angezeigt...

$_SESSION['f'] =1
$_SESSION['t'] =1001
$_SESSION['IP'] =188.105.114.212
$_SESSION['test'] =dies ist ein Test
$_GET['f'] =1
$_GET['type'] =1001

soweit alles in ordnung....gehe ich auf eine andere Seite und zurück auf diese Seite...dann kommt
die Fehlermeldung:
Notice: Undefined index: f in /var/www1/cis/de/html/landing.php
Undefined index: type in /var/www1/cis/de/html/landing.php

$_SESSION[‘IP’] =188.105.114.212
$_SESSION[‘test’] =dies ist ein Test

gut dass bei den $_GET die weg sind leuchtet mir ein... aber bei den $_SESSION versteh ich nicht....

äh... kann es sein, dass du jedesmal f und t ab den GET variablen definierst, und somit die session variablen mit NULL überschrieben werden, wenn f und t nicht im GET request enthalten sind?
 
Zurück
Oben