404 error durch SESSION

Habe folgendes Problem:

Beim ersten Aufruf meiner Seite wird an den Links, die Sessionsid angehängt. Dieses verursacht jedoch einen Fehler da die Seite „so“ auf dem Server nicht existiert. Beim weiteren klicken auf die Links gehts ohne &amp:stuck_out_tongue_winking_eye:HPSESSIONSID1234.

Bsp.:http://meine_domain/index.php?seite=startseite.php&amp:stuck_out_tongue_winking_eye:HPSESSIONSID1234

jedoch existiert die Seite durch

//Session
ini_set(‚arg_separator.output‘, ‚&‘);
ini_set( ‚url_rewriter.tags‘ , ‚a=href,area=href,frame=src,input=src,fieldset=‘ );
ini_alter(„session.use_trans_sid“, 0);
session_start(session.auto_start, 0);
// Seitenname wird überprüft
if ( isset($_GET[‚seite‘]) ) {
$_SESSION[‚seite‘] = $_GET[‚seite‘];
}
elseif (!isset($_GET[‚seite‘]))
{
header(‚Location: index.php?seite=startseite.php‘);
//$_SESSION[‚seite‘] = ‚startseite.php‘;//auch schon probiert
}

include „startseite.php“;

die Links definiere ich in startseite.php so:

Startseite

Danke für Eure Hilfe im voraus…

Hallo,

mir ist gerade nicht ganz klar, welcher Fehler da jetzt welchen jagt :smile:

Also die Session-ID sollte **entweder** per URL übergeben werden **oder** als Cookie, was beim zweiten Aufruf deiner Seite eindeutig laut Beschreibung der Fall ist.

Weißt du, wie dein PHP normalerweise die Session übergibt?

Grüße,
Nik

P.S.: Tipp: phpinfo()

Hallo Domenik,

das mit der php.info erbrachte folgendes Ergebnis.

session.auto_start ist off , also hab ich es auf session_start() geändert, da es ja dann eh „0“ ist.
Die Sessions werden per URL übergeben also Beispiel:
?seite=startseite.php

Aber daran liegts nicht.
Ich hab nun Header und die Session getauscht, also so:

$_SESSION[‚seite‘] = ‚startseite.php‘;
header(‚Location: index.php?seite=startseite.php‘);

dadurch wird schon servermäßig die URL umgewandelt bevor die Links, welche in HTML verpackt sind aufgerufen werden.

Hmmm also rufe ich jetzt meine Hauptseite auf…

meine_domain.de/index.php -> wird jetzt eine Session erzeugt meine_domain.de/index.php?seite=startseite.php -> neu geladen um die Anhängsel (&amp:stuck_out_tongue_winking_eye:HPSESSIONSID=123…)loszuwerden. -> Die seite heisst dann wirklich meine_domain.de/index.php?seite=startseite.php

So wie es aussieht geht das auch. Jedoch kriege ich immer noch eine 404-Meldung (per Mail)das ein Link auf meiner Seite nicht existiert.
Das wird ausgelöst durch die Auswertung $REQUEST_URI von den jenigen der auf die Seite error/404.php gelangt. Leider zeigt $REQUEST_URI nur die Seite an welche aufgerufen wurde also error/404.php und nicht den Link der den Fehler verursacht hat.

Ich bin ja eigentlich PHP Anfänger,da ich es mir irgendwie selbst angeeignet hab, vielleicht seh ich deshalb nicht mehr den Zusammenhang.

nette Grüsse

Ganz einfach , du weist garnicht wie Sessions verarbeitet werden.

Hier wird das mal erklärt dein Problem
http://www.heise.de/foren/S-Re-PHP-session-auto-star…

kurz gesagt, beim erstenmal gibbet noch kein COOKIE mit der Session, also wird es erstmal als GET an die URL angehängt, beim zweitenmal ist ein COOKIE vorhanden, und brauch halt keine GET variable mehr.

Lösung hab ich nciht, ich nutze nie das SESSION system, sondern mein eigenes.

Lösung musste wohl selbst erarbeiten :smile:

Aber hier mal die erklärung wie so eine SESIION funktioniert :smile:
http://www.usegroup.de/software/phptutorial/sessions…

Versuch mal interne Links voll auszuschreiben (mit http:// … ), vielleicht hilft das ja schon :smile:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die Sessions werden per URL übergeben also Beispiel:
?seite=startseite.php

Das hat doch mit der Session nix zu tun, oder steht da was von PHPSESSID=… ?

Schau doch bitte noch einmal genau nach, was eine PHP-Session ist, wie diese übergeben werden kann und dann beschäftige dich mal näher mit der Übergabe durch Cookies.

-nik

Ups noch was vergessen, eigentlich das wichtigste. Aufgerufen wird jedoch die richtige Seite im Browser.

Anzuschauen ist dies hier: www.mario-senitz.de und wenn ich die links kontrolliere sind sie auch richtig.

zu:smiley:as hat doch mit der Session nix zu tun, oder steht da was von
PHPSESSID=… ?

dort stehts so Direktive: session.name Local Value: PHPSESSID Master Value PHPSESSID

hier die ini-datei: http://hessencommunity.de/ini.php

oben steht die Lösung !!!

Keine Ahnung von Sessions halt.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Keine Ahnung von Sessions halt.

Yep alles weiss ich nicht. Jedoch ist klar wenn ich angebe:

if ( isset($_GET[‚seite‘]) ) {
$_SESSION[‚seite‘] = $_GET[‚seite‘];

das die Session mit GET übergeben wird. Das beim ersten mal etwas angehängt wird wusste ich auch. Jedoch das es ein COOCKIE ist, nicht. Doch das ist mir egal, ich wills loswerden. :smile:

Versuch mal interne Links voll auszuschreiben (mit http://
… ), vielleicht hilft das ja schon :smile:

Der Fehler lag in der htaccess Datei. Da das Script zur Auswertung nur die URL erkennt wenn die Umleitung zur Fehlerseite so geschrieben wird.

/ordner/404.php statt http://domain.de/ordner/404.php

Bin nur drauf gekommen weil ich einen Linkchecker mit safari getestet habe.
Link: http://web-sniffer.net/

Trotzdem Danke Domenik und RakonDark das Ihr Euch mit mir den Kopf zerbrochen habt.

Immer gerne geshen eine Lösung als Post.
Danke für den Lösungs Post