• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

session_start und cookie

Mad Dog

Mitglied
hey
habe mal wieder eine frage.
diesmal bezueglich session_start()

wenn ich session_start verwende, wird die session id in einen cookie names PHPSESSID automatisch gespeichert.
habe ja nichs dagegen, doch ist es moeglich den namen des cookie's zu aendern?

also statt dem cookie PHPSESSID wird ein cookie erzeugt der z.b. test heisst??
 
Für eine Sessionvariable:
PHP:
$_SESSION['test'] = "Just a test";

Für ein Cookie:
PHP:
setcookie("test", "Just a test");

MfG Icy
 
Für eine Sessionvariable:
PHP-Code:
$_SESSION['test'] = "Just a test";

Für ein Cookie:
PHP-Code:
setcookie("test", "Just a test");

ja das ist mir klar :D
bei mir ist es jediglich so, dass wenn ich eine session starte, also ds erste mal, dann wir dautomatisch ein cookie erschaffen mit dem namen PHPSESSID.
ich wollte nur fragen ob es moeglich ist, den cookie anderst du nehmen also wenn ich session_start() benutzt soll ein cookie erschaffen werden, doch er soll nicht PHPSESSID heissen sondern z.b. test
 
ich wollte nur fragen ob es moeglich ist, den cookie anderst du nehmen also wenn ich session_start() benutzt soll ein cookie erschaffen werden, doch er soll nicht PHPSESSID heissen sondern z.b. test
So wie Icy sagte:
PHP:
setcookie("test", session_id());
hm?
 
So wie Icy sagte:
PHP-Code:
setcookie("test", session_id());

hm?

ja schon, aber damit schaffe ich ja einen cookie richtig? also wenn die session laeuft mache ich mit diesem befehl einen neuen cookie.

das problem ist aber das ein cookie automatisch erschaffen wird wenn ich session_start() aufrufe, ohne das ich setcookie benutzte :D
und in diesem cookie befindet sich die sessionid.
natuerlich koennte ich den cookie benutzten doch ich wollte wissen ob es moeglich ist, festzulegen wie der cookie heissen soll wenn session_start() aufgerufen wird :D
 
es geht darum, dass ich wenn ich session_start() aufrufe automatisch ein cookie geschaffen wird, ohne das ich setcookie benutzt.
ich will wissen, wie ich es machen, dass wenn ich session_start() aufrufe ein cookie erschaffen wird (wie davor auch automatisch), dieser aber nicht PHPSESSID heisst (was momentan der fall ist), sondern das der cookie ein anderen namen hat z.b. test.
 
ups da habe ich wohl den teil mit dem session.name ueberlesen :D
hm da steht das muss ich jedes mal machen wenn ich auf die session zugreife.
heisst das, wenn ich mich eingeloggt habe und auf der einen seite session_name der name der session geaendert wird und dann mittels session_start() die session gestartet wird UND auf eine neue seite weiterleite und mittels session_start() die aktuelle session aufnehmen wuerde, wuerde der session name wieder auf den standartmaessigen session name (PHPSESSID) zurueckspringen.
und um das zu verhindern muss ich davor wieder session_name() aufrufen?
 
So wie ich das lese, heißt das, dass vor jedem session_start das entsprechende session_name stehen muss, ja. Sowas lässt sich aber wunderbar einmal irgendwo zentral definieren. Ich würde außerdem immer empfehlen, alles über eine index.php laufen zu lassen. Das spart eine ganze Menge Gefummel. Mit ein paar kleinen mod_rewrite-Regeln lässt sich eine Seite trotzdem so einrichten, dass "hübsche" URLs ohne "index.php?site="-Präfix verwendet werden können.
 
ja ich habe eine session.php erstellt und da steht alles drinne von wegen session_name() und session_set_cookie_params() etc
diese wird dann in die index.php required.

noch eine frage rein zum verstaendniss.
ich habe ein div layout, ein div fuer die navi und ein div fuer den inhalt.
wenn ich bei der navi auf einen link klicke wird der inhalt in das inhalt div geladen.

laed der dann nur das eine div neu oder komplett die ganze seite?

und noch eine frage.
eigentlich braucht man ja gar keinen cookie mit der session id wenn man sie doch einfach mittels session_start auf der naechsten seite weiterfuehren kann oder? (und dann halt auch auf die session id zugreifen kann)
 
noch eine frage rein zum verstaendniss.
ich habe ein div layout, ein div fuer die navi und ein div fuer den inhalt.
wenn ich bei der navi auf einen link klicke wird der inhalt in das inhalt div geladen.

laed der dann nur das eine div neu oder komplett die ganze seite?
Ja, alles läd neu. Dies könnte man aber mit JS anders lösen.
(ganz alternativ ein "not modifidet" im header senden, damit der Browser es aus dem Cache läd, sollte man aber nur machen, wenn man wirklich Ahnung davon hat)

und noch eine frage.
eigentlich braucht man ja gar keinen cookie mit der session id wenn man sie doch einfach mittels session_start auf der naechsten seite weiterfuehren kann oder? (und dann halt auch auf die session id zugreifen kann)
Richtig.
Aber Cookies können öffters als Sessions benutzt werden. (zb. für Autologin etc)

Für einmaligen Gebrauch kann man normalerweise auf Cookies verzichten.

Mfg
 
hmm naja ich mach es nur mit der session.
zur ueberpruefung bau ich ein timestamp ein der die session zerstoert wenn in einer bestimmen zeit nichts angeklickt wurde :D
 
ja das stimmt natuerlich.
naja ich habe das problem geloest :D
cookie wird behalten, doch wenn jemand cookies verbittet ist das auch kein problem :D
 
Ich will nicht extra einen neuen Thread aufmachen, daher stelle ich meine Frage hier rein.
Ich blick nicht duch, wie ich ein Cookie setze ?
Wie mach ich es dass ich immer eingeloggt bin
z.B. wenn ich diese Seite www.html.de aufrufe, bin ich auch immer eingeloggt

HTML:
<? 
session_start ();  
if (!isset ( $_SESSION["user_angemeldet"] ))  
{  
  header ("Location: anmeldung.php");  
}  
?>
 
@Tomm:

Du suchst eine "dauerhaft eingeloggt bleiben"-Funktion, die den Login auch über Neustarts des Browsers bestehen lässt?

Das ist 'ne Ecke komplizierter. Dazu solltest du am besten beim Login ein Sicherheitstoken (zufälliger, möglichst langer und komplizierter String) erzeugen, das du mit setcookie als Cookie setzt und das du gleichzeitig serverseitig zusammen mit der entsprechenden Benutzer-ID und einem Timestamp ablegst.

Bei jedem neuen Aufruf, für den keine eingeloggte Session existiert (also etwa nach einem Browserneustart), überprüfst du nun, ob der Browser des Clients einen entsprechenden Cookie mit Sicherheitstoken mitgeschickt hat ($_COOKIE). Entspricht das Token einem Eintrag in der serverseitigen Liste, der noch nicht zu alt ist (Timestamp kontrollieren), kannst du den Besucher als zugehörige User-ID automatisch einloggen (also die Session automatisch erzeugen).

Logisch ist, dass das entsprechende Sicherheitstoken nicht in fremde Hände geraten sollte, da sonst Account-Diebstahl möglich wird. Es bietet sich also an, bei jedem erfolgreichen Login (egal ob regulär oder per Cookie) das Cookie-Token zu ändern (sofern es überhaupt eingesetzt wird).
 
Zurück
Oben