Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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:

Geschrieben

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

Geschrieben

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

Geschrieben

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>" ;

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

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"];
}

?>

Geschrieben

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

Geschrieben

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

Geschrieben

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?

Geschrieben


[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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...