Sessen-ID immer an Link anhängen

Sturmrider

Erfahrenes Mitglied
Hi @all
Ich habe da eine bitte :-( ich kann JavaScript kaum und bräuchte da eine Funktion, bei der ich absolut keine Ahnung habe, wie ich die machen kann...
Gibt es eine Möglichkeit mit JS (oder auch PHP) eine SessionID immer in einen Link zu übertragen, auch wenn sie nicht im <A HREF=./link.php>link</A> steht? d.h.
1. zu überprüfen, ob man auf seiner eigenen Seite ist
2. wenn ja, dann entweder ?SessionID= an den Link anzuhängen
3. oder wenn bereits ein ? am Ende des Links vorhanden, ein &SessionID= an das Ende des Links anzuhängen

Ich wüsste leider absolut nicht, wie ich das machen könnte... mit PHP bin ich nicht weiter gekommen, also habe ich gedacht, dass es da vielleicht mit JS eine Möglichkeit gibt ^^

Würde mich über eure Hilfe sehr freuen!!

Gruß Sturmrider
 
Danke ^^
um erlich zu sein, hilft mir das aber nicht so viel weiter :( ich habe mir die Seiten mal durchgelesen und bin auf einige brauchbare Dinge gestoßen...habe es aber erlichgesagt nicht wirklich verstanden...und den Beispielen dort konnte ich leider auch nicht wirklich viel entnehmen :(
Ich denke, was für mich wichtig wäre, wäre das hier:
PHP:
$barney = "A big purple dinosaur.";
session_register("barney");

// Ab PHP 4.1.0 ist die Verwendung von $_SESSION vorzuziehen
$_SESSION["zim"] = "An invader from another planet.";

aber irgendwie klappt das nicht :(
Könntest du/ihr mir da vielleicht ein Beispiel posten, indem eine SessionID in einem Link registriert (verankert) wird (also auf andere Seiten mit übergeben wird) und wieder aufgerufen werden kann (so, dass ich mich z.B. frei auf meiner HP bewegen könnte und irgendwann, wenn ich diese SessionID benötige... wenn ich auf einer bestimmten Seite bin, ich sie wieder aufrufen kann bzw. sie automatisch aufgerufen wird
d.h. ich sie z.B. (keine Ahnung ob das in diesem Fall gehen würde) ganz einfach mit $_GET['sessionID'] aufrufen und etwas mit ihr machen könnte...
Wäre natürlich gut, wenn sie dann noch irgendwie aus der URL gelöscht würde, wenn ich mit ihr weiterarbeite... ->glaube das geht mit unset() aber auch das habe ich leider nicht so ganz verstanden :(
Wäre echt klasse, wenn ihr mir da ein einfaches Beispiel posten könntet!! :-(

Gruß Sturmrider
 
Beispiel:

PHP:
<?php

    session_start();
    $sess_id = session_id();
    $_SESSION["zim"] = "An invader from another planet.";
        
    echo '<a href="deine.seite.php?sess='.$sess_id.'&zim='.$_SESSION["zim"].'">LINK</a>';

?>
 
hallo!
vielleicht hilft dir das ein wenig weiter:
PHP:
<?
session_start();
echo SID;
echo"<br>";
echo "<a href=\"2.php?".SID."\">weiter</a> ";
?>
<form name="form1" method="post" action="2.php">
  <label>
  <input name="name" type="text" id="name">
  </label>
</form>
PHP:
<?
session_start();
$_SESSION[Name][] = array($_REQUEST['Name']);
for ($i=0; $i<10; $i++) {
    echo $_SESSION[Name][$i];
    }
echo SID;
echo"<br>";
echo "<a href=\"3.php?".SID."\">weiter</a> ";
?>
PHP:
<?
session_start();
for ($i=0; $i<10; $i++) {
    echo $_SESSION[Name][$i];
    }
?>

lg
 
Danke ^^
Habe mir mal folgendes Beispiel zum ausprobieren ausgesucht, da ich denke, dass das für meine Sachen wohl am besten geeignet wäre...:
PHP:
    session_start();
    $sess_id = session_id();
    $_SESSION["zim"] = "An invader from another planet.";

echo "<A HREF=http://localhost/index.php?admin=menucontrol&sess=". $sess_id ."&zim=".$_SESSION["zim"] .">Menü editieren</A>";
Ich bekomme leider folgende Fehlermeldung :(
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\www\system\function.php:52) in C:\www\index.php on line 126
Was bedeutet das? Habe ich irgendetwas nicht beachtet? (da steht etwas von Cookie verschicken...eigentlich wollte ich die Methode ohne Cookies wählen...->auf php.net steht da ja irgendetwas von 2Methoden Cookies und URL Parameter...ich wollte eigentlich letzteres nehmen...

Gruß Sturmider
 
wenn diese fehlermeldung kommt
PHP:
arning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\www\system\function.php:52) in C:\www\index.php on line 126

dann steht das "session_start()" nicht ganz oben :-)
das prob hatte ich auch, und bis ich da draufgekommen bin...
setzt das mal in die erste Zeile...dann müsste es funktionieren

hast du einen localhost installiert? wenn ja, welchen denn?

lg
 
Das bedeutet in den meisten Fällen, dass irgendwelcher Code vor dem Sessionstart ausgeführt wird. Der Sessionstart = „session_start()“ muss immer zum Anfang des Scripts stehen.


EDIT: Antworten kommen ja genug...
 
Hey, klasse ^^ stimmt
Jetzt funktionierts auch! Nochmal einfach so, wies jetzt läuft:
PHP:
    session_start();   //ganz an den Anfang des Scripts ^^
    $sess_id = session_id();
    $_SESSION["zim"] = "An invader from another planet.";

//den Teil nach "menucontrol" in den Link einbauen
<A HREF=http://localhost/index.php?admin=menucontrol&sess=". $sess_id ."&zim=".$_SESSION["zim"] .">Menü editieren</A>

//und später den inhalt der SessionID['zim'] irgendwo aufrufen
echo $_SESSION['zim'];

So jetzt habe ich noch eine kleine Frage zum Abschluss. Wenn ich die SessionID wieder mit $_SESSION['zim']; aufgerufen habe, wie lösche ich sie dann wieder aus der URL bzw. aus dem cash der URL (wenn man das so sagen darf ^^°)?
Denn wenn ich diese Methode mehrfach mache, habe ich hinterher viel zu viel "Müll" in der URL (auch wenn dieser unsichtbar ist) ... wie kann ich die SessionID wieder aus der URL entfernen, wenn sie ihren Dienst getan hat ^^?

Schonmal vielen Dank @all an dieser Stelle, ihr habt mir schon sehr viel weitergeholfen:-(

Gruß Sturmi
 
ganz einfach sturmi! mit session_destroy()...
dann werden alle variablen die du bisher in dieser session gespeichert hast, wieder gelöscht!
wünsch dir noch einen schönen abend und viel spass beim php proggen

natürlich ohne (...) :-)

vlg Michael
 
Zurück