Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

session erstellt => keine werte übergabe

Empfohlene Antworten

Veröffentlicht

hallo,

ich hab mich nun schon längere zeit durch die beiträge gewühlt, aber irgendwie hat mir das alles nicht so recht geholfen.

ich hab eine php datei (test.php) ein html template (test.tpl.htm) und eine zweite php seite (test2.php)

ich versuche eine session aufzubauen, das müsste meiner meinung nach auch geklappt haben.

ich hab ein html formular, in dem der benutzer seinen namen und nachnamen einträgt.

wenn er es absendet sollte ich ja dank der session die werte auf meiner zweiten php seite (test2.php) noch ausgeben können. das geht aber nicht warum??

kann mir einer von euch helfen?

anmerkung:

ich arbeite mit einer template klasse, das dürfte aber nix ausmachen.

ich rufe die test.php auf, diese füllt meine test.tpl.htm mit werten, wenn ich das formular abschicke, dann wird die test2.php aufgerufen, die mir die werte aus der session ausgeben sollte. zur sicherheit hab ich mir die werte aus den hiddenfields ausgeben lassen und es steht das richige drin.

test.tpl.htm ( das formular )


<form action="../page/test2.php" method="post">

		<table>

			<tr>

				<td>Name:</td>

				<td><input type="text" name="name"></td>

			</tr>

			<tr>

				<td>Vorname:</td>

				<td><input type="text" name="nachname"></td>

			</tr>

			<tr>

				<td><input type="submit" value="absenden"></td>

			</tr>

		</table>

                  <!-- hier übergebe ich die session_id und den session_name in hidden fields, da ich method="post" habe -->

		<input type  = "hidden" name  = "session_name" value = "{SNAME}">

		<input type  = "hidden" name  = "session_id" value = "{SID}">

	</form>

test.php


<?php
session_start();
session_register("my_name","nachname");

//bindet meine template klasse ein, da ich mit templates arbeite
include("../include/master_include.inc");


$tpl = new Template;
$tpl->set_root("../template");

$tpl->set_file(array("test" => "test.tpl.htm"));

//parst die session_id und den session_name in das formular funktioniert auch
$tpl->set_var(array("SNAME" => session_name()
"SID" => session_id()
));

$my_name = $_POST["name"];
$nachname = $_POST["nachname"];

session_encode();

$tpl->parse("ausgabe", "test");
$tpl->p("ausgabe");
?>
[/PHP]

test2.php

[PHP]
<?php
session_start();

//hier müsste jetzt doch der wert drin stehn, den der user eingegeben hat oder? das is aber leer??
print "name:".$my_name."<br>";
print "nachname:" . $nachname . "<br>" ;

print "SID: " . $_POST["session_name"] . "<br>"; // gibt den session name aus der in dem hiddenfield steht
print "Session: " . $_POST["session_id"];// gibt die session id aus, die in dem hiddenfield steht
?>

danke korea1

wenn ich den befehl in der test.php ausgeben lasse, dann stehen dort noch die werte drin, die der user ins formular eingetragen hat.

wenn ich den befehl in der test2.php ausgeben lasse, dann steht nichts mehr drin.

:(

ich hab die test2.php inzwischen so umgebaut.

aber das hat auch nichts genützt. ich hab gedacht, da ich die daten ja per post übergebe sollte ich sie erst wieder zuweisen. hm...


<?php
$session = $_POST["session_name"];
$SID = $_POST["session_id"];
session_name("$session");
session_id("$SID");
session_start();

print session_encode() . "werte aus tmp datei<br>";

print "name:".$my_name."<br>";
print "nachname:" . $nachname . "<br>" ;

print "Session: " . $_POST["session_name"] . "<br>";
print "SID: " . $_POST["session_id"];
?>
[/PHP]

:confused:

so und deshalb muss man folgendes nehmen:

test.php


<?php

session_start();
$_SESSION["my_name"] = $_POST["my_name"];
$_SESSION["nachname"] =$_POST["nachname"];

include("../include/master_include.inc");

$tpl = new Template;
$tpl->set_root("../template");

$tpl->set_file(array("test" => "test.tpl.htm"));

$tpl->set_var(array( "SID" => session_id()
));

//gibt mir jetzt nichts mehr aus
print session_encode();

$tpl->parse("ausgabe", "test");
$tpl->p("ausgabe");

?>
[/PHP]

so funktionierts aber leider immer noch nicht. weiss jmd warum??

korea1

hi leute ich hatte da gestern ein paar gröbere denkfehler drin... :floet:

ich hab die session variablen mit leeren werten belegt, da ich die werte zugewiesen habe bevor das formular abgeschickt wurde... :D

also jetzt sieht es so aus:

test.tpl.htm


<form action="../page/test2.php" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" name="my_name"></td>
</tr>
<tr>
<td>Vorname:</td>
<td><input type="text" name="nachname"></td>
</tr>
<tr>
<td><input type="submit" value="absenden"></td>
</tr>
</table>
<input type = "hidden" name = "session_id" value = "{SID}">
</form>
[/PHP]

test.php

[PHP]
session_start();

include("../include/master_include.inc");

$tpl = new Template;
$tpl->set_root("../template");

$tpl->set_file(array("test" => "test.tpl.htm"));

$tpl->set_var(array( "SID" => session_id()
));

$tpl->parse("ausgabe", "test");
$tpl->p("ausgabe");

test2.php (bekommt die werte des formulars zugewiesen. in das $_SESSION array)


$SID = $_POST["session_id"];

session_id("$SID");

session_start();

$my_name = $_POST["my_name"];
$nachname = $_POST["nachname"];

$_SESSION["my_name"] = $my_name;
$_SESSION["nachname"] =$nachname;

header("location:../page/test3.php?SID=$SID");
[/PHP]

test3.php

[PHP]
$SID = $_GET["SID"];
session_id("$SID");
session_start();

print "name:".$my_name."<br>";
print "nachname:" . $nachname . "<br>" ;

so von der logik müsste es jetzt ja stimmen, aber ich bekomme die werte immer noch nicht. :(

fällt einem der fehler auf? ich weiss jedenfalls nicht mehr woran es liegen könnte.

danke korea1

test2.php (bekommt die werte des formulars zugewiesen. in das $_SESSION array)

$SID = $_POST["session_id"];

[b]session_id($SID);[/b]

session_start();

$my_name = $_POST["my_name"];
$nachname = $_POST["nachname"];

$_SESSION["my_name"] = $my_name;
$_SESSION["nachname"] =$nachname;

header("location:../page/test3.php?SID=$SID");

[/PHP]

test3.php

[PHP]
$SID = $_GET["SID"];
session_id("$SID");
session_start();

print "name:".$_SESSION["my_name"]."<br>";
print "nachname:" . $_SESSION["nachname"] . "<br>" ;

Original geschrieben von korea1

hallo,

test.tpl.htm ( das formular )

				<td><input type="text" name="name">  

sollte dieses Eingabefeld nicht my_name heißen?

Original geschrieben von Hasi

sollte dieses Eingabefeld nicht my_name heißen?

sie hat es weiter unten doch schon berichtigt gepostet!

warum hast du in der test2.php

	session_id($SID);

und in der test3.php

	session_id("$SID");

korea1

oh

es muss natürlich in beiden

session_id($sid);

heissen

hi,

kann mir jmd von euch sagen, ob dass mit den sessions lokal überhaupt funktioniert?

ich arbeite mit php 4.2.3 und apache 1.3.27 os nt 4.

muss ich die dateien mit den sessions erst auf den richtigen webserver uploaden,

oder funktioniert dass auch lokal?

korea1

wenn du lokal nen webserver mit php modul hast, kannst du alle deine scripte mit allen funktionen schon lokal testen ohne sie hochladen zu müssen. allerdings solltest du dann ein wenig darauf achten das du keine php befehle benutzt die auf deinem "richtigen" webspace vielleicht verboten sind. ( Viele Anbieter verbieten z.b. den befehl unlink(); )

Gruß

kills

das heisst daran kanns auch nicht liegen, dass ich immer noch keine werte angezeigt bekomm.

das ist langsam echt ein problem, das hier sind zwar nur testdateien, aber ich muss eine art warenkorb programmieren, dafür benötige ich die sessions.

der kunde kann verschiedene dinge über eine checkbox auswählen und gelangt über

einen weiter button zur nächsten seite, wo er wieder verschiedene dinge auswählen kann.

ja und dass was er ausgewählt hat muss ich ja dann irgendwie in die db reinschreiben. :(

hat jemand von euch ein kleines beispiel mit sessions, das funktioniert? dann könnt ich dass vielleicht mal ausprobieren.

es handelt sich um eine postgres db, aber dass könnt ich zur not dann noch abändern.

um jede hilfe dankbar.

korea1

hier hab dir grad schnell ein kleines beispiel gezimmert. :)

habs bei mir getestet und es geht! :marine

1.php


<?php

session_name("sid");
session_start();

$_SESSION["var1"] = "abc";
$_SESSION["var2"] = "123";
$_SESSION["ausgabe"] = true;


echo "<a href=\"2.php?". session_name() . "=". session_id() ."\">start Ausgabe</a>";
?>
[/PHP]

2.php

[PHP]
<?php

session_name("sid");
session_start();

if ($_SESSION["ausgabe"]) {
echo $_SESSION["var1"] ."<br>". $_SESSION["var2"];
}

?>

das gibt mir jetzt zu denken, dass es bei dir funzt.

ich habs grad in meine dateien kopiert und ausprobiert und bei mir wird nur ne leere seite angezeigt.

korea1

schau mal bei deiner leeren seiten in den quelltext.

vielleicht verwendest du einen anderen browser....

natürlich muss an der 2.php auch noch ein <html><body></body></html>

eingefügt werden

ich rufe in meinem browser ( ie 5.5 ) die 1.php auf.

ich bekomme nur eine leere seite angezeigt.

der quelltext der leeren seite sieht folgendermaßen aus:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>
[/PHP]

ich hab auch noch ein bisschen rumgespielt.

wenn ich folgende befehle auskommentiere, dann bringt er mir meine test print´s.

[PHP]
$_SESSION["var1"]_=_"abc";
$_SESSION["var2"]_=_"123";
$_SESSION["ausgabe"]_=_true;
echo_"<a href=\"test2.php?"._session_name()_._"="._session_id()_."\">start Ausgabe</a>";

korea1

also ich hab das script wie ich es oben gepostet habe auf meinem anderen webserver (sprich:apache; wamp) und da läuft das script genauso tadellos wie auf meinem vorherigen testserver Jana2.....

könnte es vielleicht auch an deinem webserver liegen, bzw. an den settings in deiner php.ini? vielleicht in der php.ini sessions disabled?


[Session]
; Handler used to store/retrieve data.
session.save_handler = files

; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
session.save_path = /tmp

; Whether to use cookies.
session.use_cookies = 1


; Name of the session (used as cookie name).
session.name = PHPSESSID

; Initialize session on request startup.
session.auto_start = 0

; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0

; The path for which the cookie is valid.
session.cookie_path = /

; The domain for which the cookie is valid.
session.cookie_domain =

; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php

; Percentual probability that the 'garbage collection' process is started
; on every session initialization.
session.gc_probability = 1

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; Check HTTP Referer to invalidate externally stored URLs containing ids.
; HTTP_REFERER has to contain this substring for the session to be
; considered as valid.
session.referer_check =

; How many bytes to read from the file.
session.entropy_length = 0

; Specified here to create the session id.
session.entropy_file =

;session.entropy_length = 16

;session.entropy_file = /dev/urandom

; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache

; Document expires after n minutes.
session.cache_expire = 180

; trans sid support is disabled by default.
; Use of trans sid may risk your users security.
; Use this option with caution.
; - User may send URL contains active session ID
; to other person via. email/irc/etc.
; - URL that contains active session ID may be stored
; in publically accessible computer.
; - User may access your site with the same session ID
; always using URL stored in browser's history or bookmarks.
session.use_trans_sid = 0
[/PHP]

was müsst ich denn evtl. dran ändern?

korea1

vorläufig von meinen qualen erlöst.

ich musste meinen pfad zur speicherung der temp datei ändern jetzt gehts.

hab ihn auf c:/temp gestellt.

korea1

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.