CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden |
23.12.2004, 17:29:41
|
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 46
|
|
Session-ID über Link ins nächste Script übergeben ???
Hallo, Ich bins wieder :-)
Ich bin immer noch am Wurschteln mit diesen saublöden Sessions, und blicks einfach nicht.
Ich habe jetzt beschlossen, eine Session schon beim Aufrufen meiner Webseite zu starten, damit sich ein User ständig und überall auf der Webseite bewegen kann, bevor er einen Kauf abschliesst, und evtl schon ausgewählte Artikel im Warenkorb nicht verloren gehen.
Ich fürchte, da kommt zwar Riesenmenge Arbeit auf mich zu, weil wohl sämtlich Links ergänzt werden müssen, sehe ich das richtig ?
Jetzt wäre aber mal gut zu wissen, wie ich denn die Session-ID richtig über einen Link weitergebe ? Über Formulare kann ich das nur bei der weiteren Kaufabwicklung tun, weil eben nur da Formulare zur Verfügung stehen.
Unten steht mal meine Version von dieser ID-Übergabe über nen Link aber es funzt nicht, warum ?
<a href="onlineshop.php?PHPSESSID=<?php echo $PHPSESSID ?>" target="_self" class="glink" id="gl2">Onlineshop</a>
Der Server gibt folgenden Fehler zurück:
Parse error: parse error, unexpected '=' in /******/htdocs/index.php on line 76
Geändert von quirrly (23.12.2004 um 17:33:16 Uhr)
|
23.12.2004, 17:32:35
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Die Session id musst du nur dann an die Links anhängen, wenn die Einstellung session.use_trans_sid in deiner php.ini deaktiviert ist. Ansonsten brauchst du diese nur bei Weiterleitung mit der Funktion header() anhängen:
PHP-Code:
<?php
header('Location: [url]http://www.meineseite.de?[/url]' . SID);
?>
Warum dir die Zeile einen parse error liefert, kann ich dir nicht sagen, ohne die vorherige(n) Zeile(n) zu kennen.
|
23.12.2004, 17:37:49
|
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 46
|
|
Zitat:
Original geschrieben von xabbuh
Die Session id musst du nur dann an die Links anhängen, wenn die Einstellung session.use_trans_sid in deiner php.ini deaktiviert ist. Ansonsten brauchst du diese nur bei Weiterleitung mit der Funktion header() anhängen:
PHP-Code:
<?php
header('Location: [url]http://www.meineseite.de?[/url]' . SID);
?>
Warum dir die Zeile einen parse error liefert, kann ich dir nicht sagen, ohne die vorherige(n) Zeile(n) zu kennen.
|
Aber wenn ich im Zielscript die Session-ID abrufe, dann wird kein Inhalt angezeigt. Wenn ich noch im selben Dokument die ID der gestarteten Session anzeigen lassen, dann wird mir diese angezeigt, also wo liegt dann der Fehler ? Anscheinend muss ich das irgendwie weiterleiten oder nicht ?
Auch ist komisch, dass beim Aktualisieren des Browsers auf der index.php wo ich die Session starte, mit jedem Male eine andere ID angezeigt wird, also irgendwas stimmt doch da nicht.......
|
23.12.2004, 17:40:45
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Du hast aber schon auf jeder Seite session_start() stehen und nicht nur auf der ersten Seite?
|
23.12.2004, 17:47:32
|
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 46
|
|
Zitat:
Original geschrieben von xabbuh
Die Session id musst du nur dann an die Links anhängen, wenn die Einstellung session.use_trans_sid in deiner php.ini deaktiviert ist.
|
Ok, hab das Problem gefunden, beim Server von 1&1 ist "session.use_trans_sid" in der aktuellen PHP-Version deaktiviert. Das steht in einer Info auf der Webseite.
Zitat:
Ansonsten brauchst du diese nur bei Weiterleitung mit der Funktion header() anhängen:
PHP-Code:
<?php
header('Location: [url]http://www.meineseite.de?[/url]' . SID);
?>
|
Das sagt mir nix. Soll ich diese Funktion jetzt nutzen, anstatt das überall an die Links zu hängen, und wo ?
Zitat:
Warum dir die Zeile einen parse error liefert, kann ich dir nicht sagen, ohne die vorherige(n) Zeile(n) zu kennen.
|
Ich habe nur diesen Link-Zusatz eingefügt, sonst nix. Davor ging die Seite einwandfrei.
|
23.12.2004, 17:50:17
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
SID ist eine Konstante die von PHP beim Aufruf der Funktion session_start() definiert wird. So lange ein Cookie mit der Session id gesetzt werden konnte, ist SID einfach leer. Wenn dieses Cookie aber nicht gesetzt werden konnte ist SID vom Format session_name() . '=' . session_id().
Du brauchst also nur diese Konstante an jeden deiner Links anhängen.
|
23.12.2004, 18:25:27
|
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 46
|
|
Also wie ich es mache, es geht nicht:
HINWEIS:
1&1 schreibt in den Infos auf der Webseite:
(1.) PHP läuft bei 1&1 WebHosting als CGI. Damit funktioniert eine Authentifizierung per Script nicht
(2.) "session.use_trans_sid" sind in der aktuellen PHP-Version deaktiviert.
Hat das jetzt irgendwelche Nachteile für die weitere Nutzung von PHP, bzw. für mein Vorhaben ? Der Server versteht ja eigentlich PHP3, PHP4, PHP5....
-----------------------------------------
Wenn ich es so schreibe:
<a href="onlineshop.php?PHPSESSID=<?php echo $PHPSESSID ?>" target="_self" class="glink" id="gl2">Onlineshop</a>
kommt der Serverfehler.
Wenn ich die Zeile so schreibe:
<?php header('Location: <a href="onlineshop.php" target="_self" class="glink" id="gl2">Onlineshop</a>'. SID) ?>
Dann gibts keinen Serverfehler mehr, aber das Menü/Link "Onlineshop" erscheint nun nicht mehr in der Navigationsleiste *bald am verzweifeln ist* Es ist einfach weg.....
|
23.12.2004, 23:15:09
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Zitat:
Original geschrieben von quirrly
Hat das jetzt irgendwelche Nachteile für die weitere Nutzung von PHP, bzw. für mein Vorhaben ?
|
Du hast halt ein wenig mehr Programmieraufwand, da du die Session id immer manuell übergeben musst.
Zitat:
Wenn ich es so schreibe: [...] kommt der Serverfehler.
|
Was für ein Serverfehler?
Zitat:
<?php header('Location: <a href="onlineshop.php" target="_self" class="glink" id="gl2">Onlineshop</a>'. SID) ?>
|
Richtig wäre es so:
PHP-Code:
<?php
header('Location: onlineshop.php?' . SID);
?>
header()
Tutorial: Sessions
Zitat:
Dann gibts keinen Serverfehler mehr, aber das Menü/Link "Onlineshop" erscheint nun nicht mehr in der Navigationsleiste *bald am verzweifeln ist* Es ist einfach weg.....
|
Was für Bedingungen müssen denn in der Datei onlineshop.php erfüllt sein, damit die Navigation angezeigt wird?
|
24.12.2004, 12:03:21
|
|
Anfänger
|
|
Registriert seit: Dec 2004
Beiträge: 46
|
|
Zitat:
Original geschrieben von xabbuh
Du hast halt ein wenig mehr Programmieraufwand, da du die Session id immer manuell übergeben musst.
Was für Bedingungen müssen denn in der Datei onlineshop.php erfüllt sein, damit die Navigation angezeigt wird?
|
Also, ich habs jetzt hingekriegt. Wo der Fehler jetzt letztendlich genau lag, kann ich gar nicht sagen, habe die Php-Funktionen einfach nochmal alle aus den Dokumenten heraus gemacht, und nochmal neu angefangen.
Muss irgendwo nen Fehler gehabt haben, obwohl ich sicher war, dass alles richtig ist.
Der einzigste Unterschied den ich gemacht habe ist, dass ich die Session-ID über alle Links so weiter gebe:
<a href="onlineshop.php?<?php echo strip_tags(SID)?>"
Damit wird im Browser nicht das komplette Zahlen-Wirrwarr dargestellt, und hat deshalb wohl Sicherheits-Pluspunkte.
Geprüft habe ich die Funktion jetzt damit:
if (!session_is_registered('zaehler')) {
session_register('zaehler');
$zaehler = 1;
} else {
$zaehler++;
}
Dieser Zähler ist auf der Startseite eingebaut, zählt mit jedem Aufruf/Browseraktualsierung eins dazu.
Wenn ich nun über die Navigation auf anderen Webseitendokumente komme, und mir die Variable $zaehler auf diesen Dokumenten auf den Bildschirm bringen lasse, zeigt es mir immer den Stand an, den es auf der Startseite gehabt hat.
Damit scheint die Übermittlung der Sessioninhalte gegeben zu sein, und ich kann wohl weitermachen mit dem Warenkorb-Entwickeln....(ich hoffe *gg*)
|
24.12.2004, 13:21:57
|
|
SELFPHP Guru
|
|
Registriert seit: May 2003
Beiträge: 7.187
|
|
Zitat:
Original geschrieben von quirrly
<a href="onlineshop.php?<?php echo strip_tags(SID)?>"
|
strip_tags() kannst du hier auch weglassen.
Zitat:
if (!session_is_registered('zaehler')) {
session_register('zaehler');
$zaehler = 1;
} else {
$zaehler++;
}
|
session_register() und session_is_registered() sind veraltet. Benutze möglichst das Supergloable $_SESSION-Array:
PHP-Code:
<?php
if(!isset($_SESSION['zaehler'])) {
$_SESSION['zaehler'] = 1;
} else {
$_SESSION['zaehler']++;
}
?>
Zitat:
Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.
|
Quelle: http://de3.php.net/session_register
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:38:23 Uhr.
|