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

Session Variable wird ueberschrieben

Anusha

Mitglied
PHP:
session_start();
$_SESSION['confirmToken'] = md5(microtime());
HTML:
<a href="confirm.php?confirmToken=<?php echo $_SESSION['confirmToken'];?>"> Mach was </a>

wenn ich in confirm.php nen var_dump auf die $_SESSION mache, dann steht da aber ein voellig anderer
Hash drin, als per url uebergeben.
Das seltsame ist, dass es an anderer Stelle so funktioniert.
Aus irgendeinem Grund wird der Hash in der Session ueberschrieben.

Allerdings auch nur auf dem Kundenserver.
Bei meinem Webspace funktioniert alles wie gewuenscht...

Kann es evtl sein, dass das output buffering Probleme macht? (Obwohl ich mir das schwer vorstellen kann) ...


Edit:
wenn ich statt der md5(microtime()) nen festen String vergebe dann funktioniert es...
 
Zuletzt bearbeitet:
Werbung:
In deinem zweiten PHP-Code hast Du etwas vergessen. Hast Du das so kopiert? Dann kann das ja nicht mal funktionieren.
 
ne ich habs nicht kopiert. du meinst wohl das ?> . Ja das stimmt ich aender das. Aber an dem Liegt es nicht.
In der Link Vorschau im Firefox kann ich erkennen, dass im Link der Parameter mit dem Token richtig gesetzt ist.
Aber wenn der Quellcode falsch waere dann wuerde ja ein statischer String auch nicht funktionieren?

Edit:

Auch wenn ich am Ende des Skripts noch mal die Session ausgebe hat sich der Token nicht veraendert.
Erst nachdem ich den Link geklickt habe ist auf der Naechsten Seite der Session Token anders und auch nur wenn dieser nicht statisch ist...
verstehe wer will...
 
Zuletzt bearbeitet:
Werbung:
Mittlerweile kann ich das ganze noch eingrenzen.
Mit dem InternetExplorer 9 funktioniert es perfekt.
Mit Firefox unx Chrome hingegen nicht.

Und das ganze funktioniert auch nur nicht, wenn auf der Seite ein Bild mit leerem src attribut vorhanden ist. (Das sind noch relikte aus anfaenglichen Tests, kann jetzt nicht mehr passieren)
Mein Ihr das das damit zusammenhaengen koennte, oder doch reiner Zufall ist?
 
Ich kann jetzt definitiv sagen, dass es am src Attribut liegt.

HTML:
<a class="light" href="<?php echo $dataArr['origin']?>"><img src="<?php echo $dataArr['thumb']?>" title="<?php echo $dataArr['title']?>"/></a>

wenn das src Attribut leer ist aendert sich der token in der Session auf der naechsten Seite bei klick auf den Link. (aber wie gesagt nicht im IE)
 
Was wird denn in das src-Attribut eingetragen? Wird dort auch eine PHP-Datei mit session()-Deklarierung geladen?
 
Werbung:
In das src=attribut wird nur ein Pfad zum Bild eingetragen...
Und wie gesagt, solange da was drin steht gehts...

Hat zwar jetzt keine auswirkung mehr, da ich sicherstelle, dass das Bild existiert und ein Pfad drin steht.
Aber mich wuerde trotzdem interesessieren, wie das sein kann...

Vor allem wenn ich den Token fest mache und nicht random gehts ja auch....

Selbst wenn ich einfach mache src="a" dann gehts. aber nicht bei src="";
 
Zuletzt bearbeitet:
Fuer alle dies Interessiert.
Ein einfacher Code zum selber testen:

PHP:
<?php 
session_start();
if(isset($_GET['t'])) {
    if($_GET['t']!=$_SESSION['confirmToken']) {
        echo "nicht identisch";
    } else {
        echo "identisch";
    }
}
$_SESSION['confirmToken'] = md5(microtime());
?>
<h2>Bild</h2>
<a href="?t=<?php echo $_SESSION['confirmToken']?>">Confirm</a>
<img src="" />

Ausgabe bei leerem src: "nicht identisch";
Bei nicht leerem src: "identisch";
Getestet mit Firefox7

Ausgabe im IE9 immer: "identisch";

Ist mir voellig unerklaerlich.
 
Werbung:
Ah ok das macht Sinn.
Ich verzichte ja eh auf leere src Attribute, der Fehler war nur reiner Zufall ;)
Aber jetzt weis ich worans liegt.
vielen Dank
 
Zurück
Oben