php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 03.08.2007, 17:13  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard Sessionvaribale bekommen wenn header schon gesendet wurde

Hallo,

Ich habe eine php-Datei in der ich auf eine Sessionvariable zugreifen müsste, leider wird diese datei über Ajax von einer schon bestehenden php-Seite aufgerufen, so dass ich in besagter Datei kein session_start() unterbringen kann ohne, dass der Server grantig wird (header already send...).

Theoretisch könnte ich die Sessionvariable in der schon bestehenden Seite in ein hidden Textfeld schreiben und dann per ajax mit übergeben, aber in punkto Sicherheit ist das ja sicherlich nicht das Optimale, oder?

Gibt's dafür einen eleganteren Weg?
obi ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.08.2007, 20:18  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Ein Ajax Request ist doch total unabhängig von der bestehenden Seite, daher kannst du doch beim Request die Session-ID mitsenden und ganz normal auf die Session zugreifen.
mAy^daY ist offline  
Alt 03.08.2007, 21:52  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

Aber dann steht die variable doch im Quelltext, ich mein wegen dem Aspekt sicherheit.
obi ist offline  
Alt 04.08.2007, 09:27  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Naja irgendwie musst du ja die Session weitergeben, entweder Cookie oder URL.

Die Session steht bei deiner Variante zwar im Quelltext aber warum stellt das so ein großes Sicherheitsrisiko dar?
Bei Benutzern die keine Cookies erlauben wird die Session ja nur so 'manuell' weitergegeben.
mAy^daY ist offline  
Alt 04.08.2007, 10:07  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Ich glaub hier gibt es ein Mißverständnis. Erklär doch nochmal wie genau dein Ajax-Aufruf aussieht und warum hier kein Session-Start erfolgen dürfte?
Zergling-new ist offline  
Alt 04.08.2007, 13:14  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

ok, ich habe eine Seite die einen geschützen Bereich darstellt in dessen Umgebung es einige Sessionvariablen gibt, auf dieser Seite befindet sich auch das Javascript für den Ajax-Aufruf.
Beim Ajax-Aufruf wird ein anderes php-file aufgerufen:
Zitat:
http.open('post', 'phpseite2.php');
http.onreadystatechange = handleResponse;
http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
http.send('var='+var123);
und
Zitat:
function handleResponse() {
if(http.readyState == 4){
var tippschein = http.responseText;
document.getElementById("tippschein").innerHTML = tippschein;
}
In diesem Beispiel wird jetzt noch eine andere variable per post übergeben, die mit der Session eigentlich nichts zu tun hat.

Auf der der seite "phpseite2.php" will ich nun verschiedene Dinge auswerten, unteranderem brauch ich aber eine Sessionvariable.
Wenn ich auf phpseite2.php z.B. habe:
PHP-Code:
echo $_SESSION["wichtigevariable"]; 
gibt php gar nichts aus.
Und wenn ich session_start() an den Anfang von phpseite2.php setze, dann wird "header already send" ausgegeben, weil ich die session schon auf phpseite1.php gestartet habe und phpseite2.php nur über das ajaxscript aufrufe, also nicht neu lade.
obi ist offline  
Alt 04.08.2007, 15:35  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Dann schau doch zuerstmal an der Stelle nach, an der der header already sent wurde.
Wenn du zwei verschiedene PHP-Dateien über Web ansprichst, aber über Ajax verbindest, hat das überhaupt keinen Einfluß aufeinander. Denn zuerst wird PHP 1 ausgeführt, das HTML 1 ausgibt, welches AJAX 1 erzeugt, welches wiederum PHP 2 aufruft. Zumindest wenn ich deinen Ablauf so richtig verstanden habe. Aber Ajax und HTML interessieren uns hier nicht die Bohne und haben auch nicht die Bohne an der Verbindung beider Skripte zu tun. Denn beides sind Sprachen, die Client-seitig ausgeführt werden, PHP wird serverseitig ausgeführt. Wenn das noch nicht bei dir angekommen ist, geh nochmal zurück zum Start! Außerdem: Lies doch mal die Fehlermeldung und geh an die Stelle, die konkret den Fehler verursacht (dort eben, wo angeblich der Header bereits gesendet wurde).
Zergling-new ist offline  
Alt 04.08.2007, 16:26  
obi
Erfahrener Benutzer
 
Registriert seit: 26.06.2004
Beiträge: 270
obi
Standard

ok danke, ich habe gedacht das hängt irgendwie zusammen.
Ich hatte
PHP-Code:
<? 
session_start
();
//rest
?>
jetzt hab ich:
PHP-Code:
session_start();
?>
<?
//rest vom script
?>
Und es gibt keine Fehlermeldung mehr aus, ich wusste nicht, dass man das trennen muss.
obi ist offline  
Alt 04.08.2007, 18:16  
Erfahrener Benutzer
 
Registriert seit: 23.12.2003
Beiträge: 243
mAy^daY
Standard

Also ob du nun

PHP-Code:
<?php
session_start
();
echo 
$_SESSION['VAR'];
// ...
?>
oder
PHP-Code:
<?php
session_start
();
?>
<?php
echo $_SESSION['VAR'];
// ...
?>
schreibst ist doch wurscht, solange du vor session_start() keinen Output hast. Da versteh ich das Skript nicht, wenn beim einen eine Fehlermeldung ausgespuckt wird und beim anderen nicht.
mAy^daY ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Download einer csv-Datei netty PHP-Fortgeschrittene 6 02.05.2008 15:53
header informationen senden auf einem server läufts auf dem anderen nicht tunnel85 PHP Tipps 2008 17 23.04.2008 20:12
https header und Cookie TailerD PHP Tipps 2008 5 26.01.2008 19:54
header() ??? TeazY PHP Tipps 2008 9 11.01.2008 15:40
Header: 2 gesendet (Session, DL Script) möchtegernchegga PHP Tipps 2006 13 08.06.2006 15:56
Problem: Cannot modify header information Alpha Centauri PHP Tipps 2005 11 25.04.2005 13:05
bitte um hilfe wegen cookie() und header() d4rki PHP Tipps 2005 2 21.04.2005 19:45
header prob mit auth und smarty PHP Tipps 2005 4 07.03.2005 12:10
[Erledigt] Datei selber nach einer Abfrage senden, header() geht nicht? PHP Tipps 2005 2 23.02.2005 05:58
Redirect mit Header - Problem PHP Tipps 2005 3 22.02.2005 10:28
[Erledigt] Fehler: header already sent by PHP Tipps 2004-2 2 18.12.2004 15:00
problem mit header PHP Tipps 2004 16 20.10.2004 13:57
Warning: Cannot modify header... einbinden nicht möglich? PHP Tipps 2004 2 07.08.2004 15:06
Header Probleme! Calexico PHP Tipps 2004 7 30.06.2004 23:05
header PHP Tipps 2004 4 03.06.2004 22:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
javascript auf sessionvaribale zugreifen, session_start() nachdem header gesendet wurde, wenn noch kein header gesendet, ich habe eine php datei geschickt bekommen wie schau ich die an, wenn ein ajax request gesendet wurde kein neuen schicken, header wird ausgeführt aber die url ändert sich nicht, tippschein einbinden php

Alle Zeitangaben in WEZ +2. Es ist jetzt 15:47 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.